diff --git a/library/Potoki/Core/Consume.hs b/library/Potoki/Core/Consume.hs
--- a/library/Potoki/Core/Consume.hs
+++ b/library/Potoki/Core/Consume.hs
@@ -100,6 +100,10 @@
     rightOutput <- takeMVar rightOutputVar
     return (leftOutput rightOutput)
 
+unit :: Consume a ()
+unit =
+  Consume $ \ _ -> return ()
+
 {-# INLINABLE list #-}
 list :: Consume input [input]
 list =
diff --git a/library/Potoki/Core/Prelude.hs b/library/Potoki/Core/Prelude.hs
--- a/library/Potoki/Core/Prelude.hs
+++ b/library/Potoki/Core/Prelude.hs
@@ -103,6 +103,10 @@
 -------------------------
 import Data.Vector as Exports (Vector)
 
+-- time
+-------------------------
+import Data.Time as Exports
+
 -- hashable
 -------------------------
 import Data.Hashable as Exports (Hashable)
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
@@ -44,6 +44,7 @@
   count,
   mapInIOWithCounter,
   handleCount,
+  handleCountOnInterval,
   traceWithCounter,
 )
 where
diff --git a/library/Potoki/Core/Transform/Basic.hs b/library/Potoki/Core/Transform/Basic.hs
--- a/library/Potoki/Core/Transform/Basic.hs
+++ b/library/Potoki/Core/Transform/Basic.hs
@@ -149,6 +149,20 @@
   return a
 
 {-|
+Provides for progress monitoring by means of periodic measurement.
+-}
+handleCountOnInterval :: NominalDiffTime -> (Int -> IO ()) -> Transform a a
+handleCountOnInterval interval handler = ioTransform $ do
+  nextTime <- addUTCTime interval <$> getCurrentTime
+  nextTimeRef <- newIORef nextTime
+  return $ handleCount $ \ count -> do
+    nextTime <- readIORef nextTimeRef
+    time <- getCurrentTime
+    when (time >= nextTime) $ do
+      writeIORef nextTimeRef (addUTCTime interval nextTime)
+      handler count
+
+{-|
 Useful for debugging
 -}
 traceWithCounter :: (Int -> String) -> Transform a a
diff --git a/potoki-core.cabal b/potoki-core.cabal
--- a/potoki-core.cabal
+++ b/potoki-core.cabal
@@ -1,5 +1,5 @@
 name: potoki-core
-version: 2.2.8.2
+version: 2.2.9
 synopsis: Low-level components of "potoki"
 description:
   Provides everything required for building custom instances of
@@ -58,6 +58,7 @@
     scanner >=0.3 && <0.4,
     stm >=2.4 && <3,
     text >=1 && <2,
+    time >=1.5 && <2,
     transformers >=0.5 && <0.6,
     unordered-containers >=0.2 && <0.3,
     vector >=0.12 && <0.13
