diff --git a/src/Data/Either/Strict.hs b/src/Data/Either/Strict.hs
--- a/src/Data/Either/Strict.hs
+++ b/src/Data/Either/Strict.hs
@@ -51,7 +51,11 @@
 import           Data.Foldable       (Foldable (..))
 import           Data.Traversable    (Traversable (..))
 import           Data.Bitraversable  (Bitraversable (..))
+#if MIN_VERSION_base(4,7,0)
+import           Data.Data           (Data (..), Typeable)
+#else
 import           Data.Data           (Data (..), Typeable2 (..))
+#endif
 #if __GLASGOW_HASKELL__ >= 706
 import           GHC.Generics        (Generic (..))
 #endif
@@ -73,7 +77,11 @@
 --------------------
 
 deriving instance (Data a, Data b) => Data     (Either a b)
+#if MIN_VERSION_base(4,7,0)
+deriving instance Typeable Either
+#else
 deriving instance Typeable2 Either
+#endif
 
 #if __GLASGOW_HASKELL__ >= 706
 deriving instance Generic  (Either a b)
diff --git a/src/Data/Maybe/Strict.hs b/src/Data/Maybe/Strict.hs
--- a/src/Data/Maybe/Strict.hs
+++ b/src/Data/Maybe/Strict.hs
@@ -55,7 +55,11 @@
 import           Control.Lens.Prism  (Prism, Prism', prism, prism')
 import           Data.Aeson          (FromJSON (..), ToJSON (..))
 import           Data.Binary         (Binary (..))
+#if MIN_VERSION_base(4,7,0)
+import           Data.Data           (Data (..), Typeable)
+#else
 import           Data.Data           (Data (..), Typeable1 (..))
+#endif
 import           Data.Monoid         (Monoid (..))
 import           Data.Strict.Maybe   (Maybe (Nothing, Just), fromJust,
                                       fromMaybe, isJust, isNothing, maybe)
@@ -77,7 +81,11 @@
 toLazy (Just x) = L.Just x
 
 deriving instance Data a => Data (Maybe a)
+#if MIN_VERSION_base(4,7,0)
+deriving instance Typeable Maybe
+#else
 deriving instance Typeable1 Maybe
+#endif
 
 #if __GLASGOW_HASKELL__ >= 706
 deriving instance Generic  (Maybe a)
diff --git a/src/Data/Tuple/Strict.hs b/src/Data/Tuple/Strict.hs
--- a/src/Data/Tuple/Strict.hs
+++ b/src/Data/Tuple/Strict.hs
@@ -37,7 +37,6 @@
 import           Data.Strict.Tuple   (Pair ((:!:)), curry, fst, snd, uncurry)
 import           Prelude             hiding (curry, fst, snd, uncurry, unzip,
                                       zip)
-import qualified Prelude             as L
 
 import           Control.Applicative (Applicative ((<*>)), (<$>))
 import           Control.DeepSeq     (NFData (..))
@@ -58,7 +57,11 @@
 import           Data.Bifunctor      (Bifunctor (..))
 import           Data.Bitraversable  (Bitraversable (..))
 import           Data.Binary         (Binary (..))
+#if MIN_VERSION_base(4,7,0)
+import           Data.Data           (Data (..), Typeable)
+#else
 import           Data.Data           (Data (..), Typeable2 (..))
+#endif
 import           Data.Monoid         (Monoid (..))
 import qualified Data.Tuple          as L () -- just for haddocks. Is there a better way?
 #if __GLASGOW_HASKELL__ >= 706
@@ -80,7 +83,11 @@
 --------------------
 
 deriving instance (Data a, Data b) => Data     (Pair a b)
+#if MIN_VERSION_base(4,7,0)
+deriving instance Typeable Pair
+#else
 deriving instance Typeable2 Pair
+#endif
 
 -- fails with compiler panic on GHC 7.4.2
 #if __GLASGOW_HASKELL__ >= 706
diff --git a/strict-base-types.cabal b/strict-base-types.cabal
--- a/strict-base-types.cabal
+++ b/strict-base-types.cabal
@@ -1,5 +1,5 @@
 Name:           strict-base-types
-Version:        0.2.2
+Version:        0.2.3
 Synopsis:       Strict variants of the types provided in base.
 Category:       Data
 Description:
