diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.3.1
+
+- Support GHC-8.6.5...9.10.1
+
 ## 0.3
 
 - Depend on `foldable1-classes-compat` instead of `semigroupoids`.
diff --git a/src/Data/TDigest/Postprocess.hs b/src/Data/TDigest/Postprocess.hs
--- a/src/Data/TDigest/Postprocess.hs
+++ b/src/Data/TDigest/Postprocess.hs
@@ -20,8 +20,6 @@
     ) where
 
 import qualified Data.List.NonEmpty as NE
-import           Prelude ()
-import           Prelude.Compat
 
 import qualified Data.TDigest.Postprocess.Internal as I
 
diff --git a/src/Data/TDigest/Postprocess/Internal.hs b/src/Data/TDigest/Postprocess/Internal.hs
--- a/src/Data/TDigest/Postprocess/Internal.hs
+++ b/src/Data/TDigest/Postprocess/Internal.hs
@@ -33,8 +33,6 @@
 import Data.List.NonEmpty    (NonEmpty (..), nonEmpty)
 import Data.Proxy            (Proxy (..))
 import Data.Semigroup        (Semigroup (..))
-import Prelude ()
-import Prelude.Compat
 
 import qualified Data.List.NonEmpty as NE
 
diff --git a/src/Data/TDigest/Tree.hs b/src/Data/TDigest/Tree.hs
--- a/src/Data/TDigest/Tree.hs
+++ b/src/Data/TDigest/Tree.hs
@@ -107,10 +107,9 @@
 
 -- $setup
 -- >>> :set -XDataKinds
