Index: sansview/perspectives/fitting/basepage.py
===================================================================
--- sansview/perspectives/fitting/basepage.py	(revision d2d0cfdfbac3d92eefe5056f8af99ce891300de5)
+++ sansview/perspectives/fitting/basepage.py	(revision c477b310889b106862984c80a816386ea5e0a3e0)
@@ -343,14 +343,5 @@
         self.state.model = self.model.clone()
         new_state = self.state.clone()
-        ## save checkbutton state and txtcrtl values
-        self._copy_parameters_state(self.orientation_params,
-                                     self.state.orientation_params)
-        self._copy_parameters_state(self.orientation_params_disp,
-                                     self.state.orientation_params_disp)
-        self._copy_parameters_state(self.parameters, self.state.parameters)
-       
-        self._copy_parameters_state(self.fittable_param, self.state.fittable_param)
-        self._copy_parameters_state(self.fixed_param, self.state.fixed_param)
-        
+        new_state.enable2D = copy.deepcopy(self.enable2D)
         ##Add model state on context menu
         self.number_saved_state += 1
@@ -451,5 +442,7 @@
             self.state.model = self.model.clone()
         self.state.save_data(self.data)
-    
+        
+        self.state.enable2D = copy.deepcopy(self.enable2D)
+        
         if hasattr(self,"cb1"):
             self.state.cb1= self.cb1.GetValue()
@@ -467,4 +460,18 @@
         if hasattr(self,"disp_box"):
             self.state.disp_box = self.disp_box.GetCurrentSelection()
+            if len(self.disp_cb_dict)>0:
+                for k , v in self.disp_cb_dict.iteritems():
+                    if v ==None :
+                        self.state.disp_cb_dict[k]= v
+                    else:
+                        try:
+                            self.state.disp_cb_dict[k]=v.GetValue()
+                        except:
+                            self.state.disp_cb_dict[k]= None
+           
+            if len(self._disp_obj_dict)>0:
+                for k , v in self._disp_obj_dict.iteritems():
+                    self.state._disp_obj_dict[k]= v
+           
         self._save_plotting_range()
         
@@ -503,4 +510,14 @@
         self._set_model_sizer_selection( self.model )
         self.set_model_param_sizer(self.model)
+      
+        self.enable2D= state.enable2D
+        self.state.enable2D= state.enable2D
+       
+        if hasattr(self,"model_view"):
+            if not self.enable2D:
+                self.model_view.Enable()
+            else:
+                self.model_view.Disable()
+            
         if hasattr(self, "cb1"):   
             self.cb1.SetValue(self.state.cb1)
@@ -510,4 +527,14 @@
         if hasattr(self, "disp_box"):
             self.disp_box.SetSelection(self.state.disp_box)  
+            
+            self.disp_cb_dict = {}
+            for k,v in self.state.disp_cb_dict.iteritems():
+                self.disp_cb_dict = copy.deepcopy(state.disp_cb_dict) 
+                self.state.disp_cb_dict = copy.deepcopy(state.disp_cb_dict) 
+                
+            self._disp_obj_dict={}
+            for k , v in self.state._disp_obj_dict.iteritems():
+                self._disp_obj_dict[k]=v
+      
         self._set_dipers_Param(event=None)
         ##plotting range restore    
@@ -529,9 +556,9 @@
         self._reset_parameters_state(self.fittable_param,state.fittable_param)
         self._reset_parameters_state(self.fixed_param,state.fixed_param)
-     
+        self._onparamEnter_helper()
         ## reset context menu items
         self._reset_context_menu()
         ## draw the model with previous parameters value
-        self._draw_model()
+        #self._draw_model()
         
    
@@ -634,4 +661,5 @@
             if is_modified:
                 self._draw_model() 
+                self.save_current_state()
                 
                 
Index: sansview/perspectives/fitting/fitpage.py
===================================================================
--- sansview/perspectives/fitting/fitpage.py	(revision d2d0cfdfbac3d92eefe5056f8af99ce891300de5)
+++ sansview/perspectives/fitting/fitpage.py	(revision c477b310889b106862984c80a816386ea5e0a3e0)
@@ -250,4 +250,5 @@
             self._disp_obj_dict[item] = disp_model
             self.model.set_dispersion(item, disp_model)
+            self.state._disp_obj_dict[item]= disp_model
 
         ix=0
@@ -436,5 +437,5 @@
                                                      ,None,None, None, None,None])
    
-                                  
+        self.state.disp_cb_dict = copy.deepcopy(self.disp_cb_dict)                         
         wx.PostEvent(self.parent, StatusEvent(status=\
                         " Selected Distribution: Gaussian"))   
Index: sansview/perspectives/fitting/modelpage.py
===================================================================
--- sansview/perspectives/fitting/modelpage.py	(revision a7fe3e3f56e354d6a8a2f6866ce2f937bdc4431d)
+++ sansview/perspectives/fitting/modelpage.py	(revision c477b310889b106862984c80a816386ea5e0a3e0)
@@ -137,4 +137,7 @@
             self._disp_obj_dict[item] = disp_model
             self.model.set_dispersion(item, disp_model)
+            self.state._disp_obj_dict[item]= disp_model
+            
+            
         ix=0
         iy=1
@@ -309,5 +312,5 @@
                     if item[2]!=None:
                         item[2].Enable()
-                
+        self.state.enable2D =  copy.deepcopy(self.enable2D)
     
                 
@@ -546,5 +549,5 @@
             else:
                 self.text2_4.Hide()
-    
+        self.state.disp_cb_dict = copy.deepcopy(self.disp_cb_dict) 
         boxsizer1.Add(sizer)
         self.sizer3.Add(boxsizer1,0, wx.EXPAND | wx.ALL, 10)
Index: sansview/perspectives/fitting/pagestate.py
===================================================================
--- sansview/perspectives/fitting/pagestate.py	(revision fc6ea431d80080e297f46ff0a75e52e121b80e1b)
+++ sansview/perspectives/fitting/pagestate.py	(revision c477b310889b106862984c80a816386ea5e0a3e0)
@@ -48,4 +48,6 @@
         #list of dispersion paramaters
         self.disp_list =[]
+        self._disp_obj_dict={}
+        self.disp_cb_dict={}
         #contains link between a model and selected parameters to fit 
         self.param_toFit =[]
@@ -70,4 +72,6 @@
         self.enable_disp= False
         self.disable_disp= True
+        ## plot 2D data
+        self.enable2D= False
         ## state of selected all check button
         self.cb1 = False
@@ -92,4 +96,5 @@
         obj.event_owner = self.event_owner
         
+        obj.enable2D = copy.deepcopy(self.enable2D)
         obj.parameters = copy.deepcopy(self.parameters)
         obj.fixed_param = copy.deepcopy(self.fixed_param)
@@ -101,4 +106,8 @@
         obj.disable_disp = copy.deepcopy(self.disable_disp)
         
+        if len(self._disp_obj_dict)>0:
+            for k , v in self._disp_obj_dict.iteritems():
+                obj._disp_obj_dict[k]= v
+        obj.disp_cb_dict = copy.deepcopy(self.disp_cb_dict)
         obj.enable_smearer = copy.deepcopy(self.enable_smearer)
         obj.disable_smearer = copy.deepcopy(self.disable_smearer)
