Index: park_integration/AbstractFitEngine.py
===================================================================
--- park_integration/AbstractFitEngine.py	(revision 6d20b46ed15da6b83623c8a8c6294e8c7adceeeb)
+++ park_integration/AbstractFitEngine.py	(revision 393f0f32fe26758076a2a12a3156ded46719c9fe)
@@ -1,5 +1,3 @@
 import logging, sys
-import copy
-from copy import deepcopy
 import park,numpy,math, copy
 from DataLoader.data_info import Data1D
@@ -81,8 +79,5 @@
         self.pars=[]
   
-    def clone(self):
-        model = self.model.clone()
-        model.name = self.model.name
-        return Model(model)
+  
     def getParams(self,fitparams):
         """
@@ -120,7 +115,7 @@
         """
         try:
-        	return self.model.evalDistribution(x)
+            return self.model.evalDistribution(x)
         except:
-        	raise
+            raise
 
     
@@ -342,12 +337,12 @@
          Sans Assembly class a class wrapper to be call in optimizer.leastsq method
     """
-    def __init__(self,paramlist,model=None , data=None, curr_thread= None):
-        """
-            @param model: the model wrapper for sans -model
-            @param data: the data wrapper for sans data
-        """
-        self.model = model.clone()
-        self.data  = deepcopy(data)
-        self.paramlist = deepcopy(paramlist)
+    def __init__(self,paramlist,Model=None , Data=None, curr_thread= None):
+        """
+            @param Model: the model wrapper fro sans -model
+            @param Data: the data wrapper for sans data
+        """
+        self.model = Model
+        self.data  = Data
+        self.paramlist=paramlist
         self.curr_thread= curr_thread
         self.res=[]
@@ -462,10 +457,8 @@
         if model == None:
             raise ValueError, "AbstractFitEngine: Need to set model to fit"
-        #print "set_model",model.name
-        #new_model= deepcopy(model)
-        new_model = model.clone()
-        new_model.name = model.name
-        if not issubclass(new_model.__class__, Model):
-            new_model= Model(new_model)
+        
+        new_model= model
+        if not issubclass(model.__class__, Model):
+            new_model= Model(model)
         
         if len(constraints)>0:
@@ -513,10 +506,9 @@
             @param Uid: unique key corresponding to a fitArrange object with data
         """
-        #print "set_data",data.__class__.__name__
         if data.__class__.__name__=='Data2D':
             fitdata=FitData2D(sans_data2d=data, data=data.data, err_data= data.err_data)
         else:
             fitdata=FitData1D(x=data.x, y=data.y , dx= data.dx,dy=data.dy,smearer=smearer)
-        
+       
         fitdata.setFitRange(qmin=qmin,qmax=qmax)
         #A fitArrange is already created but contains model only at Uid
@@ -586,5 +578,4 @@
         """
         self.model = model
-        self.model.name = model.name
         
     def add_data(self,data):
Index: park_integration/Fitting.py
===================================================================
--- park_integration/Fitting.py	(revision 6d20b46ed15da6b83623c8a8c6294e8c7adceeeb)
+++ park_integration/Fitting.py	(revision 393f0f32fe26758076a2a12a3156ded46719c9fe)
@@ -22,5 +22,5 @@
         engine.set_param( model,model.name, pars)
         engine.set_model(model,Uid)
-        engine.select_problem_for_fit(Uid,value)
+        
         chisqr1, out1, cov1=engine.fit(pars,qmin,qmax)
     """  
Index: park_integration/ScipyFitting.py
===================================================================
--- park_integration/ScipyFitting.py	(revision 6d20b46ed15da6b83623c8a8c6294e8c7adceeeb)
+++ park_integration/ScipyFitting.py	(revision 393f0f32fe26758076a2a12a3156ded46719c9fe)
@@ -56,43 +56,33 @@
             with Uid as keys
         """
-        self.fitArrangeDict = {}
-        self.paramList = []
+        self.fitArrangeDict={}
+        self.paramList=[]
     #def fit(self, *args, **kw):
     #    return profile(self._fit, *args, **kw)
-    def createFunctor(self):
-        fitproblem=None
-        fit_count = 0 
-        #print " self.fitArrangeDict", self.fitArrangeDict
-        for id, fproblem in self.fitArrangeDict.iteritems():
-            if fproblem.get_to_fit() == 1:
-                fitproblem = fproblem
-                fit_count += 1
-        if fit_count > 1 : 
+
+    def fit(self ,q=None,handler=None,curr_thread= None):
+       
+        fitproblem=[]
+        for id ,fproblem in self.fitArrangeDict.iteritems():
+            if fproblem.get_to_fit()==1:
+                fitproblem.append(fproblem)
+        if len(fitproblem)>1 : 
             raise RuntimeError, "Scipy can't fit more than a single fit problem at a time."
             return
-        elif fit_count == 0 : 
+        elif len(fitproblem)==0 : 
             raise RuntimeError, "No Assembly scheduled for Scipy fitting."
             return
     
-        listdata = []
-        model = fitproblem.get_model().clone()
-        data = fitproblem.get_data()
-        
+        listdata=[]
+        model = fitproblem[0].get_model()
+        listdata = fitproblem[0].get_data()
         # Concatenate dList set (contains one or more data)before fitting
         #data=self._concatenateData( listdata)
-        #data = listdata
-        #self.curr_thread= curr_thread
+        data=listdata
+        self.curr_thread= curr_thread
 
         #try:
-        functor = SansAssembly(self.paramList, model, data)#, curr_thread= curr_thread)
-        return functor , model
-
-    def fit(self, q=None, handler=None, curr_thread=None):
-        
-        functor , model = self.createFunctor()
-        
-        out, cov_x, info, mesg, success = optimize.leastsq(functor,
-                                                model.getParams(self.paramList), 
-                                                full_output=1, warning=True)
+        functor= SansAssembly(self.paramList,model,data, curr_thread= self.curr_thread)
+        out, cov_x, info, mesg, success = optimize.leastsq(functor,model.getParams(self.paramList), full_output=1, warning=True)
         
         chisqr = functor.chisq(out)
@@ -108,5 +98,5 @@
                 result.pvec = out
                 result.success = success
-                if q is not None:
+                if q !=None:
                     print "went here"
                     q.put(result)
@@ -115,5 +105,5 @@
                 return result
         else:  
-            raise ValueError, "SVD did not converge" + str(success)
+            raise ValueError, "SVD did not converge"+str(success)
         #except FitAbort:
             ## fit engine is stop
