diff --git a/Gui.py b/Gui.py
index 941b27f..3ac61e0 100644
--- a/Gui.py
+++ b/Gui.py
@@ -419,6 +419,7 @@ class Ui_fluencyCAD(object):
         self.pb_con_perp = QPushButton(self.groupBox_3)
         self.pb_con_perp.setObjectName(u"pb_con_perp")
         self.pb_con_perp.setCheckable(True)
+        self.pb_con_perp.setAutoExclusive(False)
 
         self.gridLayout_4.addWidget(self.pb_con_perp, 1, 1, 1, 1)
 
@@ -454,6 +455,7 @@ class Ui_fluencyCAD(object):
         self.pb_con_mid = QPushButton(self.groupBox_3)
         self.pb_con_mid.setObjectName(u"pb_con_mid")
         self.pb_con_mid.setCheckable(True)
+        self.pb_con_mid.setAutoExclusive(False)
 
         self.gridLayout_4.addWidget(self.pb_con_mid, 1, 0, 1, 1)
 
@@ -469,11 +471,11 @@ class Ui_fluencyCAD(object):
         self.tabWidget.setSizePolicy(sizePolicy5)
         self.tabWidget.setMaximumSize(QSize(200, 16777215))
         self.tabWidget.setTabPosition(QTabWidget.South)
-        self.widget = QWidget()
-        self.widget.setObjectName(u"widget")
-        self.verticalLayout_3 = QVBoxLayout(self.widget)
+        self.snaps = QWidget()
+        self.snaps.setObjectName(u"snaps")
+        self.verticalLayout_3 = QVBoxLayout(self.snaps)
         self.verticalLayout_3.setObjectName(u"verticalLayout_3")
-        self.groupBox_5 = QGroupBox(self.widget)
+        self.groupBox_5 = QGroupBox(self.snaps)
         self.groupBox_5.setObjectName(u"groupBox_5")
         sizePolicy6 = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Preferred)
         sizePolicy6.setHorizontalStretch(0)
@@ -491,6 +493,7 @@ class Ui_fluencyCAD(object):
         self.pb_snap_vert = QPushButton(self.groupBox_5)
         self.pb_snap_vert.setObjectName(u"pb_snap_vert")
         self.pb_snap_vert.setCheckable(True)
+        self.pb_snap_vert.setAutoExclusive(False)
 
         self.gridLayout_11.addWidget(self.pb_snap_vert, 2, 1, 1, 1)
 
@@ -516,12 +519,14 @@ class Ui_fluencyCAD(object):
         self.pushButton_7 = QPushButton(self.groupBox_5)
         self.pushButton_7.setObjectName(u"pushButton_7")
         self.pushButton_7.setCheckable(True)
+        self.pushButton_7.setAutoExclusive(False)
 
         self.gridLayout_11.addWidget(self.pushButton_7, 3, 0, 1, 1)
 
         self.pb_snap_horiz = QPushButton(self.groupBox_5)
         self.pb_snap_horiz.setObjectName(u"pb_snap_horiz")
         self.pb_snap_horiz.setCheckable(True)
+        self.pb_snap_horiz.setAutoExclusive(False)
 
         self.gridLayout_11.addWidget(self.pb_snap_horiz, 2, 0, 1, 1)
 
@@ -534,28 +539,32 @@ class Ui_fluencyCAD(object):
 
         self.pushButton_8 = QPushButton(self.groupBox_5)
         self.pushButton_8.setObjectName(u"pushButton_8")
+        self.pushButton_8.setCheckable(True)
+        self.pushButton_8.setAutoExclusive(False)
 
         self.gridLayout_11.addWidget(self.pushButton_8, 0, 0, 1, 1)
 
         self.pb_snap_midp = QPushButton(self.groupBox_5)
         self.pb_snap_midp.setObjectName(u"pb_snap_midp")
         self.pb_snap_midp.setCheckable(True)
+        self.pb_snap_midp.setAutoExclusive(False)
 
         self.gridLayout_11.addWidget(self.pb_snap_midp, 0, 1, 1, 1)
 
         self.pb_snap_angle = QPushButton(self.groupBox_5)
         self.pb_snap_angle.setObjectName(u"pb_snap_angle")
         self.pb_snap_angle.setCheckable(True)
+        self.pb_snap_angle.setAutoExclusive(False)
 
         self.gridLayout_11.addWidget(self.pb_snap_angle, 3, 1, 1, 1)
 
 
         self.verticalLayout_3.addWidget(self.groupBox_5)
 
