diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Version history for ral
 
+## 0.2.2
+
+- Support GHC-8.6.5...9.10.1
+
 ## 0.2.1
 
 - Add `boring` instances
diff --git a/ral.cabal b/ral.cabal
--- a/ral.cabal
+++ b/ral.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.2
 name:               ral
-version:            0.2.1
+version:            0.2.2
 synopsis:           Random access lists
 category:           Data, Dependent Types, Singletons
 description:
@@ -29,16 +29,15 @@
 build-type:         Simple
 extra-source-files: ChangeLog.md
 tested-with:
-  GHC ==7.8.4
-   || ==7.10.3
-   || ==8.0.2
-   || ==8.2.2
-   || ==8.4.4
-   || ==8.6.5
+  GHC ==8.6.5
    || ==8.8.4
-   || ==8.10.4
-   || ==9.0.1
-   || ==9.2.1
+   || ==8.10.7
+   || ==9.0.2
+   || ==9.2.8
+   || ==9.4.8
+   || ==9.6.5
+   || ==9.8.2
+   || ==9.10.1
 
 source-repository head
   type:     git
@@ -85,32 +84,29 @@
 
   -- GHC boot libs
   build-depends:
-    , base     >=4.7     && <4.17
-    , deepseq  >=1.3.0.1 && <1.5
-
-  if !impl(ghc >=8.0)
-    build-depends: semigroups >=0.18.5 && <0.21
+    , base     >=4.12.0.0 && <4.21
+    , deepseq  >=1.4.4.0  && <1.6
 
   -- siblings
   build-depends:
-    , bin  ^>=0.1.1
-    , fin  ^>=0.2.1
+    , bin  ^>=0.1.1.4
+    , fin  ^>=0.3.1
 
   -- other dependencies
   build-depends:
-    , boring               ^>=0.2
-    , hashable             >=1.2.7.0 && <1.5
-    , indexed-traversable  ^>=0.1.1
-    , QuickCheck           ^>=2.14.2
+    , boring               ^>=0.2.2
+    , hashable             ^>=1.4.4.0
+    , indexed-traversable  ^>=0.1.4
+    , QuickCheck           ^>=2.14.2  || ^>=2.15
 
   if flag(distributive)
-    build-depends: distributive >=0.5.3 && <0.7
+    build-depends: distributive ^>=0.6.2
 
     if flag(adjunctions)
-      build-depends: adjunctions ^>=4.4
+      build-depends: adjunctions ^>=4.4.2
 
   if flag(semigroupoids)
-    build-depends: semigroupoids ^>=5.3.5
+    build-depends: semigroupoids ^>=6.0.1
 
   if impl(ghc >=9.0)
     -- these flags may abort compilation with GHC-8.10
@@ -118,7 +114,6 @@
     ghc-options: -Winferred-safe-imports -Wmissing-safe-haskell-mode
 
 -- dump-core
--- if impl(ghc >= 8.0)
 --  build-depends: dump-core
 --  ghc-options: -fplugin=DumpCore -fplugin-opt DumpCore:core-html
 
diff --git a/src/Data/RAList/Internal.hs b/src/Data/RAList/Internal.hs
--- a/src/Data/RAList/Internal.hs
+++ b/src/Data/RAList/Internal.hs
@@ -82,10 +82,8 @@
     foldMap _ Empty = mempty
     foldMap f (NonEmpty xs) = I.foldMap f xs
 
-#if MIN_VERSION_base(4,8,0)
     length = length
     null   = null
-#endif
 
 instance NFData a => NFData (RAList a) where
     rnf Empty         = ()
@@ -304,7 +302,4 @@
     I f <*> I x = I (f x)
     _ *> x      = x
     x <* _      = x
-#if MIN_VERSION_base(4,10,0)
     liftA2 f (I x) (I y) = I (f x y)
-#endif
-
diff --git a/src/Data/RAList/NonEmpty/Internal.hs b/src/Data/RAList/NonEmpty/Internal.hs
--- a/src/Data/RAList/NonEmpty/Internal.hs
+++ b/src/Data/RAList/NonEmpty/Internal.hs
@@ -75,10 +75,6 @@
 import qualified Data.Semigroup.Traversable as I (Traversable1 (..))
 #endif
 
-#if !MIN_VERSION_base(4,11,0)
-import Data.Semigroup (WrappedMonoid (..))
-#endif
-
 import qualified Data.RAList.Tree.Internal as Tr
 
 import Data.RAList.Tree (Leaf (..), Node (..))
@@ -120,10 +116,8 @@
 instance I.Foldable NERAList where
     foldMap f (NE xs) = I.foldMap f xs
 
-#if MIN_VERSION_base(4,8,0)
     length = length
     null   = null
-#endif
 
 #ifdef MIN_VERSION_semigroupoids
 instance I.Foldable1 NERAList where
@@ -343,11 +337,7 @@
 foldr1Map' f z (Cons1 t r) = I.foldr f (foldr1Map' f z r) t
 
 ifoldMap :: Monoid m => (Int -> a -> m) -> NERAList a -> m
-#if MIN_VERSION_base(4,11,0)
 ifoldMap = ifoldMap1
-#else
-ifoldMap f = unwrapMonoid . ifoldMap1 (\i a -> WrapMonoid (f i a))
-#endif
 
 -- |
 --
