Index: fittingview/src/sans/perspectives/fitting/fitpage.py
===================================================================
--- fittingview/src/sans/perspectives/fitting/fitpage.py	(revision 14cd6b92c3299513b031e0c74310cbd0706f58af)
+++ fittingview/src/sans/perspectives/fitting/fitpage.py	(revision 2d0756a5e15d4c15729499002c703cc62cb6cd4b)
@@ -154,5 +154,5 @@
         When fit is complete ,reset the fit button label.
         """
-        self.btFit.SetLabel("Fit")
+        self.set_fitbutton()
         
     def _is_2D(self):
@@ -1084,9 +1084,12 @@
         Allow to fit
         """
+        if event != None:
+            event.Skip() 
         if self.fit_started:
             self._StopFit()
-            
-        if event != None:
-            event.Skip() 
+            self.fit_started = False
+            wx.CallAfter(self.set_fitbutton)
+            return   
+
         if len(self.parent._manager.fit_thread_list)>0 and\
                     self.parent._manager._fit_engine != "park" and\
@@ -1146,8 +1149,23 @@
 
         #single fit 
-        self._manager.onFit(uid=self.uid)
-        self.fit_started = True
-        self.btFit.SetLabel("Stop")
-           
+        #self._manager.onFit(uid=self.uid)
+        self.fit_started = self._manager.onFit(uid=self.uid)
+        wx.CallAfter(self.set_fitbutton)
+    
+    def set_fitbutton(self):  
+        """
+        Set fit button label depending on the fit_started[bool]
+        """
+        if self.fit_started:
+            label = "Stop"
+            color = "red"
+        else:
+            label = "Fit"
+            color = "black"
+        self.btFit.Enable(False)
+        self.btFit.SetLabel(label)
+        self.btFit.SetForegroundColour(color)
+        self.btFit.Enable(True)
+                     
     def get_weight_flag(self):
         """
@@ -1172,29 +1190,4 @@
         return flag
                 
-    def bind_fit_button(self):
-        """
-        bind the fit button to either fit handler or stop fit handler
-        """
-        self.btFit.Unbind(event=wx.EVT_BUTTON, id= self.btFit.GetId())
-        if self.btFit.GetLabel().lower() == "stop":
-            self.fit_started = True
-            self.btFit.SetForegroundColour('red')
-            self.btFit.Bind(event=wx.EVT_BUTTON, handler=self._StopFit,
-                             id=self.btFit.GetId())
-        elif self.btFit.GetLabel().lower() == "fit":
-            self.fit_started = False
-            self.btFit.SetDefault()
-            self.btFit.SetForegroundColour('black')
-            #self.btFit.SetBackgroundColour(self.default_bt_colour)
-            self.btFit.Bind(event=wx.EVT_BUTTON, handler=self._onFit, 
-                            id=self.btFit.GetId())
-        else:
-            msg = "FitPage: fit button has unknown label"
-            raise RuntimeError, msg
-        self._manager._reset_schedule_problem(value=0)
-          
-    def is_fitting(self):
-        if self.fit_started:
-            self._StopFit(event=None)
             
     def _StopFit(self, event=None):
@@ -1202,8 +1195,6 @@
         Stop fit 
         """
-        #time.sleep(0.1)
         if event != None:
             event.Skip()
-        #if self.engine_type=="scipy":
         self._manager.stop_fit(self.uid)
         self._manager._reset_schedule_problem(value=0)
Index: fittingview/src/sans/perspectives/fitting/fitting.py
===================================================================
--- fittingview/src/sans/perspectives/fitting/fitting.py	(revision 278b995337413afa5fc1670ef985ad2cabb4ec01)
+++ fittingview/src/sans/perspectives/fitting/fitting.py	(revision 2d0756a5e15d4c15729499002c703cc62cb6cd4b)
@@ -1609,5 +1609,5 @@
                         wx.CallAfter(cpage._on_fit_complete)
                     except:
-                        msg = "Singular point: Fitting Error occured."
+                        msg = "Singular point: Fitting Error occurred."
                         wx.PostEvent(self.parent, StatusEvent(status=msg, info="error",
                                                   type="stop"))
Index: park_integration/src/sans/fit/ScipyFitting.py
===================================================================
--- park_integration/src/sans/fit/ScipyFitting.py	(revision 0e8fca0b2dda9edc5241213ebda98e46122cf3fd)
+++ park_integration/src/sans/fit/ScipyFitting.py	(revision 2d0756a5e15d4c15729499002c703cc62cb6cd4b)
@@ -110,22 +110,12 @@
                                                     ftol=ftol,
                                                     full_output=1)
-
-        except KeyboardInterrupt:
-            msg = "Fitting: Terminated!!!"
-            handler.error(msg)
-            raise KeyboardInterrupt, msg #<= more stable
-            #less stable below
-            """
+        except:
             if hasattr(sys, 'last_type') and sys.last_type == KeyboardInterrupt:
                 if handler is not None:
                     msg = "Fitting: Terminated!!!"
                     handler.error(msg)
-                    result = handler.get_result()
-                    return result
+                    raise KeyboardInterrupt, msg
             else:
-                raise 
-            """
-        except:
-            raise
+                raise
         chisqr = functor.chisq()
 
