diff --git a/src/Control/Concurrent/STM/TMapMVar.hs b/src/Control/Concurrent/STM/TMapMVar.hs
--- a/src/Control/Concurrent/STM/TMapMVar.hs
+++ b/src/Control/Concurrent/STM/TMapMVar.hs
@@ -9,7 +9,14 @@
 import Control.Concurrent.STM.TMVar (TMVar, readTMVar, tryReadTMVar, newEmptyTMVar, takeTMVar, tryTakeTMVar, swapTMVar, putTMVar)
 
 
+putForceTMVar :: TMVar a -> a -> STM ()
+putForceTMVar t x = do
+  q <- tryReadTMVar t
+  case q of
+    Nothing -> putTMVar t x
+    Just _  -> () <$ swapTMVar t x
 
+
 newtype TMapMVar k a = TMapMVar
   { getTMapMVar :: TVar (Map k (TMVar a))
   }
@@ -22,7 +29,7 @@
 keys (TMapMVar m) = Map.keys <$> readTVar m
 
 peekElems :: TMapMVar k a -> STM [a]
-peekElems t@(TMapMVar m) = do
+peekElems (TMapMVar m) = do
   m' <- readTVar m
   let ts = Map.elems m'
   catMaybes <$> traverse tryReadTMVar ts
@@ -38,7 +45,7 @@
 insertForce :: (Ord k) => TMapMVar k a -> k -> a -> STM ()
 insertForce t k a = do
   x <- getTMVar t k
-  void $ swapTMVar x a
+  putForceTMVar x a
 
 
 -- | Blocks, and deletes upon looking it up
@@ -64,7 +71,7 @@
   tryReadTMVar x
 
 delete :: (Ord k) => TMapMVar k a -> k -> STM ()
-delete t k = do
+delete t k =
   void $ tryLookup t k
 
 
diff --git a/tmapmvar.cabal b/tmapmvar.cabal
--- a/tmapmvar.cabal
+++ b/tmapmvar.cabal
@@ -1,5 +1,5 @@
 name:                tmapmvar
-version:             0.0.1
+version:             0.0.2
 synopsis:            A single-entity stateful Map in STM, similar to tmapchan
 -- description:
 homepage:            https://github.com/athanclark/tmapmvar#readme
