diff --git a/hxournal.cabal b/hxournal.cabal
--- a/hxournal.cabal
+++ b/hxournal.cabal
@@ -1,5 +1,5 @@
 Name:		hxournal
-Version:	0.6.0
+Version:	0.6.0.0
 Synopsis:	A pen notetaking program written in haskell 
 Description: 	notetaking program written in haskell and gtk2hs
 Homepage:       http://ianwookim.org/hxournal
@@ -76,7 +76,7 @@
                    Application.HXournal.ModelAction.Select
                    Application.HXournal.ModelAction.File
                    Application.HXournal.ModelAction.Window
-                   Application.HXournal.ModelAction.Common
+                   -- Application.HXournal.ModelAction.Common
                    Application.HXournal.Coroutine.Callback
                    Application.HXournal.GUI
                    Application.HXournal.GUI.Menu
@@ -93,6 +93,7 @@
                    Application.HXournal.Coroutine.File
                    Application.HXournal.Coroutine.Mode
                    Application.HXournal.Coroutine.Window
+                   Application.HXournal.Coroutine.Commit
                    Application.HXournal.Util
                    Application.HXournal.Util.Verbatim 
                    Application.HXournal.Draw
diff --git a/lib/Application/HXournal/Coroutine/Commit.hs b/lib/Application/HXournal/Coroutine/Commit.hs
new file mode 100644
--- /dev/null
+++ b/lib/Application/HXournal/Coroutine/Commit.hs
@@ -0,0 +1,17 @@
+module Application.HXournal.Coroutine.Commit where
+
+import Application.HXournal.Type.XournalState 
+import Application.HXournal.Type.Coroutine
+import Application.HXournal.Type.Event
+import Application.HXournal.ModelAction.File
+
+import Data.Label
+import Control.Monad.Trans
+import Application.HXournal.Accessor
+
+commit :: HXournalState -> Iteratee MyEvent XournalStateIO ()
+commit xstate = do 
+  let ui = get gtkUIManager xstate
+  liftIO $ toggleSave ui True
+  let xstate' = set isSaved False xstate
+  putSt xstate' 
diff --git a/lib/Application/HXournal/Coroutine/Eraser.hs b/lib/Application/HXournal/Coroutine/Eraser.hs
--- a/lib/Application/HXournal/Coroutine/Eraser.hs
+++ b/lib/Application/HXournal/Coroutine/Eraser.hs
@@ -9,8 +9,8 @@
 import Application.HXournal.Draw
 import Application.HXournal.Coroutine.EventConnect
 import Application.HXournal.Coroutine.Draw
+import Application.HXournal.Coroutine.Commit
 import Application.HXournal.Accessor
-import Application.HXournal.ModelAction.Common
 import Application.HXournal.ModelAction.Page
 import Application.HXournal.ModelAction.Eraser
 import Data.Xournal.Simple
@@ -72,10 +72,8 @@
               newpagebbox = currpage { glayers = IM.adjust (const newlayerbbox) 0 (glayers currpage) } 
               newxojbbox = currxoj { gpages= IM.adjust (const newpagebbox) pgnum (gpages currxoj) }
               newxojstate = ViewAppendState newxojbbox
-              xstate' = commitChange
-                        . set xournalstate newxojstate 
-                        . updatePageAll newxojstate $ xstate 
-          putSt xstate' 
+          commit . set xournalstate newxojstate 
+                 . updatePageAll newxojstate $ xstate 
           case maybebbox of 
             Just bbox -> invalidateDrawBBox cid bbox
             Nothing -> return ()
diff --git a/lib/Application/HXournal/Coroutine/File.hs b/lib/Application/HXournal/Coroutine/File.hs
--- a/lib/Application/HXournal/Coroutine/File.hs
+++ b/lib/Application/HXournal/Coroutine/File.hs
@@ -4,10 +4,10 @@
 import Application.HXournal.Type.Coroutine
 import Application.HXournal.Type.XournalState
 import Application.HXournal.Accessor
-import Application.HXournal.ModelAction.Common
-import Application.HXournal.ModelAction.File 
 import Application.HXournal.Coroutine.Draw
+import Application.HXournal.Coroutine.Commit
 import Application.HXournal.ModelAction.Window
+import Application.HXournal.ModelAction.File
 import Text.Xournal.Builder 
 import Control.Monad.Trans
 import Control.Applicative
@@ -43,7 +43,7 @@
 fileNew = do  
     xstate <- getSt
     xstate' <- liftIO $ getFileContent Nothing xstate 