-        self.tabWidget.addTab(self.widget, "")
-        self.widget1 = QWidget()
-        self.widget1.setObjectName(u"widget1")
-        self.tabWidget.addTab(self.widget1, "")
+        self.tabWidget.addTab(self.snaps, "")
+        self.settings = QWidget()
+        self.settings.setObjectName(u"settings")
+        self.tabWidget.addTab(self.settings, "")
 
         self.gridLayout.addWidget(self.tabWidget, 3, 0, 1, 1)
 
@@ -582,7 +591,7 @@ class Ui_fluencyCAD(object):
         self.retranslateUi(fluencyCAD)
 
         self.InputTab.setCurrentIndex(0)
-        self.tabWidget.setCurrentIndex(1)
+        self.tabWidget.setCurrentIndex(0)
 
 
         QMetaObject.connectSlotsByName(fluencyCAD)
@@ -710,8 +719,8 @@ class Ui_fluencyCAD(object):
         self.pushButton_8.setText(QCoreApplication.translate("fluencyCAD", u"Pnt", None))
         self.pb_snap_midp.setText(QCoreApplication.translate("fluencyCAD", u"MidP", None))
         self.pb_snap_angle.setText(QCoreApplication.translate("fluencyCAD", u"Angles", None))
-        self.tabWidget.setTabText(self.tabWidget.indexOf(self.widget), QCoreApplication.translate("fluencyCAD", u"Setg 1", None))
-        self.tabWidget.setTabText(self.tabWidget.indexOf(self.widget1), QCoreApplication.translate("fluencyCAD", u"Setg 2", None))
+        self.tabWidget.setTabText(self.tabWidget.indexOf(self.snaps), QCoreApplication.translate("fluencyCAD", u"Setg 1", None))
+        self.tabWidget.setTabText(self.tabWidget.indexOf(self.settings), QCoreApplication.translate("fluencyCAD", u"Setg 2", None))
         self.menuFile.setTitle(QCoreApplication.translate("fluencyCAD", u"File", None))
         self.menuSettings.setTitle(QCoreApplication.translate("fluencyCAD", u"Settings", None))
     # retranslateUi
diff --git a/drawing_modules/draw_widget_solve.py b/drawing_modules/draw_widget_solve.py
index 15d145b..fe8fc3a 100644
--- a/drawing_modules/draw_widget_solve.py
+++ b/drawing_modules/draw_widget_solve.py
@@ -24,15 +24,48 @@ class SketchWidget(QWidget):
         self.hovered_point = None
         self.selected_line = None
 
+        ### Display Settings
         self.snapping_range = 20  # Range in pixels for snapping
         self.zoom = 1
 
+        # Mouse Input
         self.setMouseTracking(True)
         self.mouse_mode = False
+        self.is_construct = False
+
+        # Solver
         self.solv = SolverSystem()
 
         self.sketch = Sketch2d()
 
+    def act_line_mode(self, checked):
+        if checked:
+            self.mouse_mode = 'line'
+            print(self.mouse_mode)
+        else:
+            self.mouse_mode = None
+
+    def act_constrain_pt_pt_mode(self):
+        self.mouse_mode = 'pt_pt'
+
+    def act_constrain_pt_line_mode(self):
+        self.mouse_mode = 'pt_line'
+
+    def act_constrain_horiz_line_mode(self):
+        self.mouse_mode = 'horiz'
+
+    def act_constrain_vert_line_mode(self):
+        self.mouse_mode = 'vert'
+
+    def act_constrain_distance_mode(self):
+        self.mouse_mode = 'distance'
+
+    def act_constrain_mid_point_mode(self):
+       self.sketchWidget.mouse_mode = 'pb_con_mid'
+
+    def on_construct_change(self, checked):
+        self.is_construct = checked
+
     def create_sketch(self, sketch_in ):
         self.sketch = Sketch2d()
         self.sketch.id = sketch_in.id
@@ -46,6 +79,7 @@ class SketchWidget(QWidget):
         return self.sketch
 
     def reset_buffers(self):
+        self.mouse_mode = None
         self.line_draw_buffer = [None, None]
         self.drag_buffer = [None, None]
         self.main_buffer = [None, None]
@@ -315,6 +349,7 @@ class SketchWidget(QWidget):
             self.drag_buffer[0] = self.get_handle_from_ui_point(self.hovered_point)
 
         if event.button() == Qt.RightButton and self.mouse_mode:
