diff --git a/hedis-pile.cabal b/hedis-pile.cabal
--- a/hedis-pile.cabal
+++ b/hedis-pile.cabal
@@ -1,5 +1,5 @@
 name:           hedis-pile
-version:        0.3.0
+version:        0.3.1
 cabal-version:  >= 1.8
 build-type:     Simple
 stability:      Experimental
diff --git a/src/Database/Redis/Pile.hs b/src/Database/Redis/Pile.hs
--- a/src/Database/Redis/Pile.hs
+++ b/src/Database/Redis/Pile.hs
@@ -20,6 +20,7 @@
 
 import qualified Database.Redis as R
 import qualified Database.Redis.Tags as RT
+import Data.Maybe (fromJust)
 
 -- | Stores computation results in Redis as hashSet. Computation fires only  
 --   if data absent in cache. Of course, to refresh the data, they must first 
@@ -108,7 +109,9 @@
         void $ R.hmset withPrefix r
         setExpire ke
         RT.markTags [withPrefix] p t
-        return $ Just r
+        return $ case payload of
+            Nothing -> Just r
+            Just pl -> Just [(pl, fromJust $ lookup pl r)]
       where
         setExpire Nothing = return ()
         setExpire (Just ke) = void $ R.expire withPrefix ke
diff --git a/test/Database/Redis/Test/Pile.hs b/test/Database/Redis/Test/Pile.hs
--- a/test/Database/Redis/Test/Pile.hs
+++ b/test/Database/Redis/Test/Pile.hs
@@ -34,6 +34,12 @@
             return (allData, Just 15, ["one"])
         ex <- R.ttl $ allPrefix `B.append` ":three"
         liftIO $ Right 15 @=? ex
+        r' <- RP.pile allPrefix "three" Nothing (Just "anydata") $ 
+            return (allData, Nothing, [])
+        liftIO $ Just [("anydata", "anydata")] @=? r'
+        r'' <- RP.pile allPrefix "three" Nothing (Just "anydata") $ 
+            return (allData, Nothing, [])
+        liftIO $ Just [("anydata", "anydata")] @=? r''
 
 caseStoredData :: Assertion
 caseStoredData = bracket_