-    putSt . commitChange $ xstate' 
+    commit xstate' 
     liftIO $ setTitleFromFileName xstate'
     invalidateAll 
 
@@ -60,6 +60,8 @@
               SelectState txoj -> Xournal <$> gselectTitle <*> gToList . fmap (toPage gToBackground) . gselectAll $ txoj 
         liftIO . L.writeFile filename . builder $ xoj
         putSt . set isSaved True $ xstate 
+        let ui = get gtkUIManager xstate
+        liftIO $ toggleSave ui False
 
 fileOpen :: Iteratee MyEvent XournalStateIO ()
 fileOpen = do 
@@ -114,7 +116,9 @@
                                             $ xojmap 
                   SelectState txoj -> Xournal <$> gselectTitle <*> gToList . fmap (toPage gToBackground) . gselectAll $ txoj 
             liftIO . L.writeFile filename . builder $ xoj
-            putSt . set isSaved True $ xstateNew             
+            putSt . set isSaved True $ xstateNew    
+            let ui = get gtkUIManager xstateNew
+            liftIO $ toggleSave ui False
             liftIO $ setTitleFromFileName xstateNew 
         liftIO $ widgetDestroy dialog
       ResponseCancel -> liftIO $ widgetDestroy dialog
@@ -144,7 +148,7 @@
             flip (maybe (return ())) mxoj $ \xoj -> do 
               xstateNew <- return . set currFileName Nothing 
                            =<< (liftIO $ constructNewHXournalStateFromXournal xoj xstate)
-              putSt . commitChange $ xstateNew 
+              commit xstateNew 
               liftIO $ setTitleFromFileName xstateNew             
               invalidateAll  
         liftIO $ widgetDestroy dialog
diff --git a/lib/Application/HXournal/Coroutine/Pen.hs b/lib/Application/HXournal/Coroutine/Pen.hs
--- a/lib/Application/HXournal/Coroutine/Pen.hs
+++ b/lib/Application/HXournal/Coroutine/Pen.hs
@@ -9,8 +9,8 @@
 import Application.HXournal.Type.XournalState
 import Application.HXournal.Coroutine.Draw
 import Application.HXournal.Coroutine.EventConnect
+import Application.HXournal.Coroutine.Commit
 import Application.HXournal.Accessor
-import Application.HXournal.ModelAction.Common
 import Application.HXournal.ModelAction.Pen
 import Application.HXournal.ModelAction.Page
 import Application.HXournal.Draw
@@ -43,11 +43,10 @@
     pdraw <-penProcess cid geometry connidmove connidup (empty |> (x,y)) (x,y) 
     let (newxoj,bbox) = addPDraw pinfo currxoj pagenum pdraw
         bbox' = inflate bbox (get (penWidth.penInfo) xstate) 
-        xstate' = commitChange
-                  . set xournalstate (ViewAppendState newxoj) 
+        xstate' = set xournalstate (ViewAppendState newxoj) 
                   . updatePageAll (ViewAppendState newxoj)
                   $ xstate
-    putSt xstate'
+    commit xstate'
     mapM_ (flip invalidateInBBox bbox') . filter (/=cid) $ otherCanvas xstate' 
 
 
diff --git a/lib/Application/HXournal/Coroutine/Select.hs b/lib/Application/HXournal/Coroutine/Select.hs
--- a/lib/Application/HXournal/Coroutine/Select.hs
+++ b/lib/Application/HXournal/Coroutine/Select.hs
@@ -13,7 +13,7 @@
 import Application.HXournal.Coroutine.EventConnect
 import Application.HXournal.Coroutine.Draw
 import Application.HXournal.Coroutine.Mode
-import Application.HXournal.ModelAction.Common
+import Application.HXournal.Coroutine.Commit
 import Application.HXournal.ModelAction.Page
 import Application.HXournal.ModelAction.Select
 import Control.Monad.Trans
@@ -155,8 +155,7 @@
         Right tpage -> do 
           let newtpage = changeSelectionByOffset tpage offset
               newtxoj = updateTempXournalSelect txoj newtpage pagenum 
-          putSt  . commitChange
-                 . set xournalstate (SelectState newtxoj)
+          commit . set xournalstate (SelectState newtxoj)
                  . updatePageAll (SelectState newtxoj) 
                  $ xstate 
         Left _ -> error "this is impossible, in moveSelectRectangle" 
@@ -178,12 +177,10 @@
           oldlayers = glayers tpage
           newpage = tpage { glayers = oldlayers { gselectedlayer = GLayer (TEitherAlterHitted newlayer) } } 
           newtxoj = updateTempXournalSelect txoj newpage n          
-          -- newxstate =  xstate
-          newxstate = commitChange
-                      . updatePageAll (SelectState newtxoj) 
+          newxstate = updatePageAll (SelectState newtxoj) 
                       . set xournalstate (SelectState newtxoj)
                       $ xstate 
-      putSt newxstate 
+      commit newxstate 
       let ui = get gtkUIManager newxstate
       liftIO $ toggleCutCopyDelete ui False 
       invalidateAll 
@@ -241,11 +238,10 @@
                             :- Empty )
       tpage' = tpage { glayers = ls { gselectedlayer = newlayerselect } } 
       txoj' = updateTempXournalSelect txoj tpage' pagenum 