+            self.constrain_done.emit()
             self.reset_buffers()
 
         if event.button() == Qt.LeftButton and self.mouse_mode == "line":
@@ -329,6 +364,10 @@ class SketchWidget(QWidget):
                 v = clicked_pos.y()
 
                 point = Point2D(u,v)
+                print("construct", self.is_construct )
+                # Construction mode
+                point.is_helper = self.is_construct
+
                 self.sketch.add_point(point)
 
                 self.line_draw_buffer[0] = point
@@ -337,8 +376,12 @@ class SketchWidget(QWidget):
 
                 u = clicked_pos.x()
                 v = clicked_pos.y()
-
+                print("construct", self.is_construct)
                 point = Point2D(u, v)
+
+                # Construction mode
+                point.is_helper = self.is_construct
+
                 self.sketch.add_point(point)
 
                 self.line_draw_buffer[1] = point
@@ -348,6 +391,10 @@ class SketchWidget(QWidget):
             if self.line_draw_buffer[0] and self.line_draw_buffer[1]:
 
                 line = Line2D(self.line_draw_buffer[0], self.line_draw_buffer[1])
+
+                # Construction mode
+                line.is_helper = self.is_construct
+
                 self.sketch.add_line(line)
 
                 # Reset the buffer for the next line segment
diff --git a/gui.ui b/gui.ui
index 2d34b13..55daca4 100644
--- a/gui.ui
+++ b/gui.ui
@@ -733,6 +733,9 @@
          <property name="checkable">
           <bool>true</bool>
          </property>
+         <property name="autoExclusive">
+          <bool>false</bool>
+         </property>
         </widget>
        </item>
        <item row="2" column="0">
@@ -813,6 +816,9 @@
          <property name="checkable">
           <bool>true</bool>
          </property>
+         <property name="autoExclusive">
+          <bool>false</bool>
+         </property>
         </widget>
        </item>
       </layout>
@@ -838,7 +844,7 @@
       <property name="currentIndex">
        <number>0</number>
       </property>
-      <widget class="QWidget" name="">
+      <widget class="QWidget" name="snaps">
        <attribute name="title">
         <string>Setg 1</string>
        </attribute>
@@ -882,6 +888,9 @@
              <property name="checkable">
               <bool>true</bool>
              </property>
+             <property name="autoExclusive">
+              <bool>false</bool>
+             </property>
             </widget>
            </item>
            <item row="4" column="0" colspan="2">
@@ -919,6 +928,9 @@
              <property name="checkable">
               <bool>true</bool>
              </property>
+             <property name="autoExclusive">
+              <bool>false</bool>
+             </property>
             </widget>
            </item>
            <item row="2" column="0">
@@ -929,6 +941,9 @@
              <property name="checkable">
               <bool>true</bool>
              </property>
+             <property name="autoExclusive">
+              <bool>false</bool>
+             </property>
             </widget>
            </item>
            <item row="6" column="1">
@@ -949,6 +964,12 @@
              <property name="text">
               <string>Pnt</string>
              </property>
+             <property name="checkable">
+              <bool>true</bool>
+             </property>
+             <property name="autoExclusive">
+              <bool>false</bool>
+             </property>
             </widget>
            </item>
            <item row="0" column="1">
@@ -959,6 +980,9 @@
              <property name="checkable">
               <bool>true</bool>
              </property>
+             <property name="autoExclusive">
+              <bool>false</bool>
+             </property>
             </widget>
            </item>
            <item row="3" column="1">
@@ -969,6 +993,9 @@
              <property name="checkable">
               <bool>true</bool>
              </property>
+             <property name="autoExclusive">
+              <bool>false</bool>
+             </property>
             </widget>
            </item>
           </layout>
@@ -976,7 +1003,7 @@
         </item>
        </layout>
       </widget>
-      <widget class="QWidget" name="">
+      <widget class="QWidget" name="settings">
        <attribute name="title">
         <string>Setg 2</string>
        </attribute>
diff --git a/main.py b/main.py
index 2b5588a..6e67dfe 100644
--- a/main.py
+++ b/main.py
@@ -120,13 +120,13 @@ class MainWindow(QMainWindow):
         self.ui.pb_flip_face.pressed.connect(self.on_flip_face)
 
         ###Modes
