diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,7 @@
+3.10.1 [maintenance release]
+------
+* Compatibility with `base` 4.7
+
 3.10.0.1 [maintenance release]
 --------
 * Compatibility with `text` 1.0
diff --git a/lens.cabal b/lens.cabal
--- a/lens.cabal
+++ b/lens.cabal
@@ -1,6 +1,6 @@
 name:          lens
 category:      Data, Lenses
-version:       3.10.0.1
+version:       3.10.1
 license:       BSD3
 cabal-version: >= 1.8
 license-file:  LICENSE
diff --git a/src/Control/Lens/Internal/Instances.hs b/src/Control/Lens/Internal/Instances.hs
--- a/src/Control/Lens/Internal/Instances.hs
+++ b/src/Control/Lens/Internal/Instances.hs
@@ -1,4 +1,9 @@
+{-# LANGUAGE CPP #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-}
+
+#ifndef MIN_VERSION_base
+#define MIN_VERSION_base(x,y,z) 1
+#endif
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Control.Lens.Internal.Instances
@@ -14,28 +19,26 @@
 module Control.Lens.Internal.Instances () where
 
 import Control.Applicative
-import Data.Foldable
-import Data.Monoid
 import Data.Semigroup.Foldable
 import Data.Semigroup.Traversable
+
+#if !(MIN_VERSION_base(4,7,0))
+import Data.Monoid
+import Data.Foldable
 import Data.Traversable
+#endif
 
 -------------------------------------------------------------------------------
 -- Orphan Instances
 -------------------------------------------------------------------------------
 
+#if !(MIN_VERSION_base(4,7,0))
 instance Foldable ((,) b) where
   foldMap f (_, a) = f a
 
-instance Foldable1 ((,) b) where
-  foldMap1 f (_, a) = f a
-
 instance Traversable ((,) b) where
   traverse f (b, a) = (,) b <$> f a
 
-instance Traversable1 ((,) b) where
-  traverse1 f (b, a) = (,) b <$> f a
-
 instance Foldable (Either a) where
   foldMap _ (Left _) = mempty
   foldMap f (Right a) = f a
@@ -49,3 +52,11 @@
 
 instance Traversable (Const m) where
   traverse _ (Const m) = pure $ Const m
+#endif
+
+instance Foldable1 ((,) b) where
+  foldMap1 f (_, a) = f a
+
+instance Traversable1 ((,) b) where
+  traverse1 f (b, a) = (,) b <$> f a
+
