diff --git a/intro.cabal b/intro.cabal
--- a/intro.cabal
+++ b/intro.cabal
@@ -3,8 +3,8 @@
 -- see: https://github.com/sol/hpack
 
 name:           intro
-version:        0.1.0.0
-synopsis:       \"Fixed Prelude\" - Mostly total and safe, provides Text and Monad transformers
+version:        0.1.0.1
+synopsis:       "Fixed Prelude" - Mostly total and safe, provides Text and Monad transformers
 description:    Modern Prelude which provides safe alternatives for most of the partial functions. Text is preferred over String. Container types and Monad transformers are provided. Most important - this Prelude avoids fanciness. This means it just reexports from base and commonly used libraries and doesn\'t invent its own stuff. Everything is in one file.
 category:       Prelude
 stability:      experimental
@@ -53,4 +53,38 @@
   other-modules:
       Intro.Trustworthy
       Paths_intro
+  default-language: Haskell2010
+
+test-suite compat
+  type: exitcode-stdio-1.0
+  main-is: compat.hs
+  hs-source-dirs:
+      test
+  ghc-options: -Wall
+  build-depends:
+      base                 >= 4.8   && < 5.0
+    , bifunctors           >= 5.2   && < 5.5
+    , binary               >= 0.7   && < 0.9
+    , bytestring           >= 0.9   && < 0.11
+    , containers           >= 0.5   && < 0.6
+    , deepseq              >= 1.4   && < 1.5
+    , dlist                >= 0.7   && < 0.9
+    , extra                >= 1.5.1 && < 1.6
+    , hashable             >= 1.2   && < 1.3
+    , mtl                  >= 2.2   && < 2.3
+    , safe                 >= 0.3   && < 0.4
+    , string-conversions   >= 0.4   && < 0.5
+    , tagged               >= 0.8   && < 0.9
+    , text                 >= 0.7   && < 1.3
+    , transformers         >= 0.4   && < 0.6
+    , unordered-containers >= 0.2   && < 0.3
+    , writer-cps-mtl       >= 0.1   && < 0.2
+    , intro
+    , lens
+  if impl(ghc < 8.0)
+    build-depends:
+        semigroups >= 0.9 && < 1
+  other-modules:
+      BaseCompat
+      LensCompat
   default-language: Haskell2010
diff --git a/test/BaseCompat.hs b/test/BaseCompat.hs
new file mode 100644
--- /dev/null
+++ b/test/BaseCompat.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE CPP #-}
+module BaseCompat (
+  module X
+) where
+
+import Intro as X
+
+import Control.Applicative as X
+import Control.Arrow as X hiding (first, second)
+import Control.Category as X
+import Control.Concurrent as X
+import Control.Exception as X
+import Control.Exception.Base as X
+import Control.Monad as X hiding (fail)
+import Control.Monad.Fix as X
+import Control.Monad.IO.Class as X
+import Control.Monad.ST as X
+import Control.Monad.ST.Unsafe as X
+import Control.Monad.Zip as X
+import Data.Bifunctor as X
+import Data.Bits as X
+import Data.Bool as X
+import Data.Char as X
+import Data.Coerce as X
+import Data.Complex as X
+import Data.Data as X
+import Data.Dynamic as X
+import Data.Either as X
+import Data.Eq as X
+import Data.Fixed as X
+import Data.Foldable as X
+import Data.Function as X hiding ((.), id)
+import Data.Functor as X
+import Data.Functor.Classes as X
+import Data.Functor.Compose as X
+import Data.Functor.Identity as X
+import Data.IORef as X
+import Data.Int as X
+import Data.Ix as X
+import Data.List as X hiding (scanl1, scanr1, map)
+import Data.Maybe as X
+import Data.Monoid as X hiding (First(..), Last(..), (<>))
+import Data.Ord as X
+import Data.Proxy as X
+import Data.Ratio as X
+import Data.STRef as X
+import Data.Semigroup as X
+import Data.String as X
+import Data.Traversable as X
+import Data.Tuple as X
+import Data.Type.Bool as X
+import Data.Type.Coercion as X
+import Data.Type.Equality as X hiding (trans, sym)
+import Data.Unique as X
+import Data.Version as X
+import Data.Void as X
+import Data.Word as X
+import Numeric as X
+import Numeric.Natural as X
+import Prelude as X hiding ((.), id, map, putChar, putStrLn, putStr, getContents, getLine, print, getChar, appendFile, readFile, writeFile, fail, show, undefined, scanl1, scanr1)
+import System.CPUTime as X
+import System.Console.GetOpt as X hiding (Option)
+import System.Environment as X
+import System.Exit as X
+import System.IO as X hiding (putChar, putStrLn, putStr, getContents, getLine, print, getChar, appendFile, readFile, writeFile)
+import System.IO.Error as X
+import System.IO.Unsafe as X
+import System.Info as X
+import System.Mem as X
+import System.Mem.StableName as X
+import System.Mem.Weak as X
+import System.Timeout as X
+import Text.ParserCombinators.ReadP as X hiding (get, (+++), optional, (<++), look, pfail, many, choice, option)
+import Text.ParserCombinators.ReadPrec as X hiding (get, (+++), lift)
+import Text.Printf as X
+import Text.Read as X hiding (readMaybe, get, lift, EOF, (+++))
+import Text.Show as X hiding (show)
+import Unsafe.Coerce as X
+
+#if MIN_VERSION_base(4,9,0)
+import Control.Monad.Fail as X
+import Data.Kind as X
+#endif
diff --git a/test/LensCompat.hs b/test/LensCompat.hs
new file mode 100644
--- /dev/null
+++ b/test/LensCompat.hs
@@ -0,0 +1,7 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+module LensCompat (
+  module X
+) where
+
+import Intro as X
+import Control.Lens as X
diff --git a/test/compat.hs b/test/compat.hs
new file mode 100644
--- /dev/null
+++ b/test/compat.hs
@@ -0,0 +1,9 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE OverloadedStrings #-}
+module Main where
+
+import BaseCompat
+import LensCompat
+
+main :: IO ()
+main = pure ()
