diff --git a/library/Potoki/Core/Fetch.hs b/library/Potoki/Core/Fetch.hs
--- a/library/Potoki/Core/Fetch.hs
+++ b/library/Potoki/Core/Fetch.hs
@@ -99,39 +99,44 @@
 
 {-# INLINABLE firstCachingSecond #-}
 firstCachingSecond :: IORef b -> Fetch (a, b) -> Fetch a
-firstCachingSecond cacheRef (Fetch bothFetchIO) =
+firstCachingSecond stateRef (Fetch bothFetchIO) =
   Fetch $ \ nil just ->
   join $
   bothFetchIO
     (return nil)
     (\ (!first, !second) -> do
-      writeIORef cacheRef second
+      writeIORef stateRef second
       return (just first))
 
 {-# INLINABLE bothFetchingFirst #-}
 bothFetchingFirst :: IORef b -> Fetch a -> Fetch (a, b)
-bothFetchingFirst cacheRef (Fetch firstFetchIO) =
+bothFetchingFirst stateRef (Fetch firstFetchIO) =
   Fetch $ \ nil just ->
   join $
   firstFetchIO
     (return nil)
     (\ !firstFetched -> do
-      secondCached <- readIORef cacheRef
+      secondCached <- readIORef stateRef
       return (just (firstFetched, secondCached)))
 
 {-# INLINABLE rightCachingLeft #-}
 rightCachingLeft :: IORef (Maybe left) -> Fetch (Either left right) -> Fetch right
-rightCachingLeft cacheRef (Fetch eitherFetchIO) =
+rightCachingLeft stateRef (Fetch eitherFetchIO) =
   Fetch $ \ nil just ->
   join $ eitherFetchIO (return nil) $ \ case
     Right !rightInput -> return (just rightInput)
-    Left !leftInput -> writeIORef cacheRef (Just leftInput) $> nil
+    Left !leftInput -> writeIORef stateRef (Just leftInput) $> nil
 
 {-# INLINABLE eitherFetchingRight #-}
 eitherFetchingRight :: IORef (Maybe left) -> Fetch right -> Fetch (Either left right)
-eitherFetchingRight cacheRef (Fetch rightFetchIO) =
+eitherFetchingRight stateRef (Fetch rightFetchIO) =
   Fetch $ \ nil just ->
   join $ rightFetchIO (return nil) $ \ right ->
-  atomicModifyIORef' cacheRef $ \ case
+  atomicModifyIORef' stateRef $ \ case
     Nothing -> (Nothing, just (Right right))
     Just left -> (Nothing, just (Left left))
+
+{-# INLINE ioMaybe #-}
+ioMaybe :: IO (Maybe a) -> Fetch a
+ioMaybe io =
+  Fetch $ \nil just -> maybe nil just <$> io
diff --git a/library/Potoki/Core/Transform.hs b/library/Potoki/Core/Transform.hs
--- a/library/Potoki/Core/Transform.hs
+++ b/library/Potoki/Core/Transform.hs
@@ -54,9 +54,9 @@
 instance Strong Transform where
   first' (Transform firstTransformIO) =
     Transform $ \ bothFetch -> do
-      cacheRef <- newIORef undefined
-      firstFetch <- firstTransformIO (A.firstCachingSecond cacheRef bothFetch)
-      return $ A.bothFetchingFirst cacheRef firstFetch
+      stateRef <- newIORef undefined
+      firstFetch <- firstTransformIO (A.firstCachingSecond stateRef bothFetch)
+      return $ A.bothFetchingFirst stateRef firstFetch
 
 instance Arrow Transform where
   arr fn =
diff --git a/potoki-core.cabal b/potoki-core.cabal
--- a/potoki-core.cabal
+++ b/potoki-core.cabal
@@ -1,7 +1,7 @@
 name:
   potoki-core
 version:
-  1.5.1
+  1.5.2
 synopsis:
   Low-level components of "potoki"
 description:
@@ -17,7 +17,7 @@
 author:
   Nikita Volkov <nikita.y.volkov@mail.ru>
 maintainer:
-  Metrix.AI Tech Team <tech@metrix.ai>
+  Metrix.AI Ninjas <ninjas@metrix.ai>
 copyright:
   (c) 2017, Metrix.AI
 license:
@@ -75,7 +75,7 @@
     -- testing:
     tasty >=0.12 && <0.13,
     tasty-quickcheck >=0.9 && <0.10,
-    tasty-hunit >=0.9 && <0.10,
+    tasty-hunit >=0.9 && <0.11,
     quickcheck-instances >=0.3.11 && <0.4,
     QuickCheck >=2.8.1 && <3,
     --
