diff --git a/frc971/control_loops/python/constants.py b/frc971/control_loops/python/constants.py
index 10e6786..15bac77 100644
--- a/frc971/control_loops/python/constants.py
+++ b/frc971/control_loops/python/constants.py
@@ -118,7 +118,7 @@
         field_id="autonav_bounce"),
 }
 
-FIELD = FIELDS["2021 Galactic Search BRed"]
+FIELD = FIELDS["2020 Field"]
 
 
 def get_json_folder(field):
diff --git a/frc971/control_loops/python/path_edit.py b/frc971/control_loops/python/path_edit.py
index 959b382..65a376b 100755
--- a/frc971/control_loops/python/path_edit.py
+++ b/frc971/control_loops/python/path_edit.py
@@ -57,6 +57,12 @@
 
         self.transform = cairo.Matrix()
 
+        self.set_events(Gdk.EventMask.BUTTON_PRESS_MASK
+                        | Gdk.EventMask.BUTTON_PRESS_MASK
+                        | Gdk.EventMask.BUTTON_RELEASE_MASK
+                        | Gdk.EventMask.POINTER_MOTION_MASK
+                        | Gdk.EventMask.SCROLL_MASK)
+
         try:
             self.field_png = cairo.ImageSurface.create_from_png(
                 "frc971/control_loops/python/field_images/" + FIELD.field_id +
@@ -258,12 +264,7 @@
         cr.restore()
 
     def draw_splines(self, cr):
-        for i, points in enumerate(self.points.getSplines()):
-            array = np.zeros(shape=(6, 2), dtype=float)
-            for j, point in enumerate(points):
-                array[j, 0] = point[0]
-                array[j, 1] = point[1]
-            spline = Spline(np.ascontiguousarray(np.transpose(array)))
+        for i, spline in enumerate(self.points.getLibsplines()):
             for k in np.linspace(0.01, 1, 100):
                 cr.move_to(
                     self.mToPx(spline.Point(k - 0.01)[0]),
@@ -276,25 +277,6 @@
                 self.draw_robot_at_point(cr, 0.00, 0.01, spline)
             self.draw_robot_at_point(cr, 1, 0.01, spline)
 
-    def mouse_move(self, event):
-        old_x = self.mousex
-        old_y = self.mousey
-        self.mousex, self.mousey = self.input_transform.transform_point(
-            event.x, event.y)
-        dif_x = self.mousex - old_x
-        dif_y = self.mousey - old_y
-        difs = np.array([self.pxToM(dif_x), self.pxToM(dif_y)])
-
-        if self.mode == Mode.kEditing and self.spline_edit != -1:
-            self.points.updates_for_mouse_move(self.index_of_edit,
-                                               self.spline_edit,
-                                               self.pxToM(self.mousex),
-                                               self.pxToM(self.mousey), difs)
-
-            self.points.update_lib_spline()
-            self.graph.schedule_recalculate(self.points)
-        self.queue_draw()
-
     def export_json(self, file_name):
         self.path_to_export = os.path.join(
             self.module_path,  # position of the python
@@ -343,8 +325,10 @@
 
         print("SPLINES LOADED")
         self.mode = Mode.kEditing
+        self.queue_draw()
+        self.graph.schedule_recalculate(self.points)
 
-    def key_press(self, event):
+    def do_key_press_event(self, event):
         keyval = Gdk.keyval_to_lower(event.keyval)
 
         # TODO: This should be a button
@@ -361,7 +345,25 @@
                 self.points.getSplines()[len(self.points.getSplines()) - 1][3])
             self.queue_draw()
 
-    def button_press(self, event):
+    def do_button_release_event(self, event):
+        self.mousex, self.mousey = self.input_transform.transform_point(
+            event.x, event.y)
+        if self.mode == Mode.kEditing:
+            if self.index_of_edit > -1 and self.held_x != self.mousex:
+
+                self.points.setSplines(self.spline_edit, self.index_of_edit,
+                                       self.pxToM(self.mousex),
+                                       self.pxToM(self.mousey))
+
+                self.points.splineExtrapolate(self.spline_edit)
+
+                self.points.update_lib_spline()
+                self.graph.schedule_recalculate(self.points)
+
+                self.index_of_edit = -1
+                self.spline_edit = -1
+
+    def do_button_press_event(self, event):
         self.mousex, self.mousey = self.input_transform.transform_point(
             event.x, event.y)
 
@@ -369,6 +371,7 @@
             if self.points.add_point(
                     self.pxToM(self.mousex), self.pxToM(self.mousey)):
                 self.mode = Mode.kEditing
+                self.graph.schedule_recalculate(self.points)
         elif self.mode == Mode.kEditing:
             # Now after index_of_edit is not -1, the point is selected, so
             # user can click for new point
@@ -396,25 +399,26 @@
                             self.held_x = self.mousex
         self.queue_draw()
 
-    def button_release(self, event):
+    def do_motion_notify_event(self, event):
+        old_x = self.mousex
+        old_y = self.mousey
         self.mousex, self.mousey = self.input_transform.transform_point(
             event.x, event.y)
-        if self.mode == Mode.kEditing:
-            if self.index_of_edit > -1 and self.held_x != self.mousex:
+        dif_x = self.mousex - old_x
+        dif_y = self.mousey - old_y
+        difs = np.array([self.pxToM(dif_x), self.pxToM(dif_y)])
 
-                self.points.setSplines(self.spline_edit, self.index_of_edit,
-                                       self.pxToM(self.mousex),
-                                       self.pxToM(self.mousey))
+        if self.mode == Mode.kEditing and self.spline_edit != -1:
+            self.points.updates_for_mouse_move(self.index_of_edit,
+                                               self.spline_edit,
+                                               self.pxToM(self.mousex),
+                                               self.pxToM(self.mousey), difs)
 
-                self.points.splineExtrapolate(self.spline_edit)
+            self.points.update_lib_spline()
+            self.graph.schedule_recalculate(self.points)
+        self.queue_draw()
 
-                self.points.update_lib_spline()
-                self.graph.schedule_recalculate(self.points)
-
-                self.index_of_edit = -1
-                self.spline_edit = -1
-
-    def mouse_scroll(self, event):
+    def do_scroll_event(self, event):
         self.mousex, self.mousey = self.input_transform.transform_point(
             event.x, event.y)
 
diff --git a/frc971/control_loops/python/spline_graph.py b/frc971/control_loops/python/spline_graph.py
index a8e5c78..99c496b 100755
--- a/frc971/control_loops/python/spline_graph.py
+++ b/frc971/control_loops/python/spline_graph.py
@@ -20,9 +20,6 @@
 
         self.connect(event, handler)
 
-    def configure(self, event):
-        self.field.window_shape = (event.width, event.height)
-
     def output_json_clicked(self, button):
         self.field.export_json(self.file_name_box.get_text())
 
@@ -37,10 +34,12 @@
     def long_changed(self, button):
         value = self.long_input.get_value()
         self.field.points.setConstraint("LONGITUDINAL_ACCELERATION", value)
+        self.field.graph.schedule_recalculate(self.field.points)
 
     def lat_changed(self, button):
         value = self.lat_input.get_value()
         self.field.points.setConstraint("LATERAL_ACCELERATION", value)
+        self.field.graph.schedule_recalculate(self.field.points)
 
     def vel_changed(self, button):
         value = self.vel_input.get_value()
@@ -48,6 +47,7 @@
     def vol_changed(self, button):
         value = self.vol_input.get_value()
         self.field.points.setConstraint("VOLTAGE", value)
+        self.field.graph.schedule_recalculate(self.field.points)
 
     def input_combobox_choice(self, combo):
         text = combo.get_active_text()
@@ -64,23 +64,10 @@
         container.set_vexpand(True)
         self.add(container)
 
-        self.eventBox = Gtk.EventBox()
-        self.eventBox.set_events(Gdk.EventMask.BUTTON_PRESS_MASK
-                                 | Gdk.EventMask.BUTTON_PRESS_MASK
-                                 | Gdk.EventMask.BUTTON_RELEASE_MASK
-                                 | Gdk.EventMask.POINTER_MOTION_MASK
-                                 | Gdk.EventMask.SCROLL_MASK
-                                 | Gdk.EventMask.KEY_PRESS_MASK)
-
         self.field = FieldWidget()
 
         self.method_connect("delete-event", basic_window.quit_main_loop)
-        self.method_connect("key-release-event", self.field.key_press)
-        self.method_connect("button-press-event", self.field.button_press)
-        self.method_connect("button-release-event", self.field.button_release)
-        self.method_connect("configure-event", self.configure)
-        self.method_connect("motion_notify_event", self.field.mouse_move)
-        self.method_connect("scroll_event", self.field.mouse_scroll)
+        self.method_connect("key-release-event", self.field.do_key_press_event)
 
         self.file_name_box = Gtk.Entry()
         self.file_name_box.set_size_request(200, 40)
@@ -156,7 +143,8 @@
         for game in FIELDS.keys():
             self.game_combo.append_text(game)
 
-        self.game_combo.set_active(0)
+        if FIELD in FIELDS.values():
+            self.game_combo.set_active(list(FIELDS.values()).index(FIELD))
         self.game_combo.set_size_request(100, 40)
 
         limitControls = Gtk.FlowBox()
@@ -186,8 +174,7 @@
         container.attach(self.label, 4, 0, 1, 1)
         container.attach(self.game_combo, 5, 0, 1, 1)
 
-        self.eventBox.add(self.field)
-        container.attach(self.eventBox, 1, 1, 4, 4)
+        container.attach(self.field, 1, 1, 4, 4)
 
         container.attach(self.field.graph, 0, 10, 10, 1)
 