--- >>> import Prelude.Compat
--- >>> import Data.List.Compat (foldl')
+-- >>> import Data.Foldable (foldl')
 -- >>> import Data.Semigroup ((<>))
 --
 -- >>> let merge [] ys = []; merge xs [] = xs; merge (x:xs) (y:ys) = x : y : merge xs ys
--- >>> let fairshuffle' xs = uncurry merge (splitAt (Prelude.Compat.length xs `div` 2) xs)
+-- >>> let fairshuffle' xs = uncurry merge (splitAt (Prelude.length xs `div` 2) xs)
 -- >>> let fairshuffle xs = iterate fairshuffle' xs !! 5
diff --git a/src/Data/TDigest/Tree/Internal.hs b/src/Data/TDigest/Tree/Internal.hs
--- a/src/Data/TDigest/Tree/Internal.hs
+++ b/src/Data/TDigest/Tree/Internal.hs
@@ -12,16 +12,13 @@
 import Control.Monad.ST       (ST, runST)
 import Data.Binary            (Binary (..))
 import Data.Either            (isRight)
-import Data.Foldable          (toList)
-import Data.List.Compat       (foldl')
+import Data.Foldable          (toList, foldl')
 import Data.List.NonEmpty     (nonEmpty)
 import Data.Ord               (comparing)
 import Data.Proxy             (Proxy (..))
 import Data.Semigroup         (Semigroup (..))
 import Data.Semigroup.Reducer (Reducer (..))
 import GHC.TypeLits           (KnownNat, Nat, natVal)
-import Prelude ()
-import Prelude.Compat
 
 import qualified Data.Vector.Algorithms.Heap as VHeap
 import qualified Data.Vector.Unboxed         as VU
diff --git a/src/Data/TDigest/Tree/NonEmpty.hs b/src/Data/TDigest/Tree/NonEmpty.hs
--- a/src/Data/TDigest/Tree/NonEmpty.hs
+++ b/src/Data/TDigest/Tree/NonEmpty.hs
@@ -57,9 +57,6 @@
     debugPrint,
     ) where
 
-import Prelude ()
-import Prelude.Compat
-
 import Control.DeepSeq        (NFData (..))
 import Control.Monad          (when)
 import Data.Binary            (Binary (..))
@@ -175,9 +172,8 @@
 
 -- $setup
 -- >>> :set -XDataKinds
--- >>> import Prelude.Compat
 -- >>> import Data.List.NonEmpty (NonEmpty (..))
--- >>> import Data.List.Compat (foldl')
+-- >>> import Data.Foldable (foldl')
 --
 -- >>> let merge [] ys = []; merge xs [] = xs; merge (x:xs) (y:ys) = x : y : merge xs ys
 -- >>> let fairshuffle' xs = uncurry merge (splitAt (Prelude.length xs `div` 2) xs)
diff --git a/src/Data/TDigest/Tree/Postprocess.hs b/src/Data/TDigest/Tree/Postprocess.hs
--- a/src/Data/TDigest/Tree/Postprocess.hs
+++ b/src/Data/TDigest/Tree/Postprocess.hs
@@ -18,9 +18,6 @@
     icdf,
     ) where
 
-import Prelude ()
-import Prelude.Compat
-
 import Data.TDigest.Tree.Internal
 
 import qualified Data.TDigest.Postprocess as PP
diff --git a/src/Data/TDigest/Vector.hs b/src/Data/TDigest/Vector.hs
--- a/src/Data/TDigest/Vector.hs
+++ b/src/Data/TDigest/Vector.hs
@@ -97,10 +97,9 @@
 
 -- $setup
 -- >>> :set -XDataKinds
--- >>> import Prelude.Compat
--- >>> import Data.List.Compat (foldl')
+-- >>> import Data.Foldable (foldl')
 -- >>> import Data.Semigroup ((<>))
 --
 -- >>> let merge [] ys = []; merge xs [] = xs; merge (x:xs) (y:ys) = x : y : merge xs ys
--- >>> let fairshuffle' xs = uncurry merge (splitAt (Prelude.Compat.length xs `div` 2) xs)
+-- >>> let fairshuffle' xs = uncurry merge (splitAt (Prelude.length xs `div` 2) xs)
 -- >>> let fairshuffle xs = iterate fairshuffle' xs !! 5
diff --git a/src/Data/TDigest/Vector/Internal.hs b/src/Data/TDigest/Vector/Internal.hs
--- a/src/Data/TDigest/Vector/Internal.hs
+++ b/src/Data/TDigest/Vector/Internal.hs
@@ -14,8 +14,6 @@
 import Data.Semigroup         (Semigroup (..))
 import Data.Semigroup.Reducer (Reducer (..))
 import GHC.TypeLits           (KnownNat, Nat, natVal)
-import Prelude ()
-import Prelude.Compat
 
 import qualified Data.Vector.Unboxed as VU
 
diff --git a/src/Data/TDigest/Vector/Postprocess.hs b/src/Data/TDigest/Vector/Postprocess.hs
--- a/src/Data/TDigest/Vector/Postprocess.hs
+++ b/src/Data/TDigest/Vector/Postprocess.hs
@@ -19,8 +19,6 @@
     ) where
 
 import GHC.TypeLits   (KnownNat)
-import Prelude ()
-import Prelude.Compat
 
 import Data.TDigest.Vector.Internal
 
diff --git a/tdigest.cabal b/tdigest.cabal
--- a/tdigest.cabal
+++ b/tdigest.cabal
@@ -1,6 +1,6 @@
-cabal-version:      >=1.10
+cabal-version:      2.2
 name:               tdigest
-version:            0.3
+version:            0.3.1
 synopsis:           On-line accumulation of rank-based statistics
 description:
   A new data structure for accurate on-line accumulation of rank-based statistics such as quantiles and trimmed means.
@@ -13,26 +13,23 @@
 bug-reports:        https://github.com/phadej/haskell-tdigest/issues
 author:             Oleg Grenrus <oleg.grenrus@iki.fi>
 maintainer:         Oleg Grenrus <oleg.grenrus@iki.fi>
-license:            BSD3
+license:            BSD-3-Clause
 license-file:       LICENSE
 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.7
    || ==9.0.2
-   || ==9.2.7
-   || ==9.4.4
-   || ==9.6.1
+   || ==9.2.8
+   || ==9.4.8
+   || ==9.6.6
+   || ==9.8.2
+   || ==9.10.1
 
 build-type:         Simple
 extra-source-files:
-  README.md
   CHANGELOG.md
+  README.md
 
 source-repository head
   type:     git
@@ -46,20 +43,16 @@
 
   -- GHC boot libraries
   build-depends:
-      base          >=4.7     && <4.20
-    , binary        >=0.7.1.0 && <0.10
-    , deepseq       >=1.3.0.2 && <1.5
-    , transformers  >=0.3     && <0.7
-
-  if !impl(ghc >=8.0)
-    build-depends: semigroups >=0.18.4 && <0.21
+    , base          >=4.12.0.0 && <4.22
+    , binary        >=0.8.6.0  && <0.10
+    , deepseq       >=1.4.4.0  && <1.6
+    , transformers  >=0.5.6.2  && <0.7
 
   if !impl(ghc >=9.6)
     build-depends: foldable1-classes-compat >=0.1 && <0.2
 
   -- other dependencies
   build-depends:
-      base-compat        >=0.10.1   && <0.14
     , reducers           >=3.12.2   && <3.13
     , vector             >=0.12.0.1 && <0.14
     , vector-algorithms  >=0.7.0.1  && <0.10
@@ -95,13 +88,12 @@
   ghc-options:      -Wall -threaded
   hs-source-dirs:   tests
   build-depends:
-      base
-    , base-compat
+    , base
     , binary
     , deepseq
     , semigroups
-    , tasty              >=0.11.0.4 && <1.5
-    , tasty-quickcheck   >=0.8.4    && <0.11
+    , tasty              >=0.11.0.4 && <1.6
+    , tasty-quickcheck   >=0.8.4    && <0.12
     , tdigest
     , vector
     , vector-algorithms
