Index: sansview/perspectives/fitting/basepage.py
===================================================================
--- sansview/perspectives/fitting/basepage.py	(revision 3595309dc1a5fc4ce99ceb550effd2fe269eddf9)
+++ sansview/perspectives/fitting/basepage.py	(revision 3b9e0231871991c172eecf17561c194a02ec66db)
@@ -302,4 +302,5 @@
         # Go through the list of dispersion check boxes to identify which one has changed 
         for p in self.disp_cb_dict:
+            self.state.disp_cb_dict[p]=  self.disp_cb_dict[p].GetValue()
             # Catch which one of the box was just checked or unchecked.
             if event.GetEventObject() == self.disp_cb_dict[p]:              
@@ -349,6 +350,6 @@
                     self.state.values=[]
                     self.state.weights=[]
-                    self.state.values = self.values
-                    self.state.weights = self.weights
+                    self.state.values = copy.deepcopy(self.values)
+                    self.state.weights = copy.deepcopy(self.weights)
                     # Set the new model as the dispersion object for the selected parameter
                     self.model.set_dispersion(p, disp_model)
@@ -366,13 +367,10 @@
               
                 ## Redraw the model
-               
                 self._draw_model()
-                ## post state to fit panel
-                
-                self.state.disp_cb_dict[p]=  self.disp_cb_dict[p].GetValue()
-                #event = PageInfoEvent(page = self)
-                #wx.PostEvent(self.parent, event)
-        return
-    
+        
+        ## post state to fit panel
+        event = PageInfoEvent(page = self)
+        wx.PostEvent(self.parent, event)
+       
     
     def onResetModel(self, event):
@@ -621,16 +619,36 @@
         
         if hasattr(self, "disp_box"):
