diff --git a/library/Potoki/Consume.hs b/library/Potoki/Consume.hs
--- a/library/Potoki/Consume.hs
+++ b/library/Potoki/Consume.hs
@@ -5,11 +5,13 @@
   count,
   sum,
   head,
+  last,
   list,
   reverseList,
   vector,
   concat,
   fold,
+  execState,
   foldInIO,
   writeBytesToFile,
   appendBytesToFile,
@@ -23,7 +25,7 @@
 )
 where
 
-import Potoki.Prelude hiding (sum, head, fold, concat)
+import Potoki.Prelude hiding (sum, head, fold, concat, last)
 import Potoki.Core.Consume
 import qualified Potoki.Core.Fetch as A
 import qualified Potoki.Core.Produce as H
@@ -37,6 +39,7 @@
 import qualified Control.Foldl as D
 import qualified System.Directory as G
 import qualified Potoki.Transform.Concurrency as B
+import qualified Control.Monad.Trans.State.Strict as O
 
 
 {-# INLINABLE head #-}
@@ -44,6 +47,11 @@
 head =
   Consume (\ (A.Fetch fetchIO) -> fetchIO Nothing Just)
 
+{-# INLINABLE last #-}
+last :: Consume input (Maybe input)
+last = 
+  fold D.last 
+
 {-|
 A faster alternative to "list",
 which however constructs the list in the reverse order.
@@ -140,6 +148,11 @@
   where
     build fetch !accumulator =
       join (fetch (pure (finish accumulator)) (\ !input -> build fetch (step accumulator input)))
+
+{-# INLINE execState #-}
+execState :: (a -> O.State s b) -> s -> Consume a s
+execState stateFn initialState = 
+  fold $ D.Fold (\currentState input -> snd $ O.runState (stateFn input) currentState) initialState id
 
 {-# INLINABLE foldInIO #-}
 foldInIO :: D.FoldM IO input output -> Consume input output
diff --git a/potoki.cabal b/potoki.cabal
--- a/potoki.cabal
+++ b/potoki.cabal
@@ -1,7 +1,7 @@
 name:
   potoki
 version:
-  0.11
+  0.11.1
 synopsis:
   Simple streaming in IO
 description:
