diff --git a/guided_mrmp/conflict_resolvers/discrete_resolver.py b/guided_mrmp/conflict_resolvers/discrete_resolver.py
index fd1ecc8e3539cee5b351c6f2f5c8a342161cfa08..522863f347cc97532d33bf914d306e0faaa42d8c 100644
--- a/guided_mrmp/conflict_resolvers/discrete_resolver.py
+++ b/guided_mrmp/conflict_resolvers/discrete_resolver.py
@@ -42,16 +42,5 @@ class DiscreteResolver():
                     final_this_sol.append(s.get_world_coordinates(this_sol[i][0], this_sol[i][1]))
             final_sol.append(final_this_sol)
 
-
-
-        # sol is in subproblem local coordinates
-        # convert to global grid coordinates
-        # for i in range(len(sol)):
-        #     for j in range(len(sol[i])):
-        #         if sol[i][j] != [-1,-1]:
-        #             sol[i][j] = s.get_world_coordinates(sol[i][j][0], sol[i][j][1])
-
-
-
         return final_sol
 
diff --git a/guided_mrmp/conflict_resolvers/subproblems/subproblem_og.py b/guided_mrmp/conflict_resolvers/subproblems/subproblem_og.py
index cbb059e9ccd18cde355b90ead410c0780598b390..4ddd8bf23df457aa475882f86ac516d48f3aba79 100644
--- a/guided_mrmp/conflict_resolvers/subproblems/subproblem_og.py
+++ b/guided_mrmp/conflict_resolvers/subproblems/subproblem_og.py
@@ -149,6 +149,10 @@ class Subproblem:
                 x_next <= max_x and x_next >= min_x and y_next <= max_y and y_next >= min_y:
                 all_robots.append(r)
 
+        for r in self.conflict:
+            if r not in all_robots:
+                all_robots.append(r)
+
         return all_robots
     
     def subproblem_contains_conflict(self, min_x, max_x, min_y, max_y, conflict):
@@ -328,27 +332,27 @@ class Subproblem:
                 # we want the node that comes directly before this
                 if x > max_x or x < min_x or y > max_y or y < min_y:
                     # print(f"triggered node = {node}")
-                    # print(f"want to assign node {path[j-1]}")
+                    print(f"want to assign node {path[j-1]}")
                     # print(f"temp goals = {temp_goals}")
                     if [path[j-1][0], path[j-1][1]] not in temp_goals:
-                        # print(f"Assigned it")
+                        print(f"Assigned it")
                         temp_goals[i] = [path[j-1][0], path[j-1][1]]
                         assigned = True
                         break
                     else:
                         # print("cant assign desired goal")
-                        x_rand = random.randint(min_x,max_x)
-                        y_rand = random.randint(min_y,max_y)
+                        x_rand = random.randint(min_x+1,max_x)
+                        y_rand = random.randint(min_y+1,max_y)
                         # print(f"x rand = {x_rand}")
                         # print(f"y rand = {y_rand}")
                         # print(f"obs map = {self.map[x_rand][y_rand]}")
                         while(([x_rand, y_rand] in temp_goals) or (self.map[x_rand][y_rand])):
-                            x_rand = random.randint(min_x,max_x)
-                            y_rand = random.randint(min_y,max_y)
+                            x_rand = random.randint(min_x+1,max_x)
+                            y_rand = random.randint(min_y+1,max_y)
                         #     print(f"x rand = {x_rand}")
                         #     print(f"y rand = {y_rand}")
                         #     print(f"obs map = {self.map[x_rand][y_rand]}")
-                        # print(f"assigning {(x_rand, y_rand)}")
+                        print(f"assigning {(x_rand, y_rand)}")
                         
                         temp_goals[i] = [x_rand, y_rand]
                         # print(f"temp goals = {temp_goals}")
@@ -359,17 +363,18 @@ class Subproblem:
                         break
             if not assigned:       
                 # assign a random unassigned node
-                x_rand = random.randint(min_x,max_x)
-                y_rand = random.randint(min_y,max_y)
+                x_rand = random.randint(min_x+1,max_x)
+                y_rand = random.randint(min_y+1,max_y)
                 while([x_rand, y_rand] in temp_goals or (self.map[x_rand][y_rand])):
-                    x_rand = random.randint(min_x,max_x)
-                    y_rand = random.randint(min_y,max_y)
+                    x_rand = random.randint(min_x+1,max_x)
+                    y_rand = random.randint(min_y+1,max_y)
+                print(f"assigning {(x_rand, y_rand)}")
                 temp_goals[i] = [x_rand, y_rand]
                 assigned = True
                 # temp_goals.append(path[0])
                 
 
-        # print(f"temp goals assigned = {temp_goals}")
+        print(f"temp goals assigned = {temp_goals}")
         return temp_goals
 
     def get_starts(self):
@@ -576,6 +581,9 @@ class Subproblem:
                 x = bottom_right[0]-x_count
                 y = bottom_right[1]-y_count
 
+                print(f"x = {x}")
+                print(f"y = {y}")
+
                 starts = []
                 goals = []
 
@@ -583,6 +591,9 @@ class Subproblem:
                     start = self.temp_starts[k]
                     goal = self.temp_goals[k]
 
+                    print(f"goal = {goal}")
+                    
+
                     start_x = start[0] 
                     start_y = start[1] 
                     goal_x = goal[0] 
@@ -679,6 +690,16 @@ class Subproblem:
                 # print(f"robot {robot_idx} is left out at position {pos}")
                 return False
             
+        for r in self.conflict:
+            pos = r.goal
+            x = pos[0]
+            y = pos[1]
+
+            if x > max_x or x < min_x or y > max_y or y < min_y:
+                # print(f"robot {robot_idx} is left out at position {pos}")
+                return False
+            
+        
         # check that there is no overlap with any other subproblem in S
         x = set(range(min_x,max_x+1))
         y = set(range(min_y,max_y+1))
@@ -767,6 +788,7 @@ def find_subproblem(c, conflicts, S, robots, starts, goals, obstacle_map, find_b
     # print(f"conflicts = {conflicts}")
     # type = best[3]  
 
+    print(f"best subproblem = {best_subproblem.transformed_goals}")
     return conflicts, best_subproblem
 
 
@@ -788,6 +810,8 @@ def order_query(starts, goals):
         ordered_goals - The goals in the correct order
         new_to_old - The mapping of indices, so that we can recover the original order.
     """
+    print(f"starts = {starts}")
+    print(f"goals = {goals}")
     fake_starts = []
     for start in starts:
         fake_starts.append([3*(start[0]), start[1]])