diff --git a/library/SlaveThread.hs b/library/SlaveThread.hs
--- a/library/SlaveThread.hs
+++ b/library/SlaveThread.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 -- |
 -- Vanilla thread management in Haskell is low level and
 -- it does not approach the problems related to thread deaths.
@@ -143,13 +144,21 @@
 
 killSlaves :: ThreadId -> IO ()
 killSlaves thread = do
+#if MIN_VERSION_stm_containers(1,2,0)
+  threads <- atomically (UnfoldlM.foldM (Foldl.generalize Foldl.revList) (Multimap.unfoldlMByKey thread slaveRegistry))
+#else
   threads <- atomically (UnfoldlM.foldM (Foldl.generalize Foldl.revList) (Multimap.unfoldMByKey thread slaveRegistry))
+#endif
   traverse_ killThread threads
 
 waitForSlavesToDie :: ThreadId -> IO ()
 waitForSlavesToDie thread =
   atomically $ do
+#if MIN_VERSION_stm_containers(1,2,0)
+    null <- UnfoldlM.null $ Multimap.unfoldlMByKey thread slaveRegistry
+#else
     null <- UnfoldlM.null $ Multimap.unfoldMByKey thread slaveRegistry
+#endif
     unless null retry
 
 -- | A slave thread crashed. This exception is classified as /asynchronous/,
diff --git a/slave-thread.cabal b/slave-thread.cabal
--- a/slave-thread.cabal
+++ b/slave-thread.cabal
@@ -1,5 +1,5 @@
 name: slave-thread
-version: 1.1
+version: 1.1.0.1
 synopsis: A fundamental solution to ghost threads and silent exceptions
 description:
   Vanilla thread management in Haskell is low level and 
@@ -62,7 +62,7 @@
     deferred-folds >=0.9 && <0.10,
     focus >=1 && <1.1,
     foldl >=1 && <2,
-    stm-containers >=1.1 && <1.2
+    stm-containers >=1.1 && <1.3
 
 test-suite test
   type: exitcode-stdio-1.0
