diff --git a/mappings.cabal b/mappings.cabal
--- a/mappings.cabal
+++ b/mappings.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           mappings
-version:        0.0.1.0
+version:        0.0.2.0
 synopsis:       Types which represent functions k -> v
 description:    Please read README.md on github
 category:       Data structures
@@ -40,9 +40,9 @@
       src
   ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints
   build-depends:
-      base >=4.18 && <4.20
+      base >=4.16 && <4.20
     , cond ==0.4.*
-    , containers >=0.6.6 && <0.7
+    , containers >=0.6.6 && <0.8
     , formatting >=7.0.0 && <7.3
     , partialord >=0.0.2 && <0.1
   default-language: GHC2021
@@ -57,9 +57,9 @@
       examples
   ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-N
   build-depends:
-      base >=4.18 && <4.20
+      base >=4.16 && <4.20
     , cond ==0.4.*
-    , containers >=0.6.6 && <0.7
+    , containers >=0.6.6 && <0.8
     , formatting >=7.0.0 && <7.3
     , mappings
     , partialord >=0.0.2 && <0.1
@@ -79,9 +79,9 @@
       test
   ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-N
   build-depends:
-      base >=4.18 && <4.20
+      base >=4.16 && <4.20
     , cond ==0.4.*
-    , containers >=0.6.6 && <0.7
+    , containers >=0.6.6 && <0.8
     , formatting >=7.0.0 && <7.3
     , hspec ==2.11.*
     , mappings
diff --git a/src/Data/Bijection.hs b/src/Data/Bijection.hs
--- a/src/Data/Bijection.hs
+++ b/src/Data/Bijection.hs
@@ -1,5 +1,11 @@
+{-# LANGUAGE CPP #-}
+
 module Data.Bijection where
 
+#if MIN_VERSION_GLASGOW_HASKELL(9,6,0,0)
+#else
+import Control.Applicative (liftA2)
+#endif
 import Data.IntMap.Strict (IntMap)
 import qualified Data.IntMap.Strict as IM
 import qualified Data.IntMap.Merge.Strict as IM
diff --git a/src/Data/Mapping.hs b/src/Data/Mapping.hs
--- a/src/Data/Mapping.hs
+++ b/src/Data/Mapping.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE
+    CPP,
     DeriveFunctor,
     DerivingVia,
     FlexibleInstances,
@@ -9,6 +10,10 @@
 
 module Data.Mapping where
 
+#if MIN_VERSION_GLASGOW_HASKELL(9,6,0,0)
+#else
+import Control.Applicative (liftA2)
+#endif
 import Prelude hiding (not, (&&), (||))
 import Data.Algebra.Boolean (Boolean(..))
 import Data.Function (on)
diff --git a/src/Data/Mapping/Decision.hs b/src/Data/Mapping/Decision.hs
--- a/src/Data/Mapping/Decision.hs
+++ b/src/Data/Mapping/Decision.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE
+      CPP,
       MultiParamTypeClasses,
       OverloadedStrings,
       RankNTypes,
@@ -39,6 +40,10 @@
 --  * Optimisation by reordering
 module Data.Mapping.Decision where
 
+#if MIN_VERSION_GLASGOW_HASKELL(9,6,0,0)
+#else
+import Control.Applicative (liftA2)
+#endif
 import Data.Algebra.Boolean (Boolean(..))
 import Data.Bijection (Bij)
 import qualified Data.Bijection as B
diff --git a/src/Data/Mapping/MapWithDefault.hs b/src/Data/Mapping/MapWithDefault.hs
--- a/src/Data/Mapping/MapWithDefault.hs
+++ b/src/Data/Mapping/MapWithDefault.hs
@@ -1,5 +1,11 @@
+{-# LANGUAGE CPP #-}
+
 module Data.Mapping.MapWithDefault where
 
+#if MIN_VERSION_GLASGOW_HASKELL(9,6,0,0)
+#else
+import Control.Applicative (liftA2)
+#endif
 import Data.List (foldl', groupBy)
 import Data.Map.Strict (Map)
 import qualified Data.Map.Strict as M
diff --git a/src/Data/Mapping/Piecewise.hs b/src/Data/Mapping/Piecewise.hs
--- a/src/Data/Mapping/Piecewise.hs
+++ b/src/Data/Mapping/Piecewise.hs
@@ -1,5 +1,11 @@
+{-# LANGUAGE CPP #-}
+
 module Data.Mapping.Piecewise where
 
+#if MIN_VERSION_GLASGOW_HASKELL(9,6,0,0)
+#else
+import Control.Applicative (liftA2)
+#endif
 import Control.Applicative (liftA3)
 import Data.Map.Strict (Map)
 import qualified Data.Map.Strict as M