-        self.ui.pb_linetool.pressed.connect(self.act_line_mode)
-        self.ui.pb_con_ptpt.pressed.connect(self.act_constrain_pt_pt_mode)
-        self.ui.pb_con_line.pressed.connect(self.act_constrain_pt_line_mode)
-        self.ui.pb_con_horiz.pressed.connect(self.act_constrain_horiz_line_mode)
-        self.ui.pb_con_vert.pressed.connect(self.act_constrain_vert_line_mode)
-        self.ui.pb_con_dist.pressed.connect(self.act_constrain_distance_mode)
-        self.ui.pb_con_mid.pressed.connect(self.act_constrain_mid_point_mode)
+        self.ui.pb_linetool.clicked.connect(self.sketchWidget.act_line_mode)
+        self.ui.pb_con_ptpt.clicked.connect(self.sketchWidget.act_constrain_pt_pt_mode)
+        self.ui.pb_con_line.clicked.connect(self.sketchWidget.act_constrain_pt_line_mode)
+        self.ui.pb_con_horiz.clicked.connect(self.sketchWidget.act_constrain_horiz_line_mode)
+        self.ui.pb_con_vert.clicked.connect(self.sketchWidget.act_constrain_vert_line_mode)
+        self.ui.pb_con_dist.clicked.connect(self.sketchWidget.act_constrain_distance_mode)
+        self.ui.pb_con_mid.clicked.connect(self.sketchWidget.act_constrain_mid_point_mode)
 
         ### Operations
         self.ui.pb_extrdop.pressed.connect(self.send_extrude)
@@ -137,9 +137,8 @@ class MainWindow(QMainWindow):
         self.setFocusPolicy(Qt.StrongFocus)
 
         self.send_command.connect(self.custom_3D_Widget.on_receive_command)
-
         self.ui.actionNew_Project.triggered.connect(self.new_project)
-
+        self.ui.pb_enable_construct.clicked.connect(self.sketchWidget.on_construct_change)
         self.project = Project()
         self.new_project()
 
@@ -156,7 +155,6 @@ class MainWindow(QMainWindow):
         self.project.timeline = timeline
         self.new_component()
 
-
     def new_component(self):
         print("Creating a new component...")
 
@@ -270,7 +268,7 @@ class MainWindow(QMainWindow):
         sketch.original_sketch = sketch_from_widget
 
         #Get parameters
-        points = sketch_from_widget.points
+        points = [point for point in sketch_from_widget.points if hasattr(point, 'is_helper') and not point.is_helper]
 
         sketch.convert_points_for_sdf(points)
         sketch.id = sketch_from_widget.id
@@ -353,49 +351,6 @@ class MainWindow(QMainWindow):
     def on_flip_face(self):
         self.send_command.emit("flip")
 
-    def act_line_mode(self):
-        if not self.ui.pb_linetool.isChecked():
-            self.sketchWidget.mouse_mode = 'line'
-        else:
-            self.sketchWidget.mouse_mode = None
-            self.sketchWidget.line_draw_buffer = [None, None]
-
-    def act_constrain_pt_pt_mode(self):
-        if not self.ui.pb_con_ptpt.isChecked():
-            self.sketchWidget.mouse_mode = 'pt_pt'
-        else:
-            self.sketchWidget.mouse_mode = None
-
-    def act_constrain_pt_line_mode(self):
-        if not self.ui.pb_con_line.isChecked():
-            self.sketchWidget.mouse_mode = 'pt_line'
-        else:
-            self.sketchWidget.mouse_mode = None
-
-    def act_constrain_horiz_line_mode(self):
-        if not self.ui.pb_con_horiz.isChecked():
-            self.sketchWidget.mouse_mode = 'horiz'
-        else:
-            self.sketchWidget.mouse_mode = None
-
-    def act_constrain_vert_line_mode(self):
-        if not self.ui.pb_con_vert.isChecked():
-            self.sketchWidget.mouse_mode = 'vert'
-        else:
-            self.sketchWidget.mouse_mode = None
-
-    def act_constrain_distance_mode(self):
-        if not self.ui.pb_con_dist.isChecked():
-            self.sketchWidget.mouse_mode = 'distance'
-        else:
-            self.sketchWidget.mouse_mode = None
-
-    def act_constrain_mid_point_mode(self):
-        if not self.ui.pb_con_mid.isChecked():
-            self.sketchWidget.mouse_mode = 'pb_con_mid'
-        else:
-            self.sketchWidget.mouse_mode = None
-
     def draw_op_complete(self):
         # safely disable the line modes
         self.ui.pb_linetool.setChecked(False)