diff --git a/NoTrace.cabal b/NoTrace.cabal
--- a/NoTrace.cabal
+++ b/NoTrace.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                NoTrace
-version:             0.1.0.0
+version:             0.2.0.0
 synopsis:            Remove all the functions come from Debug.Trace after debugging
 description:         This module introduce functions with identical types with functions in the Debug.Trace.
                      When completing the debug process,
@@ -25,11 +25,12 @@
   exposed-modules:     Debug.NoTrace
   -- other-modules:       
   hs-source-dirs:      src
-  build-depends:       base >=4.3 && <4.7
+  build-depends:       base >=4.5 && <4.7
 
 Test-Suite main
   type:                exitcode-stdio-1.0
   main-is:             Main.hs
   hs-source-dirs:      test
                      , src
-  build-depends:       base >=4.3 && <4.7
+  build-depends:       base >=4.5 && <4.7
+  ghc-options:         -O2 -prof
diff --git a/src/Debug/NoTrace.hs b/src/Debug/NoTrace.hs
--- a/src/Debug/NoTrace.hs
+++ b/src/Debug/NoTrace.hs
@@ -38,3 +38,15 @@
 
 traceShow :: Show a => a -> b -> b
 traceShow _ = id
+
+traceStack :: String -> a -> a
+traceStack _ = id
+
+traceIO :: String -> IO ()
+traceIO _ = return ()
+
+traceEvent :: String -> a -> a
+traceEvent _ = id
+
+traceEventIO :: String -> IO ()
+traceEventIO _ = return ()
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -5,9 +5,9 @@
 fib :: Int -> Int
 fib 0 = 1
 fib 1 = 1
-fib n = "fib " `trace` n `traceShow` fib (n - 1) + fib (n - 2)
+fib n = traceStack "FIB" $ trace "fib " $ n `traceShow` fib (n - 1) + fib (n - 2)
 
 main = do
-  putTraceMsg "begin"
+  traceIO "begin"
   putStrLn $ show (fib 5)
-  putTraceMsg "end"
+  traceIO "end"
