diff --git a/Concurrent-Cache.cabal b/Concurrent-Cache.cabal
--- a/Concurrent-Cache.cabal
+++ b/Concurrent-Cache.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                Concurrent-Cache
-version:             0.1.0.0
+version:             0.1.0.1
 synopsis:            A Cached variable for IO functions.
 description:         This package allows for caching IO functions, either on a
                      timeout or designed to only fetch once.
diff --git a/Control/Concurrent/Cache.hs b/Control/Concurrent/Cache.hs
--- a/Control/Concurrent/Cache.hs
+++ b/Control/Concurrent/Cache.hs
@@ -11,7 +11,8 @@
       -- ^ @Cache@, the cache to fetch a value from
       -> IO (a)
 fetch (ReadOnceCachedData mvar) = go where
-  go = readMVar mvar >>= \cached -> do
+  go = do
+    cached <- readMVar mvar
     case cached of
       Left _ -> do
         modifyMVar_ mvar $ \cached' -> case cached' of
@@ -21,7 +22,8 @@
       Right value -> return value
 
 fetch (TimedCachedData (timeout, mvar)) = go where
-  go = readMVar mvar >>= \(thread,_,value) -> do
+  go = do
+    (thread,_,value) <- readMVar mvar
     case value of
       Nothing -> do
         modifyMVar_ mvar $ \mvar'@(threadId', action', value') -> case value' of
@@ -34,7 +36,6 @@
         modifyMVar_ mvar $ \(_, action', value') -> do
           newThreadId <- forkIO $ do
             threadDelay timeout
-            putStrLn "Deleting"
             modifyMVar_ mvar $ \(_, action'', _) -> return (Nothing, action'', Nothing)
           return (Just newThreadId, action', value')
         return value'
