Index: sansview/perspectives/fitting/fitpage.py
===================================================================
--- sansview/perspectives/fitting/fitpage.py	(revision 11805287fd4a0698b222d9a29119cd27e2ef3aec)
+++ sansview/perspectives/fitting/fitpage.py	(revision dc613d64e4e425cbf52da8db494bcd7126e0b39e)
@@ -952,4 +952,12 @@
         Allow to fit
         """
+        if len(self.parent._manager.fit_thread_list)>0 and\
+                    self.parent._manager._fit_engine != "park":
+            msg = "The FitEnging will be set to 'ParkMC'\n"
+            msg += " to fit with more than one data set..."
+            wx.MessageBox(msg, 'Info')
+            #wx.PostEvent(self._manager.parent, StatusEvent(status=\
+            #                "Fitting: %s"%msg))
+            
         if self.data is None:
             msg = "Please get Data first..."
@@ -989,5 +997,5 @@
         self.qmin_x = float(self.qmin.GetValue())
         self.qmax_x = float( self.qmax.GetValue())
-        self._manager._reset_schedule_problem(value=0)
+        self._manager._reset_schedule_problem(value=0, uid=self.uid)
         self._manager.schedule_for_fit(uid=self.uid,value=1, fitproblem =None) 
         self._manager.set_fit_range(uid=self.uid,qmin= self.qmin_x, 
@@ -995,5 +1003,5 @@
         
         #single fit 
-        self._manager.onFit()
+        self._manager.onFit(uid=self.uid)
         self.btFit.SetLabel("Stop")
         self.bind_fit_button()
Index: sansview/perspectives/fitting/fitting.py
===================================================================
--- sansview/perspectives/fitting/fitting.py	(revision dfb6d38511aede5319add312648c18be5cd14485)
+++ sansview/perspectives/fitting/fitting.py	(revision dc613d64e4e425cbf52da8db494bcd7126e0b39e)
@@ -34,5 +34,5 @@
 from sans.guiframe.plugin_base import PluginBase 
 
-from .console import ConsoleUpdate
+#from .console import ConsoleUpdate
 from .fitproblem import FitProblem
 from .fitpanel import FitPanel
@@ -563,10 +563,15 @@
                                 update_chisqr=update_chisqr)
             
-    def onFit(self):
+    def onFit(self, uid=None):
         """
         perform fit 
-        """
+        
+        : param type: uid for single fit, None for simultaneous fit
+        """
+        from sans.fit.Fitting import Fit
         from .fit_thread import FitThread
+        from .console import ConsoleUpdate
         ##  count the number of fitproblem schedule to fit 
+        #if uid == None or self._fit_engine == "park":
         fitproblem_count = 0
         for value in self.page_finder.values():
@@ -575,12 +580,11 @@
                 
         ## if simultaneous fit change automatically the engine to park
-        if fitproblem_count > 1:
+        # scipy can not handle two thread running at the same time
+        if fitproblem_count > 1 or len(self.fit_thread_list)>0:
             self._on_change_engine(engine='park')
             
         self.fitproblem_count = fitproblem_count  
-          
-        from sans.fit.Fitting import Fit
+
         fitter = Fit(self._fit_engine)
-        
         if self._fit_engine == "park":
             engineType = "Simultaneous Fit"
@@ -592,4 +596,9 @@
         list_page_id = []
         for page_id, value in self.page_finder.iteritems():
+            # For simulfit (uid give with None), do for-loop
+            # if uid is specified (singlefit), do it only on the page.
+            if engineType == "Single Fit":
+                if page_id != uid:
+                    continue
             try:
                 if value.get_scheduled() == 1:
@@ -651,4 +660,5 @@
                                     completefn=self._simul_fit_completed,
                                     ftol=self.ftol)
+
         self.fit_thread_list[current_page_id] = calc_fit
         time.sleep(0.3)
@@ -817,11 +827,16 @@
                     break
     
-    def _reset_schedule_problem(self, value=0):
+    def _reset_schedule_problem(self, value=0, uid=None):
         """
         unschedule or schedule all fitproblem to be fit
         """
-        for page_id in self.page_finder.keys():
-            self.page_finder[page_id].schedule_tofit(value)
-            
+        # case that uid is not specified
+        if uid == None:
+            for page_id in self.page_finder.keys():
+                self.page_finder[page_id].schedule_tofit(value)
+        # when uid is given
+        else:
+            self.page_finder[uid].schedule_tofit(value)
+                
     def _fit_helper(self, pars, value, fitproblem_id,fitter, title="Single Fit " ):
         """
@@ -897,4 +912,5 @@
           
         """  
+        del self.fit_thread_list[page_id[0]]
         time.sleep(0.2)   
         try:
@@ -917,4 +933,5 @@
                 self._update_fit_button(page_id)
                 return
+            
             for uid in page_id:
                 value = self.page_finder[uid]   
@@ -962,4 +979,5 @@
         
         """
+        self.fit_thread_list = {}
         if page_id is None:
             page_id = []
@@ -1114,4 +1132,5 @@
         ## send the current engine type to fitpanel
         self.fit_panel._on_engine_change(name=self._fit_engine)
+
        
     def _on_model_panel(self, evt):
Index: sansview/perspectives/fitting/simfitpage.py
===================================================================
--- sansview/perspectives/fitting/simfitpage.py	(revision 4bd492fb00929575888f8d9722ff0833cb4bc48d)
+++ sansview/perspectives/fitting/simfitpage.py	(revision dc613d64e4e425cbf52da8db494bcd7126e0b39e)
@@ -52,5 +52,5 @@
         ##Font size
         self.SetWindowVariant(variant = FONT_VARIANT)
-        self.id = None
+        self.uid = None
         self.parent = parent
         ## store page_finder
@@ -67,5 +67,5 @@
         ## number of constraint
         self.nb_constraint= 0
-        self.id = wx.NewId()
+        self.uid = wx.NewId()
         ## draw page
         self.define_page_structure()
@@ -146,6 +146,6 @@
             for item in self.model_list:
                 if item[0].GetValue():
-                    self.manager.schedule_for_fit( value=1,fitproblem =item[1]) 
-            self.manager.onFit()
+                    self.manager.schedule_for_fit( value=1, fitproblem =item[1]) 
+            self.manager.onFit(None)
         else:
             msg= "Select at least one model to fit "
