diff --git a/Changelog.md b/Changelog.md
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,5 +1,10 @@
 # Monoidal containers
 
+# 0.6.2.0
+
+  * [Remove cyclic definition of `!?`](https://github.com/bgamari/monoidal-containers/pull/88)
+  * [Bump lens and hashable version bounds](https://github.com/bgamari/monoidal-containers/pull/87)
+
 # 0.6.1.0
 
   * Drop official support for GHC 7.8.4
diff --git a/monoidal-containers.cabal b/monoidal-containers.cabal
--- a/monoidal-containers.cabal
+++ b/monoidal-containers.cabal
@@ -1,5 +1,5 @@
 name:               monoidal-containers
-version:            0.6.1.0
+version:            0.6.2.0
 synopsis:           Containers with monoidal accumulation
 description:
   Containers with merging via monoidal accumulation. The 'Monoid' instances
@@ -57,8 +57,8 @@
     , base                  >=4.7   && <4.16
     , containers            >=0.5.9 && <0.7
     , deepseq               >=1.3   && <1.5
-    , hashable              >=1.2   && <1.4
-    , lens                  >=4.4   && <5.1
+    , hashable              >=1.2   && <1.5
+    , lens                  >=4.4   && <5.2
     , newtype               >=0.2   && <0.3
     , unordered-containers  >=0.2   && <0.3
     , witherable            >=0.4   && <0.5
diff --git a/src/Data/HashMap/Monoidal.hs b/src/Data/HashMap/Monoidal.hs
--- a/src/Data/HashMap/Monoidal.hs
+++ b/src/Data/HashMap/Monoidal.hs
@@ -51,6 +51,10 @@
 import qualified GHC.Exts as Exts
 #endif
 
+#if MIN_VERSION_base(4,9,0)
+import Data.Functor.Classes (Eq1)
+#endif
+
 import Control.DeepSeq
 import qualified Data.HashMap.Strict as M
 import Data.Hashable (Hashable)
@@ -72,6 +76,9 @@
 newtype MonoidalHashMap k a = MonoidalHashMap { getMonoidalHashMap :: M.HashMap k a }
     deriving ( Show, Read, Functor, Eq, NFData
              , Foldable, Traversable, Data, Typeable, Hashable, Align
+#if MIN_VERSION_base(4,9,0)
+             , Eq1
+#endif
 #if MIN_VERSION_unordered_containers(0,2,8)
              , Hashable1
 #endif
diff --git a/src/Data/Map/Monoidal.hs b/src/Data/Map/Monoidal.hs
--- a/src/Data/Map/Monoidal.hs
+++ b/src/Data/Map/Monoidal.hs
@@ -318,7 +318,7 @@
 {-# INLINE keys #-}
 
 (!?) :: forall k a. Ord k => MonoidalMap k a -> k -> Maybe a
-(!?) m k = (coerce m) !? k
+(!?) = coerce ((M.!?) :: M.Map k a -> k -> Maybe a)
 infixl 9 !?
 {-# INLINE (!?) #-}
 
diff --git a/src/Data/Map/Monoidal/Strict.hs b/src/Data/Map/Monoidal/Strict.hs
--- a/src/Data/Map/Monoidal/Strict.hs
+++ b/src/Data/Map/Monoidal/Strict.hs
@@ -318,10 +318,9 @@
 {-# INLINE keys #-}
 
 (!?) :: forall k a. Ord k => MonoidalMap k a -> k -> Maybe a
-(!?) m k = (coerce m) !? k
+(!?) = coerce ((M.!?) :: M.Map k a -> k -> Maybe a)
 infixl 9 !?
 {-# INLINE (!?) #-}
-
 
 (!) :: forall k a. Ord k => MonoidalMap k a -> k -> a
 (!) = coerce ((M.!) :: M.Map k a -> k -> a)
