diff --git a/global-config.cabal b/global-config.cabal
--- a/global-config.cabal
+++ b/global-config.cabal
@@ -1,5 +1,5 @@
 name:           global-config
-version:        0.1.0
+version:        0.2.0
 cabal-version:  >= 1.8
 build-type:     Simple
 author:         Alexander Dorofeev <aka.spin@gmail.com>spin
diff --git a/src/Data/Global/Config.hs b/src/Data/Global/Config.hs
--- a/src/Data/Global/Config.hs
+++ b/src/Data/Global/Config.hs
@@ -20,23 +20,24 @@
 -- > instance Default Config
 -- >    def = Config 0 False
 -- > 
--- > instance GlobalConfig Config
--- > 
+-- > instance GlobalConfig Config where
+-- >    onSetConfig = print
+-- >    
 -- > main :: IO ()
 -- > main = do
 -- >    -- try to read unitialized config
 -- >    c1 <- getConfig 
--- >    print (c1 :: Config)
 -- >    -- Config {configInt=0, configBool=False}
 -- >    
 -- >    -- set config and read it
 -- >    setConfig $ Config 1 True
+-- >    -- Config {configInt=1, configBool=True}
 -- >    c2 <- getConfig
 -- >    print (c1 :: Config)
 -- >    -- Config {configInt=1, configBool=True}
 
 module Data.Global.Config (
-    GlobalConfig (setConfig, getConfig)
+    GlobalConfig (setConfig, onSetConfig, getConfig)
 ) where
 
 import Data.Typeable (Typeable)
@@ -48,7 +49,12 @@
 class (Default a, Typeable a) => GlobalConfig a where
     -- | Init global config
     setConfig :: a -> IO ()
-    setConfig e = stubConfig `writeIORef` e 
+    setConfig e = do
+        stubConfig `writeIORef` e
+        onSetConfig e 
+    
+    -- | Set config handler
+    onSetConfig :: a -> IO ()
     
     -- | Get global config
     getConfig :: IO a
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -55,7 +55,8 @@
 instance Default Config where
     def = Config 0 ""
     
-instance GlobalConfig Config
+instance GlobalConfig Config where
+    onSetConfig = print
 
     
     
