Index: src/sas/fit/AbstractFitEngine.py
===================================================================
--- src/sas/fit/AbstractFitEngine.py	(revision fd5ac0db8089df5bd882587f157d4bf317cfcf67)
+++ src/sas/fit/AbstractFitEngine.py	(revision 386ffe12ba023b3eab0fbbb16a6f958ed7c099a3)
@@ -10,5 +10,4 @@
 _SMALLVALUE = 1.0e-10
 
-# Note: duplicated from park
 class FitHandler(object):
     """
@@ -69,5 +68,5 @@
     def __init__(self, sas_model, sas_data=None, **kw):
         """
-        :param sas_model: the sas model to wrap using park interface
+        :param sas_model: the sas model to wrap for fitting
 
         """
@@ -100,5 +99,5 @@
     def eval(self, x):
         """
-            Override eval method of park model.
+            Override eval method of model.
 
             :param x: the x value used to compute a function
@@ -394,5 +393,5 @@
     def __init__(self):
         """
-        Base class for scipy and park fit engine
+        Base class for the fit engine
         """
         #Dictionnary of fitArrange element (fit problems)
Index: src/sas/fit/BumpsFitting.py
===================================================================
--- src/sas/fit/BumpsFitting.py	(revision fd5ac0db8089df5bd882587f157d4bf317cfcf67)
+++ src/sas/fit/BumpsFitting.py	(revision 386ffe12ba023b3eab0fbbb16a6f958ed7c099a3)
@@ -10,5 +10,9 @@
 from bumps.mapper import SerialMapper, MPMapper
 from bumps import parameter
+
+# TODO: remove globals from interface to bumps options!
+# Default bumps to use the levenberg-marquardt optimizer
 from bumps.fitproblem import FitProblem
+fitters.FIT_DEFAULT = 'lm'
 
 from sas.fit.AbstractFitEngine import FitEngine
Index: src/sas/fit/Fitting.py
===================================================================
--- src/sas/fit/Fitting.py	(revision 794922220f2fb3b23dd08c648aabf87b4850596c)
+++ src/sas/fit/Fitting.py	(revision 386ffe12ba023b3eab0fbbb16a6f958ed7c099a3)
@@ -1,16 +1,9 @@
 """
-Class Fit contains ScipyFit and ParkFit methods declaration
-allows to create instance of type ScipyFit or ParkFit to perform either
-a park fit or a scipy fit.
+Class Fit contains fitting engine methods declaration
 """
 
-#from scipy import optimize
-from sas.fit.ScipyFitting import ScipyFit
-from sas.fit.ParkFitting import ParkFit
 from sas.fit.BumpsFitting import BumpsFit
 
 ENGINES={
-    'scipy': ScipyFit,
-    'park': ParkFit,
     'bumps': BumpsFit,
 }
@@ -23,5 +16,5 @@
         from sas.fit.Fitting import Fit
         fitter= Fit()
-        fitter.fit_engine('scipy') or fitter.fit_engine('park')
+        fitter.fit_engine('bumps')
         engine = fitter.returnEngine()
         engine.set_data(data,id)
@@ -32,8 +25,7 @@
         
     """  
-    def __init__(self, engine='scipy', *args, **kw):
+    def __init__(self, engine='bumps', *args, **kw):
         """
         """
-        #self._engine will contain an instance of ScipyFit or ParkFit
         self._engine = None
         self.fitter_id = None
@@ -61,12 +53,12 @@
         :param word: the keyword to select the fit type 
         
-        :raise: if the user does not enter 'scipy' or 'park',
-             a valueError is raised 
-             
+        :raise: KeyError if the user does not enter an available engine
+
         """
         try:
             self._engine = ENGINES[word](*args, **kw)
         except KeyError, exc:
-            raise KeyError("fit engine should be one of scipy, park or bumps")
+            raise KeyError("fit engine should be bumps")
+            #raise KeyError("fit engine should be one of "+", ".join(sorted(ENGINES.keys())))
 
     def fit(self, msg_q=None, q=None, handler=None, 
@@ -75,5 +67,5 @@
                         reset_flag=False):
         """Perform the fit """
