Index: park_integration/AbstractFitEngine.py
===================================================================
--- park_integration/AbstractFitEngine.py	(revision c4d6900c7e4f190062574bc6b0b22a247c5224b0)
+++ park_integration/AbstractFitEngine.py	(revision 511c6810b3a340b68750f9eae4b4fe7e6efb4470)
@@ -403,5 +403,4 @@
     Exception raise to stop the fit
     """
-    #print"Creating fit abort Exception"
 
 
@@ -450,20 +449,18 @@
         
         """
-        #import thread
         self.model.set_params(self.paramlist,params)
         self.res = self.data.residuals(self.model.eval)
         if self.fitresult is not None and  self.handler is not None:
             self.fitresult.set_model(model=self.model)
-            #fitness = self.chisq(params=params)
             fitness = self.chisq()
+            self.fitresult.pvec = params
             self.fitresult.set_fitness(fitness=fitness)
             self.handler.set_result(result=self.fitresult)
-            self.handler.update_fit()
-        
-        #if self.curr_thread != None :
-        #    try:
-        #        self.curr_thread.isquit()
-        #    except:
-        #        raise FitAbort,"stop leastsqr optimizer"    
+            #self.handler.update_fit()
+            if self.curr_thread != None :
+                try:
+                    self.curr_thread.isquit()
+                except:
+                    raise FitAbort,"stop leastsqr optimizer"        
         return self.res
     
Index: park_integration/Fitting.py
===================================================================
--- park_integration/Fitting.py	(revision c4d6900c7e4f190062574bc6b0b22a247c5224b0)
+++ park_integration/Fitting.py	(revision 511c6810b3a340b68750f9eae4b4fe7e6efb4470)
@@ -52,9 +52,6 @@
     def fit(self, q=None, handler=None, curr_thread=None):
         """Perform the fit """
-        #try:
         return self._engine.fit(q, handler, curr_thread=curr_thread)
-        #except:
-        #    raise
-    
+     
     def set_model(self, model, id, pars=[], constraints=[]):
         """
Index: park_integration/ScipyFitting.py
===================================================================
--- park_integration/ScipyFitting.py	(revision 3ab116f1b1bbfa960528c481ecf63b6eb03fdd6d)
+++ park_integration/ScipyFitting.py	(revision 511c6810b3a340b68750f9eae4b4fe7e6efb4470)
@@ -8,9 +8,11 @@
 
 import numpy 
+import sys
 from scipy import optimize
 
 from sans.fit.AbstractFitEngine import FitEngine
 from sans.fit.AbstractFitEngine import SansAssembly
-#from sans.fit.AbstractFitEngine import FitAbort
+from sans.fit.AbstractFitEngine import FitAbort
+
 
 class fitresult(object):
@@ -98,4 +100,5 @@
         self.param_list = []
         self.curr_thread = None
+        self.result = None
     #def fit(self, *args, **kw):
     #    return profile(self._fit, *args, **kw)
@@ -122,16 +125,28 @@
         data = listdata
         self.curr_thread = curr_thread
-        result = fitresult(model=model, param_list=self.param_list)
-        if handler is not None:
-            handler.set_result(result=result)
+        self.result = fitresult(model=model, param_list=self.param_list)
+        self.handler = handler
+        if self.handler is not None:
+            self.handler.set_result(result=self.result)
         #try:
-        functor = SansAssembly(self.param_list, model, data, handler=handler,
-                         fitresult=result, curr_thread= self.curr_thread)
-        out, cov_x, _, mesg, success = optimize.leastsq(functor,
+        functor = SansAssembly(self.param_list, model, data, handler=self.handler,
+                         fitresult=self.result, curr_thread= self.curr_thread)
+    
+        try:
+            out, cov_x, _, mesg, success = optimize.leastsq(functor,
                                             model.get_params(self.param_list),
                                                     ftol = 0.001,
                                                     full_output=1,
                                                     warning=True)
-  
+        except:
+            if sys.last_type == FitAbort:
+                if self.handler is not None:
+                    msg = "Fit Stop!"
+                    #self.handler.error(msg)
+                    self.result = self.handler.get_result()
+                    return self.result
+            else:
+                raise 
+       
         chisqr = functor.chisq()
         if cov_x is not None and numpy.isfinite(cov_x).all():
@@ -139,16 +154,17 @@
         else:
             stderr = None
+        
+        if (out is not None) and not (numpy.isnan(out).any()) \
+            and (cov_x != None):
+            self.result.fitness = chisqr
+            self.result.stderr  = stderr
+            self.result.pvec = out
+            self.result.success = success
+        else:  
+            msg = "SVD did not converge " + str(mesg)
+            #handler.error(msg)
+        return self.result
 
-        if not (numpy.isnan(out).any()) and (cov_x != None):
-            result.fitness = chisqr
-            result.stderr  = stderr
-            result.pvec = out
-            result.success = success
-            if q is not None:
-                q.put(result)
-                return q
-            return result
-        else:  
-            raise ValueError, "SVD did not converge" + str(mesg)
+       
     
 