-            self.disp_box.SetSelection(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_box.SetSelection(state.disp_box) 
+            n= self.disp_box.GetCurrentSelection()
+            dispersity= self.disp_box.GetClientData(n)
+            name= dispersity.__name__      
+            self._set_dipers_Param(event=None)
+            
+            #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)
+            if name=="ArrayDispersion":
+                for item in self.disp_cb_dict.keys():
+                    print "array dispersion",state.values, state.weights
+                    self.disp_cb_dict[item].SetValue(state.disp_cb_dict[item])
+                    # Create the dispersion objects
+                    from sans.models.dispersion_models import ArrayDispersion
+                    disp_model = ArrayDispersion()
+                    disp_model.set_weights(state.values, state.weights)
+                   
+                    self._disp_obj_dict[item] = disp_model
+                    # Set the new model as the dispersion object for the selected parameter
+                    self.model.set_dispersion(item, disp_model)
+                   
+                    #self.model._persistency_dict = {}
+                    #self.model._persistency_dict[item] = [state.values, state.weights]
+                    
+            else:
+                self._disp_obj_dict={}
+                for k , v in self.state._disp_obj_dict.iteritems():
+                    self._disp_obj_dict[k]=v
+    
         ##plotting range restore    
         self._reset_plotting_range(state)
@@ -649,6 +667,5 @@
         self._reset_parameters_state(self.fittable_param,state.fittable_param)
         self._reset_parameters_state(self.fixed_param,state.fixed_param)
-        
-        
+    
         ## draw the model with previous parameters value
         self._onparamEnter_helper()
@@ -1187,7 +1204,5 @@
         self.state.model =self.model
         self.disp_list =self.model.getDispParamList()
-        self.state.disp_list = self.disp_list
-        self.state.structurecombobox =self.structurebox.GetCurrentSelection()
-        self.state.formfactorcombobox = self.formfactorbox.GetCurrentSelection()
+        self.state.disp_list = self.disp_list,
         self.sizer4_4.Layout()
         self.sizer4.Layout()
@@ -1409,5 +1424,10 @@
             self._set_sizer_arraydispersion()
             
+            
         self.state.disp_box= n
+        
+        self._undo.Enable(True)
+        event = PageInfoEvent(page = self)
+        wx.PostEvent(self.parent, event)
         
         self.sizer4_4.Layout()
@@ -1447,5 +1467,6 @@
             ix+=1 
             self.disp_cb_dict[p] = wx.CheckBox(self, -1, p, (10, 10))
-            
+            self.state.disp_cb_dict[p]=  self.disp_cb_dict[p].GetValue()
+            print "went here======>",self.disp_cb_dict
             wx.EVT_CHECKBOX(self, self.disp_cb_dict[p].GetId(), self.select_disp_angle)
             self.sizer4_4.Add(self.disp_cb_dict[p], (iy, ix), (1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0)
@@ -1462,5 +1483,9 @@
         self._copy_parameters_state(self.fittable_param, self.state.fittable_param)
         self._copy_parameters_state(self.fixed_param, self.state.fixed_param)
-
+        
+        ## post state to fit panel
+        event = PageInfoEvent(page = self)
+        wx.PostEvent(self.parent, event)
+        
 
     def _set_range_sizer(self, title, object1=None,object=None):
Index: sansview/perspectives/fitting/fitpage.py
===================================================================
--- sansview/perspectives/fitting/fitpage.py	(revision 3595309dc1a5fc4ce99ceb550effd2fe269eddf9)
+++ sansview/perspectives/fitting/fitpage.py	(revision 3b9e0231871991c172eecf17561c194a02ec66db)
@@ -549,4 +549,9 @@
         self.state.enable_disp = self.enable_disp.GetValue()
         self.state.disable_disp = self.disable_disp.GetValue()
+        
+        self.state.structurecombobox = self.structurebox.GetCurrentSelection()
+        self.state.formfactorcombobox = self.formfactorbox.GetCurrentSelection()
+        #print "_on_select_model",self.state.structurecombobox,self.state.formfactorcombobox 
+       
         if event !=None:
             self._undo.Enable(True)
Index: sansview/perspectives/fitting/fitpanel.py
===================================================================
--- sansview/perspectives/fitting/fitpanel.py	(revision 3595309dc1a5fc4ce99ceb550effd2fe269eddf9)
+++ sansview/perspectives/fitting/fitpanel.py	(revision 3b9e0231871991c172eecf17561c194a02ec66db)
@@ -424,4 +424,5 @@
                 state = None
                 page._redo.Enable(False)
+                page._redo.Enable(True)
             else:
                 state = self.fit_page_name[page.window_name].getNextItem()
Index: sansview/perspectives/fitting/modelpage.py
===================================================================
--- sansview/perspectives/fitting/modelpage.py	(revision 3595309dc1a5fc4ce99ceb550effd2fe269eddf9)
+++ sansview/perspectives/fitting/modelpage.py	(revision 3b9e0231871991c172eecf17561c194a02ec66db)
@@ -348,4 +348,8 @@
         if self.model !=None:
             self._draw_model()
+        self.state.structurecombobox = self.structurebox.GetCurrentSelection()
+        self.state.formfactorcombobox = self.formfactorbox.GetCurrentSelection()
+        #print "_on_select_model",self.state.structurecombobox,self.state.formfactorcombobox 
+       
         ## post state to fit panel
         self._undo.Enable(True)
Index: sansview/perspectives/fitting/models.py
===================================================================
--- sansview/perspectives/fitting/models.py	(revision 376916c3539d404b91d40c03085a6603a86cae42)
+++ sansview/perspectives/fitting/models.py	(revision 3b9e0231871991c172eecf17561c194a02ec66db)
@@ -126,4 +126,8 @@
         self.shape_list.append(CylinderModel)
         self.multiplication_factor.append(CylinderModel)
+        
+        #from sans.models.ParallelepipedModel import ParallelepipedModel
+        #self.shape_list.append(ParallelepipedModel)
+        #self.multiplication_factor.append(ParallelepipedModel)
         
         from sans.models.CoreShellModel import CoreShellModel
Index: sansview/perspectives/fitting/pagestate.py
===================================================================
--- sansview/perspectives/fitting/pagestate.py	(revision 240b99667ef276450071f502cdb1331ccb27714e)
+++ sansview/perspectives/fitting/pagestate.py	(revision 3b9e0231871991c172eecf17561c194a02ec66db)
@@ -65,6 +65,6 @@
         self.saved_states={}
         ## save selection of combobox
-        self.formfactorcombobox = ""
-        self.structurecombobox  = ""
+        self.formfactorcombobox = None
+        self.structurecombobox  = None
         ## radio box to select type of model
         self.shape_rbutton = False