-      xstate' = commitChange
-                . updatePageAll (SelectState txoj') 
+      xstate' = updatePageAll (SelectState txoj') 
                 . set xournalstate (SelectState txoj') 
                 $ xstate 
-  putSt xstate' 
+  commit xstate' 
   let ui = get gtkUIManager xstate' 
   liftIO $ toggleCutCopyDelete ui True
   invalidateAll 
@@ -265,12 +261,9 @@
           ls = glayers tpage 
           newpage = tpage { glayers = ls { gselectedlayer = GLayer (TEitherAlterHitted newlayer) }} 
           newtxoj = updateTempXournalSelect txoj newpage n
-          -- newxstate = 
-          newxstate = commitChange
-                       . updatePageAll (SelectState newtxoj) 
-                       . set xournalstate (SelectState newtxoj) 
-                       $ xstate                       
-      putSt newxstate 
+      commit . updatePageAll (SelectState newtxoj) 
+             . set xournalstate (SelectState newtxoj) 
+             $ xstate                       
       invalidateAll 
           
 selectPenWidthChanged :: Double ->  Iteratee MyEvent XournalStateIO () 
@@ -288,11 +281,8 @@
           ls = glayers tpage 
           newpage = tpage { glayers = ls { gselectedlayer = GLayer (TEitherAlterHitted newlayer) }} 
           newtxoj = updateTempXournalSelect txoj newpage n          
-          -- newxstate =  xstate
-          newxstate = commitChange
-                       . updatePageAll (SelectState newtxoj) 
-                       . set xournalstate (SelectState newtxoj)
-                       $ xstate 
-      putSt newxstate 
+      commit . updatePageAll (SelectState newtxoj) 
+             . set xournalstate (SelectState newtxoj)
+             $ xstate 
       invalidateAll 
 
diff --git a/lib/Application/HXournal/ModelAction/Common.hs b/lib/Application/HXournal/ModelAction/Common.hs
deleted file mode 100644
--- a/lib/Application/HXournal/ModelAction/Common.hs
+++ /dev/null
@@ -1,11 +0,0 @@
-module Application.HXournal.ModelAction.Common where
-
-import Application.HXournal.Type.XournalState
-
-import Control.Category
-import Data.Label 
-import Prelude hiding ((.),id)
-
-commitChange :: HXournalState -> HXournalState
-commitChange old = set isSaved False old 
-
diff --git a/lib/Application/HXournal/ModelAction/File.hs b/lib/Application/HXournal/ModelAction/File.hs
--- a/lib/Application/HXournal/ModelAction/File.hs
+++ b/lib/Application/HXournal/ModelAction/File.hs
@@ -7,6 +7,7 @@
 import Application.HXournal.ModelAction.Page
 import qualified Text.Xournal.Parse as P
 import qualified Data.IntMap as M
+
 import Control.Category
 import Data.Label
 import Prelude hiding ((.),id)
@@ -18,6 +19,8 @@
 import Graphics.Xournal.Render.BBoxMapPDF
 import Graphics.Xournal.Render.PDFBackground
 
+import Graphics.UI.Gtk hiding (get,set)
+
 import qualified Data.ByteString as B
 import qualified Data.ByteString.Char8 as C
 
@@ -97,3 +100,11 @@
                 in Page dim bkg [emptyLayer]
                    
                    
+toggleSave :: UIManager -> Bool -> IO ()
+toggleSave ui b = do 
+    agr <- uiManagerGetActionGroups ui >>= \x -> 
+      case x of
+        [] -> error "No action group?"
+        y:_ -> return y
+    Just savea <- actionGroupGetAction agr "SAVEA"
+    actionSetSensitive savea b