@@ -478,7 +468,4 @@
     I f <*> I x = I (f x)
     _ *> x      = x
     x <* _      = x
-#if MIN_VERSION_base(4,10,0)
     liftA2 f (I x) (I y) = I (f x y)
-#endif
-
diff --git a/src/Data/RAList/Tree/Internal.hs b/src/Data/RAList/Tree/Internal.hs
--- a/src/Data/RAList/Tree/Internal.hs
+++ b/src/Data/RAList/Tree/Internal.hs
@@ -75,10 +75,8 @@
     foldr' f z (Lf x) = f x z
     foldl' f z (Lf x) = f z x
 
-#if MIN_VERSION_base(4,8,0)
     length _ = 1
     null _ = False
-#endif
 
 instance I.Foldable f => I.Foldable (Node f) where
     foldMap f (Nd x y) = mappend (I.foldMap f x) (I.foldMap f y)
@@ -89,10 +87,8 @@
     foldr' f z (Nd x y) = let !acc = I.foldr' f z y in I.foldr' f acc x
     foldl' f z (Nd x y) = let !acc = I.foldl' f z x in I.foldl' f acc y
 
-#if MIN_VERSION_base(4,8,0)
     length (Nd x y) = I.length x + I.length y
     null (Nd x y)   = I.null x && I.null y
-#endif
 
 #ifdef MIN_VERSION_semigroupoids
 instance I.Foldable1 Leaf where
@@ -283,4 +279,3 @@
       where
         s2 = s `div` 2
 #endif
-
diff --git a/src/Data/RAVec.hs b/src/Data/RAVec.hs
--- a/src/Data/RAVec.hs
+++ b/src/Data/RAVec.hs
@@ -155,9 +155,7 @@
     foldMap    = foldMap
     foldr      = foldr
 
-#if MIN_VERSION_base(4,8,0)
     null = null
-#endif
 
 instance I.Traversable (RAVec b) where
     traverse = traverse
@@ -196,9 +194,7 @@
     (<*>)  = zipWith ($)
     x <* _ = x
     _ *> x = x
-#if MIN_VERSION_base(4,10,0)
     liftA2 = zipWith
-#endif
 
 -- TODO: Monad?
 
diff --git a/src/Data/RAVec/NonEmpty.hs b/src/Data/RAVec/NonEmpty.hs
--- a/src/Data/RAVec/NonEmpty.hs
+++ b/src/Data/RAVec/NonEmpty.hs
@@ -158,17 +158,13 @@
     foldMap = foldMap
     foldr   = foldr
 
-#if MIN_VERSION_base(4,8,0)
     null _ = False
-#endif
 
 instance I.Foldable (NERAVec' n b) where
     foldMap = foldMap'
     foldr   = foldr'
 
-#if MIN_VERSION_base(4,8,0)
     null _ = False
-#endif
 
 instance I.Traversable (NERAVec b) where
     traverse = traverse
@@ -237,18 +233,14 @@
     (<*>)  = zipWith ($)
     x <* _ = x
     _ *> x = x
-#if MIN_VERSION_base(4,10,0)
     liftA2 = zipWith
-#endif
 
 instance (SBinPI b, N.SNatI n) => Applicative (NERAVec' n b) where
     pure   = repeat'
     (<*>)  = zipWith' ($)
     x <* _ = x
     _ *> x = x
-#if MIN_VERSION_base(4,10,0)
     liftA2 = zipWith'
-#endif
 
 #ifdef MIN_VERSION_distributive
 instance SBinPI b => I.Distributive (NERAVec b) where
diff --git a/src/Data/RAVec/Tree.hs b/src/Data/RAVec/Tree.hs
--- a/src/Data/RAVec/Tree.hs
+++ b/src/Data/RAVec/Tree.hs
@@ -151,11 +151,10 @@
     foldMap = foldMap
     foldr   = foldr
     foldl   = foldl
-#if MIN_VERSION_base(4,8,0)
+
     null   = null
     toList = toList
     length = length
-#endif
 
 instance I.Traversable (Tree n) where
     traverse = traverse
@@ -197,9 +196,7 @@
     (<*>) = zipWith ($)
     x <* _ = x
     _ *> x = x
-#if MIN_VERSION_base(4,10,0)
     liftA2 = zipWith
-#endif
 
 -- TODO: Monad
 
diff --git a/src/Data/RAVec/Tree/DF.hs b/src/Data/RAVec/Tree/DF.hs
--- a/src/Data/RAVec/Tree/DF.hs
+++ b/src/Data/RAVec/Tree/DF.hs
@@ -177,12 +177,10 @@
     foldr  = foldr
     -- foldl' = foldl'
 
-#if MIN_VERSION_base(4,8,0)
     null    = null
     length  = length
     sum     = sum
     product = product
-#endif
 
 #ifdef MIN_VERSION_semigroupoids
 instance (N.SNatI n) => I.Foldable1 (Tree n) where
@@ -227,9 +225,7 @@
     (<*>)  = zipWith ($)
     _ *> x = x
     x <* _ = x
-#if MIN_VERSION_base(4,10,0)
     liftA2 = zipWith
-#endif
 
 -- TODO: Monad
 
