diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -21,5 +21,5 @@
   - An introductory blog post on Haskey can be found [here][introduction].
   - An blog post on user-defined schemas and using the `HaskeyT` monad can be found [here][haskey-mtl-post]
 
-  [introduction]: https://deliquus.com/posts/2017-08-24-introducing-haskey.html
-  [haskey-mtl-post]: https://deliquus.com/posts/2017-09-14-haskey-user-defined-schemas-and-monad-transformers.html
+  [introduction]: https://hverr.github.io/posts/2017-08-24-introducing-haskey.html
+  [haskey-mtl-post]: https://hverr.github.io/posts/2017-09-14-haskey-user-defined-schemas-and-monad-transformers.html
diff --git a/haskey.cabal b/haskey.cabal
--- a/haskey.cabal
+++ b/haskey.cabal
@@ -1,5 +1,5 @@
 name:                haskey
-version:             0.3.0.2
+version:             0.3.1.0
 synopsis:            A transactional, ACID compliant, embeddable key-value store.
 description:
     Haskey is a transactional, ACID compliant, embeddable, scalable key-value
@@ -64,17 +64,18 @@
     directory               >=1.2  && <2,
     exceptions              >=0.8.3 && <0.11,
     filepath                >=1.4  && <2,
-    focus                   >=0.1.2 && <0.2,
+    focus                   >=0.1.2 && <0.2 || >= 1.0 && < 1.1,
     haskey-btree            >=0.3.0.0 && <0.4,
     list-t                  >=0.2  && <2,
     lz4                     >=0.2  && <1,
     mtl                     >=2.1  && <3,
     semigroups              >=0.12 && <1,
     stm                     >=2.1  && <3,
-    stm-containers          >=0.2  && <1,
+    stm-containers          >=0.2  && <1 || >= 1.1 && < 1.2,
     transformers            >=0.3  && <1,
     unix                    >=2.7.1.0 && <3,
-    xxhash-ffi              >=0.1.0.1 && <1
+    xxhash-ffi              >=0.1.0.1 && <1,
+    hashable
 
   default-language:    Haskell2010
   ghc-options:         -Wall
diff --git a/src/Database/Haskey/Alloc/Concurrent/Internal/Database.hs b/src/Database/Haskey/Alloc/Concurrent/Internal/Database.hs
--- a/src/Database/Haskey/Alloc/Concurrent/Internal/Database.hs
+++ b/src/Database/Haskey/Alloc/Concurrent/Internal/Database.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE RankNTypes #-}
@@ -18,8 +19,13 @@
 import Data.List.NonEmpty (NonEmpty((:|)))
 import Data.Maybe (fromMaybe)
 
+#if MIN_VERSION_stm_containers(1,1,0)
+import StmContainers.Map (Map)
+import qualified StmContainers.Map as Map
+#else
 import STMContainers.Map (Map)
 import qualified STMContainers.Map as Map
+#endif
 
 import Data.BTree.Alloc.Class
 import Data.BTree.Impure (Tree(..))
diff --git a/src/Database/Haskey/Alloc/Concurrent/Internal/Environment.hs b/src/Database/Haskey/Alloc/Concurrent/Internal/Environment.hs
--- a/src/Database/Haskey/Alloc/Concurrent/Internal/Environment.hs
+++ b/src/Database/Haskey/Alloc/Concurrent/Internal/Environment.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE DataKinds #-}
 {-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE FlexibleContexts #-}
@@ -21,7 +22,11 @@
 import qualified Data.Binary as B
 import qualified Data.Set as S
 
+#if MIN_VERSION_stm_containers(1,1,0)
+import StmContainers.Map (Map)
+#else
 import STMContainers.Map (Map)
+#endif
 
 import Data.BTree.Primitives
 
diff --git a/src/Database/Haskey/Utils/STM/Map.hs b/src/Database/Haskey/Utils/STM/Map.hs
--- a/src/Database/Haskey/Utils/STM/Map.hs
+++ b/src/Database/Haskey/Utils/STM/Map.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE ConstraintKinds #-}
 module Database.Haskey.Utils.STM.Map where
 
@@ -7,11 +8,22 @@
 import qualified Focus as F
 import qualified ListT as L
 
+#if MIN_VERSION_stm_containers(1,1,0)
+import StmContainers.Map (Map)
+import qualified StmContainers.Map as M
+import Data.Hashable
+type Key key = (Eq key, Hashable key)
+#else
 import STMContainers.Map (Map, Key)
 import qualified STMContainers.Map as M
+#endif
 
 lookupMin :: Map k v -> STM (Maybe (k, v))
+#if MIN_VERSION_stm_containers(1,1,0)
+lookupMin = L.head . M.listT
+#else
 lookupMin = L.head . M.stream
+#endif
 
 lookupMinKey :: Map k v -> STM (Maybe k)
 lookupMinKey = ((fst <$>) <$>) . lookupMin
