diff --git a/src/Control/Concurrent/STM/TMapChan.hs b/src/Control/Concurrent/STM/TMapChan.hs
--- a/src/Control/Concurrent/STM/TMapChan.hs
+++ b/src/Control/Concurrent/STM/TMapChan.hs
@@ -7,6 +7,7 @@
   , delete, deleteAll
   , -- * Utils
     getTChan
+  , broadcast
   , cloneAt, cloneAll, cloneAllUniquely
   ) where
 
@@ -86,6 +87,13 @@
 
 
 -- * Utils
+
+
+-- | Insert for every key
+broadcast :: Ord k => TMapChan k a -> a -> STM ()
+broadcast t@(TMapChan xs) a = do
+  ks <- Map.keys <$> readTVar xs
+  forM_ ks (\k -> insert t k a)
 
 
 -- | Creates a new one if it doesn't already exist
diff --git a/src/Control/Concurrent/STM/TMapChan/Hash.hs b/src/Control/Concurrent/STM/TMapChan/Hash.hs
--- a/src/Control/Concurrent/STM/TMapChan/Hash.hs
+++ b/src/Control/Concurrent/STM/TMapChan/Hash.hs
@@ -91,6 +91,12 @@
       pure c'
     Just c' -> pure c'
 
+broadcast :: (Eq k, Hashable k) => TMapChan k a -> a -> STM ()
+broadcast t@(TMapChan xs) a = do
+  ks <- HashMap.keys <$> readTVar xs
+  forM_ ks (\k -> insert t k a)
+
+
 cloneAt :: (Eq k, Hashable k)
         => TMapChan k a
         -> k -- ^ key to clone /from/
diff --git a/tmapchan.cabal b/tmapchan.cabal
--- a/tmapchan.cabal
+++ b/tmapchan.cabal
@@ -1,5 +1,5 @@
 name:                tmapchan
-version:             0.0.0
+version:             0.0.1
 synopsis:            A time-ordered multimap which consumes values as you lookup
 -- description:
 homepage:            https://github.com/athanclark/tmapchan#readme