-        return self._engine.fit(msg_q=msg_q, 
+        return self._engine.fit(msg_q=msg_q,
                                 q=q, handler=handler, curr_thread=curr_thread,
                                 ftol=ftol, reset_flag=reset_flag)
Index: src/sas/fit/ParkFitting.py
===================================================================
--- src/sas/fit/ParkFitting.py	(revision fd5ac0db8089df5bd882587f157d4bf317cfcf67)
+++ src/sas/fit/ParkFitting.py	(revision 386ffe12ba023b3eab0fbbb16a6f958ed7c099a3)
@@ -7,4 +7,6 @@
 to perform a simple fit with park optimizer.
 """
+
+_ = '''
 #import time
 import numpy
@@ -615,3 +617,4 @@
             return q
         return result_list
-       
+
+'''
Index: src/sas/fit/ScipyFitting.py
===================================================================
--- src/sas/fit/ScipyFitting.py	(revision a10364b52df3f74f54be6b644163d5d92b3a675b)
+++ src/sas/fit/ScipyFitting.py	(revision 386ffe12ba023b3eab0fbbb16a6f958ed7c099a3)
@@ -4,4 +4,5 @@
 simple fit with scipy optimizer.
 """
+_ = '''
 import sys
 import copy
@@ -265,5 +266,5 @@
     if it is out of range.
 
-    : model: park model object
+    : model: model object
     """
     # loop through parameterset
@@ -306,3 +307,4 @@
 #    return call_result
 
-      
+
+'''
Index: src/sas/perspectives/fitting/fit_thread.py
===================================================================
--- src/sas/perspectives/fitting/fit_thread.py	(revision 794922220f2fb3b23dd08c648aabf87b4850596c)
+++ src/sas/perspectives/fitting/fit_thread.py	(revision 386ffe12ba023b3eab0fbbb16a6f958ed7c099a3)
@@ -28,5 +28,4 @@
                  yieldtime  = 0.03,
                  worktime   = 0.03,
-                 ftol       = None,
                  reset_flag = False):
         CalcThread.__init__(self,
@@ -44,5 +43,4 @@
         self.updatefn = updatefn
         #Relative error desired in the sum of squares.
-        self.ftol = ftol
         self.reset_flag = reset_flag
    
@@ -67,5 +65,4 @@
             list_handler = []
             list_curr_thread = [] 
-            list_ftol = []
             list_reset_flag = []
             list_map_get_attr = []
@@ -76,5 +73,4 @@
                 list_q.append(None)
                 list_curr_thread.append(self)
-                list_ftol.append(self.ftol)
                 list_reset_flag.append(self.reset_flag)
                 list_fit_function.append('fit')
@@ -82,5 +78,5 @@
             #from multiprocessing import Pool
             inputs = zip(list_map_get_attr, self.fitter, list_fit_function,
-                         list_q, list_q, list_handler,list_curr_thread,list_ftol,
+                         list_q, list_q, list_handler,list_curr_thread,
                          list_reset_flag)
             result =  map(map_apply, inputs)
Index: src/sas/perspectives/fitting/fitpage.py
===================================================================
--- src/sas/perspectives/fitting/fitpage.py	(revision 22ae2f7d74bac46f42081fd80b713a91db5bb140)
+++ src/sas/perspectives/fitting/fitpage.py	(revision 386ffe12ba023b3eab0fbbb16a6f958ed7c099a3)
@@ -1003,12 +1003,4 @@
             return
 
-        if (len(self._manager.fit_thread_list) > 0
-                and self._manager._fit_engine not in ("park","bumps")
-                and self._manager.sim_page != None
-                and self._manager.sim_page.uid == self.uid):
-            msg = "The FitEnging will be set to 'ParkMC'\n"
-            msg += " to fit with more than one data set..."
-            wx.MessageBox(msg, 'Info')
-            
         if self.data is None:
             msg = "Please get Data first..."
@@ -2034,5 +2026,5 @@
         return numbers of data points within qrange
         
-        :Note: This is for Park where chi2 is not normalized by Npts of fit
+        :Note: This is to normalize chisq by Npts of fit
         
         """
@@ -3230,5 +3222,4 @@
         # Figuring out key combo: Cmd for copy, Alt for paste
         if event.AltDown() and event.ShiftDown():
-            self._manager.show_ftol_dialog()
             flag = True
         elif event.AltDown() or event.ShiftDown():
@@ -3240,6 +3231,4 @@
         # messages depending on the flag
         if not flag:
-            msg = " Could not open ftol dialog;"
-            msg += " Check if the Scipy fit engine is selected in the menubar."
             infor = 'warning'
             # inform msg to wx
Index: src/sas/perspectives/fitting/fitpanel.py
===================================================================
--- src/sas/perspectives/fitting/fitpanel.py	(revision fa09d62cc24b9425dc926fced79d5ba20fa6fcd3)
+++ src/sas/perspectives/fitting/fitpanel.py	(revision 386ffe12ba023b3eab0fbbb16a6f958ed7c099a3)
@@ -110,17 +110,4 @@
         return doc
     
-    def _on_engine_change(self, name='scipy'):
-        """
-        """
-        for panel in self.opened_pages.values():
-            self.set_engine_helper(panel=panel, name=name)
-            
-    def set_engine_helper(self, panel, name='scipy'):
-        """
-        """
-        self.fit_engine_type = name
-        if panel not in[self.batch_page, self.sim_page]:
-            panel._on_engine_change(name=self.fit_engine_type)
-                
     def update_model_list(self):
         """
@@ -393,5 +380,4 @@
         self.AddPage(panel, caption, select=True)
         self.opened_pages[panel.uid] = panel
-        self.set_engine_helper(panel=panel)
         self._manager.create_fit_problem(panel.uid)
         self._manager.page_finder[panel.uid].add_data(panel.get_data())
Index: src/sas/perspectives/fitting/fitting.py
===================================================================
--- src/sas/perspectives/fitting/fitting.py	(revision fd5ac0db8089df5bd882587f157d4bf317cfcf67)
+++ src/sas/perspectives/fitting/fitting.py	(revision 386ffe12ba023b3eab0fbbb16a6f958ed7c099a3)
@@ -45,11 +45,5 @@
 from sas.guiframe.gui_manager import MDIFrame
 
-# TODO: remove globals from interface to bumps options!
-# Default bumps to use the levenberg-marquardt optimizer
-import bumps.fitters
-bumps.fitters.FIT_DEFAULT = 'lm'
-
 MAX_NBR_DATA = 4
-SAS_F_TOL = 5e-05
 
 (PageInfoEvent, EVT_PAGE_INFO) = wx.lib.newevent.NewEvent()
@@ -93,6 +87,5 @@
         self._fit_engine = 'bumps'
         self._gui_engine = None
-        ## Relative error desired in the sum of squares (float); scipy only
-        self.ftol = SAS_F_TOL
+        ## Relative error desired in the sum of squares (float)
         self.batch_reset_flag = True
         #List of selected data
@@ -112,7 +105,4 @@
         self.state_reader = None
         self._extensions = '.fitv'
-        self.scipy_id = wx.NewId()
-        self.park_id = wx.NewId()
-        self.bumps_id = wx.NewId()
         self.menu1 = None
         self.new_model_frame = None
@@ -191,34 +181,9 @@
         self.batch_menu.Enable(False)
         self.menu1.AppendSeparator()
-        #Set park engine
-        scipy_help = "Scipy Engine: Perform Simple fit. More in Help window...."
-        self.menu1.AppendCheckItem(self.scipy_id, "Simple FitEngine [LeastSq]",
-                                   scipy_help)
-        wx.EVT_MENU(owner, self.scipy_id, self._onset_engine_scipy)
-        
-        park_help = "Park Engine: Perform Complex fit. More in Help window...."
-        self.menu1.AppendCheckItem(self.park_id, "Complex FitEngine [ParkMC]",
-                                   park_help)
-        wx.EVT_MENU(owner, self.park_id, self._onset_engine_park)
-        
-        bumps_help = "Bumps: fitting and uncertainty analysis. More in Help window...."
-        self.menu1.AppendCheckItem(self.bumps_id, "Bumps fit",
-                                   bumps_help)
-        wx.EVT_MENU(owner, self.bumps_id, self._onset_engine_bumps)
-        
-        self.menu1.FindItemById(self.scipy_id).Check(self._fit_engine=="scipy")
-        self.menu1.FindItemById(self.park_id).Check(self._fit_engine=="park")
-        self.menu1.FindItemById(self.bumps_id).Check(self._fit_engine=="bumps")
+
         self.menu1.AppendSeparator()
-        self.id_tol = wx.NewId()
-        ftol_help = "Change the current FTolerance (=%s) " % str(self.ftol)
-        ftol_help += "of Simple FitEngine..."
-        self.menu1.Append(self.id_tol, "Change FTolerance",
-                                   ftol_help)
-        wx.EVT_MENU(owner, self.id_tol, self.show_ftol_dialog)
-
         self.id_bumps_options = wx.NewId()
-        bopts_help = "Bumps fitting options"
-        self.menu1.Append(self.id_bumps_options, 'Bumps &Options', bopts_help)
+        bopts_help = "Fitting options"
+        self.menu1.Append(self.id_bumps_options, 'Fit &Options', bopts_help)
         wx.EVT_MENU(owner, self.id_bumps_options, self.on_bumps_options)
         self.bumps_options_menu = self.menu1.FindItemById(self.id_bumps_options)
@@ -776,7 +741,4 @@
         :param value: can be a string in this case.
         :param names: the paramter name
-         
-        :note: expecting park used for fit.
-         
         """
         sim_page_id = self.sim_page.uid
@@ -808,41 +770,4 @@
             return model_name, param_name
    
-    def set_ftol(self, ftol=None):
-        """
-        Set ftol: Relative error desired in the sum of chi squares.
-        """
-        # check if it is flaot
-        try:
-            f_tol = float(ftol)
-        except:
-            # default
-            f_tol = SAS_F_TOL
-            
-        self.ftol = f_tol
-        # update ftol menu help strings
-        ftol_help = "Change the current FTolerance (=%s) " % str(self.ftol)
-        ftol_help += "of Simple FitEngine..."
-        if self.menu1 != None:
-            self.menu1.SetHelpString(self.id_tol, ftol_help)
-        
-    def show_ftol_dialog(self, event=None):
-        """
-        Dialog to select ftol for Scipy
-        """
-        from ftol_dialog import ChangeFtol
-        dialog = ChangeFtol(self.parent, self)
-        result = dialog.ShowModal()
-        if result == wx.ID_OK:
-            value = dialog.get_ftol()
-            if value is not None:
-                self.set_ftol(value)
-                msg = "The ftol (LeastSq) is set to %s." % value
-            else:
-                msg = "Error in the selection... No change in ftol."
-            # post event for info
-            wx.PostEvent(self.parent,
-                         StatusEvent(status=msg, info='warning'))
-        dialog.Destroy()
-
     def on_bumps_options(self, event=None):
         from bumps.gui.fit_dialog import OpenFitOptions
@@ -983,9 +908,4 @@
         if uid is None: raise RuntimeError("no page to fit") # Should never happen
 
-        # Remember the user selected fit engine before the fit.  Simultaneous
-        # fitting may change the selected engine, so it needs to be restored
-        # when the fit is complete.
-        self._gui_engine = self._fit_engine
-
         sim_page_uid = getattr(self.sim_page, 'uid', None)
         batch_page_uid = getattr(self.batch_page, 'uid', None)
@@ -997,10 +917,4 @@
         else:
             fit_type = 'single'
-
-        # if constrained fit, don't use scipy leastsq directly
-        if fit_type == 'simultaneous':
-            if self._fit_engine not in ("park","bumps"):
-                self._on_change_engine(engine='bumps')
-
 
         fitter_list = []
@@ -1075,5 +989,5 @@
         wx.PostEvent(self.parent, StatusEvent(status=msg, type="progress"))
         
-        #Handler used for park engine displayed message
+        #Handler used for fit engine displayed message
         handler = ConsoleUpdate(parent=self.parent,
                                 manager=self,
@@ -1098,5 +1012,4 @@
                                  page_id=list_page_id,
                                  completefn=self._batch_fit_complete,
-                                 ftol=self.ftol,
                                  reset_flag=self.batch_reset_flag)
         else:
@@ -1108,6 +1021,5 @@
                                     page_id=list_page_id,
                                     updatefn=handler.update_fit,
-                                    completefn=self._fit_completed,
-                                    ftol=self.ftol)
+                                    completefn=self._fit_completed)
         #self.fit_thread_list[current_page_id] = calc_fit
         self.fit_thread_list[uid] = calc_fit
@@ -1568,7 +1480,4 @@
                                                       type="stop"))
         wx.PostEvent(self.result_panel, PlotResultEvent(result=result))
-        # reset fit_engine if changed by simul_fit
-        if self._fit_engine != self._gui_engine:
-            self._on_change_engine(self._gui_engine)
         self._update_fit_button(page_id)
         result = result[0]
@@ -1667,22 +1576,5 @@
                      StatusEvent(status=msg))
 
-    def _onset_engine_park(self, event):
-        """ 
-        set engine to park
-        """
-        self._on_change_engine('park')
-       
-    def _onset_engine_scipy(self, event):
-        """ 
-        set engine to scipy
-        """
-        self._on_change_engine('scipy')
-       
-    def _onset_engine_bumps(self, event):
-        """ 
-        set engine to bumps
-        """
-        self._on_change_engine('bumps')
-       
+
     def _on_slicer_event(self, event):
         """
@@ -1705,5 +1597,4 @@
         """
         name = event.GetEventObject().frame.GetTitle()
-        print "name", name
         for panel in self.slicer_panels:
             if panel.window_caption == name:
@@ -1717,33 +1608,4 @@
                 break
     
-    def _on_change_engine(self, engine='park'):
-        """
-        Allow to select the type of engine to perform fit
-        
-        :param engine: the key work of the engine
-        
-        """
-        ## saving fit engine name
-        self._fit_engine = engine
-        ## change menu item state
-        if engine == "park":
-            self.menu1.FindItemById(self.park_id).Check(True)
-            self.menu1.FindItemById(self.scipy_id).Check(False)
-            self.menu1.FindItemById(self.bumps_id).Check(False)
-        elif engine == "scipy":
-            self.menu1.FindItemById(self.park_id).Check(False)
-            self.menu1.FindItemById(self.scipy_id).Check(True)
-            self.menu1.FindItemById(self.bumps_id).Check(False)
-        else:
-            self.menu1.FindItemById(self.park_id).Check(False)
-            self.menu1.FindItemById(self.scipy_id).Check(False)
-            self.menu1.FindItemById(self.bumps_id).Check(True)
-        ## post a message to status bar
-        msg = "Engine set to: %s" % self._fit_engine
-        wx.PostEvent(self.parent,
-                     StatusEvent(status=msg))
-        ## send the current engine type to fitpanel
-        self.fit_panel._on_engine_change(name=self._fit_engine)
-
     def _on_model_panel(self, evt):
         """
Index: src/sas/perspectives/fitting/ftol_dialog.py
===================================================================
--- src/sas/perspectives/fitting/ftol_dialog.py	(revision b9a5f0eb8e8cbff8f8d934bbfa4ea18168141e13)
+++ src/sas/perspectives/fitting/ftol_dialog.py	(revision 386ffe12ba023b3eab0fbbb16a6f958ed7c099a3)
@@ -13,4 +13,5 @@
 #copyright 2009, University of Tennessee
 ################################################################################
+_ = """
 import wx
 import sys
@@ -103,2 +104,3 @@
                 return None
         return SAS_F_TOL
+"""
Index: src/sas/perspectives/fitting/simfitpage.py
===================================================================
--- src/sas/perspectives/fitting/simfitpage.py	(revision 794922220f2fb3b23dd08c648aabf87b4850596c)
+++ src/sas/perspectives/fitting/simfitpage.py	(revision 386ffe12ba023b3eab0fbbb16a6f958ed7c099a3)
@@ -153,10 +153,4 @@
         ## making sure all parameters content a constraint
         ## validity of the constraint expression is own by fit engine
-        if self.parent._manager._fit_engine not in ("park","bumps") and flag:
-            msg = "The FitEnging will be set to 'Park' fit engine\n"
-            msg += " for the simultaneous fit..."
-            #wx.MessageBox(msg, 'Info')
-            wx.PostEvent(self._manager.parent, StatusEvent(status=\
-                            "Fitting: %s" % msg, info="info"))
         if not self.batch_on and self.show_constraint.GetValue():
             if not self._set_constraint():
@@ -689,8 +683,6 @@
             text = " Fit in Parallel all Data set and model selected.\n"
         else:
-            text = "     Note: Park fitting engine will be used automatically. \n"
-            text += "     This page requires at least one FitPage with a data \n"
-            text += "       and a model set for fitting."
-            #text+= "automatically for more than 2 combinations checked"
+            text = " This page requires at least one FitPage with a data\n"
+            text = " and a model for fitting."
         text_hint = wx.StaticText(self, -1, text)
         
