diff --git a/System/Log/FastLogger.hs b/System/Log/FastLogger.hs
--- a/System/Log/FastLogger.hs
+++ b/System/Log/FastLogger.hs
@@ -25,12 +25,12 @@
 import Control.Concurrent (getNumCapabilities, myThreadId, threadCapability, takeMVar)
 import Control.Monad (when, replicateM)
 import Data.Array (Array, listArray, (!))
-import Data.IORef
 import GHC.IO.Device (close)
 import GHC.IO.FD (FD(..), openFile)
 import GHC.IO.IOMode (IOMode(..))
 import System.Log.FastLogger.File
 import System.Log.FastLogger.IO
+import System.Log.FastLogger.IORef
 import System.Log.FastLogger.LogStr
 import System.Log.FastLogger.Logger
 
@@ -94,15 +94,3 @@
     freeIt i = do
         let (Logger mbuf _ _) = arr ! i
         takeMVar mbuf >>= freeBuffer
-
-#if !MIN_VERSION_base(4,6,0)
--- | Strict version of 'atomicModifyIORef'.  This forces both the value stored
--- in the 'IORef' as well as the value returned.
-atomicModifyIORef' :: IORef a -> (a -> (a,b)) -> IO b
-atomicModifyIORef' ref f = do
-    c <- atomicModifyIORef ref
-            (\x -> let (a, b) = f x    -- Lazy application of "f"
-                    in (a, a `seq` b)) -- Lazy application of "seq"
-    -- The following forces "a `seq` b", so it also forces "f x".
-    c `seq` return c
-#endif
diff --git a/System/Log/FastLogger/IORef.hs b/System/Log/FastLogger/IORef.hs
new file mode 100644
--- /dev/null
+++ b/System/Log/FastLogger/IORef.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE CPP #-}
+
+module System.Log.FastLogger.IORef (
+       IORef
+     , newIORef
+     , readIORef
+     , atomicModifyIORef'
+     ) where
+
+import Data.IORef
+
+#if !MIN_VERSION_base(4, 6, 0)
+atomicModifyIORef' :: IORef a -> (a -> (a,b)) -> IO b
+atomicModifyIORef' ref f = do
+    b <- atomicModifyIORef ref
+            (\x -> let (a, b) = f x
+                    in (a, a `seq` b))
+    b `seq` return b
+#endif
diff --git a/System/Log/FastLogger/Logger.hs b/System/Log/FastLogger/Logger.hs
--- a/System/Log/FastLogger/Logger.hs
+++ b/System/Log/FastLogger/Logger.hs
@@ -9,11 +9,11 @@
 
 import Control.Concurrent (MVar, newMVar, withMVar)
 import Control.Monad (when)
-import Data.IORef
 import Foreign.Ptr (plusPtr)
 import GHC.IO.FD (FD, writeRawBufferPtr)
 import System.Log.FastLogger.IO
 import System.Log.FastLogger.LogStr
+import System.Log.FastLogger.IORef
 
 ----------------------------------------------------------------
 
diff --git a/fast-logger.cabal b/fast-logger.cabal
--- a/fast-logger.cabal
+++ b/fast-logger.cabal
@@ -1,5 +1,5 @@
 Name:                   fast-logger
-Version:                2.0.1
+Version:                2.0.2
 Author:                 Kazu Yamamoto <kazu@iij.ad.jp>
 Maintainer:             Kazu Yamamoto <kazu@iij.ad.jp>
 License:                BSD3
@@ -15,6 +15,7 @@
   Exposed-Modules:      System.Log.FastLogger
                         System.Log.FastLogger.File
                         System.Log.FastLogger.IO
+                        System.Log.FastLogger.IORef
                         System.Log.FastLogger.LogStr
                         System.Log.FastLogger.Logger
   Build-Depends:        base >= 4 && < 5
