Index: sansview/perspectives/fitting/basepage.py
===================================================================
--- sansview/perspectives/fitting/basepage.py	(revision 7437880dff0233ffbc079256a9247d1ec30991eb)
+++ sansview/perspectives/fitting/basepage.py	(revision 1b69256054476c92effbefde954de5e503d2b9b0)
@@ -72,6 +72,6 @@
         self.qmax_x= 0.13
         self.num_points= 50
+        
         ## Create memento to save the current state
-        
         self.state= PageState(parent= self.parent,model=self.model, data=self.data)
         ## save customized array
@@ -82,9 +82,23 @@
         ## dictionary of saved state
         self.saved_states={}
-        self.slicerpop = wx.Menu()
+        
+        ## Create context menu for page
+        self.popUpMenu = wx.Menu()
+        id = wx.NewId()
+        self._undo = wx.MenuItem(self.popUpMenu,id, "Undo","cancel the previous action")
+        self.popUpMenu.AppendItem(self._undo)
+        self._undo.Enable(False)
+        wx.EVT_MENU(self, id, self.onUndo)
+        
+        id = wx.NewId()
+        self._redo = wx.MenuItem(self.popUpMenu,id,"Redo"," Restore the previous action")
+        self.popUpMenu.AppendItem(self._redo)
+        self._redo.Enable(False)
+        wx.EVT_MENU(self, id, self.onRedo)
+        
         ## Default locations
         self._default_save_location = os.getcwd()     
         ## save initial state on context menu
-        self.onSave(event=None)
+        #self.onSave(event=None)
         self.Bind(wx.EVT_CONTEXT_MENU, self.onContextMenu)
         
@@ -107,8 +121,20 @@
         pos = event.GetPosition()
         pos = self.ScreenToClient(pos)
-        #TODO: why is the state menu called "slicerpop"?
-        self.PopupMenu(self.slicerpop, pos) 
-        
-        
+       
+        self.PopupMenu(self.popUpMenu, pos) 
+      
+        
+        
+    def onUndo(self, event):
+        """
+            Cancel the previous action
+        """
+        print "enable undo"
+        
+    def onRedo(self, event):
+        """
+            Restore the previous action cancelled 
+        """
+        print "enable redo"
         
     def define_page_structure(self):
@@ -345,9 +371,9 @@
         """
         ## post help message for the selected model 
-        msg = self.slicerpop.GetHelpString(event.GetId())
+        msg = self.popUpMenu.GetHelpString(event.GetId())
         msg +=" reloaded"
         wx.PostEvent(self.parent.parent, StatusEvent(status = msg ))
         
-        name= self.slicerpop.GetLabel(event.GetId())
+        name= self.popUpMenu.GetLabel(event.GetId())
         if name in self.saved_states.keys():
             previous_state = self.saved_states[name]
@@ -390,5 +416,5 @@
         
         id = wx.NewId()
-        self.slicerpop.Append(id,name,str(msg))
+        self.popUpMenu.Append(id,name,str(msg))
         wx.EVT_MENU(self, id, self.onResetModel)
         
@@ -581,5 +607,5 @@
             n = self.disp_box.GetCurrentSelection()
             dispersity= self.disp_box.GetClientData(n)
-           
+            
             self._set_dipers_Param(event=None)
             name= dispersity.__name__
@@ -673,5 +699,5 @@
             ## Add item in the context menu
             id = wx.NewId()
-            self.slicerpop.Append(id,name, 'Save model and state %g'%self.number_saved_state)
+            self.popUpMenu.Append(id,name, 'Save model and state %g'%self.number_saved_state)
             wx.EVT_MENU(self, id, self.onResetModel)
     
@@ -703,4 +729,5 @@
              use : _check_value_enter 
         """
+        self._undo.Enable(True)
         if self.model !=None:
             
@@ -1173,4 +1200,5 @@
         """
         tcrtl= event.GetEventObject()
+        
         if check_float(tcrtl):
             self._onparamEnter_helper()
Index: sansview/perspectives/fitting/fitpanel.py
===================================================================
--- sansview/perspectives/fitting/fitpanel.py	(revision 7437880dff0233ffbc079256a9247d1ec30991eb)
+++ sansview/perspectives/fitting/fitpanel.py	(revision 1b69256054476c92effbefde954de5e503d2b9b0)
@@ -8,4 +8,22 @@
 import basepage
 
+class StateContainer(object):
+    """
+        Contains all saved state of a given page.
+        Provide position of the current state of a page, the first save state
+        and the last state for a given page. 
+        Allow easy unoding or redo for a given page  
+    """
+    def __init__(self, page=None):
+        """
+            Initialize variable
+        """
+        self.page = page
+        self.begin =0
+        self.current=0
+        self.end=0
+        
+        
+        
 class PageInfo(object):
     """
