diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+0.13.1
+---
+
+- Compatibility with GHC 9.8
+
 0.13
 ---
 
diff --git a/compdata.cabal b/compdata.cabal
--- a/compdata.cabal
+++ b/compdata.cabal
@@ -1,13 +1,12 @@
 Name:			compdata
-Version:		0.13.0
+Version:		0.13.1
 Synopsis:            	Compositional Data Types
 Description:
 
-  This library implements the ideas of /Data types a la carte/
-  (Journal of Functional Programming, 18(4):423-436, 2008,
-  <http://dx.doi.org/10.1017/S0956796808006758>) as outlined in the
-  paper /Compositional data types/ (Workshop on Generic Programming,
-  83-94, 2011, <http://dx.doi.org/10.1145/2036918.2036930>). The
+  This library implements the ideas of
+  <http://dx.doi.org/10.1017/S0956796808006758 Data types a la carte>
+  as outlined in the paper
+  <http://dx.doi.org/10.1145/2036918.2036930 Compositional data types>. The
   purpose of this library is to allow the programmer to construct data
   types -- as well as the functions defined on them -- in a modular
   fashion. The underlying idea is to separate the signature of a data
@@ -77,19 +76,16 @@
   There are some supplementary packages, some of which were included
   in previous versions of this package:
   .
-  * @compdata-param@
-    <https://hackage.haskell.org/package/compdata-param>: a parametric
-    variant of compositional data types to deal with variable binders
-    in a systematic way.
+  * <https://hackage.haskell.org/package/compdata-param compdata-param>:
+    a parametric variant of compositional data types to deal with variable
+    binders in a systematic way.
   .
-  * @compdata-automata@
-    <https://hackage.haskell.org/package/compdata-automata>: advanced
-    recursion schemes derived from tree automata that allow for a
+  * <https://hackage.haskell.org/package/compdata-automata compdata-automata>:
+    advanced recursion schemes derived from tree automata that allow for a
     higher degree of modularity and make it possible to apply fusion.
   .
-  * @compdata-dags@
-    <https://hackage.haskell.org/package/compdata-dags>: recursion
-    schemes on directed acyclic graphs.
+  * <https://hackage.haskell.org/package/compdata-dags compdata-dags>:
+    recursion schemes on directed acyclic graphs.
 
 
 Category:               Generics
@@ -191,9 +187,16 @@
 
 
 
-  Build-Depends:	base >= 4.16 && < 4.19, template-haskell, containers, mtl >= 2.2.1,
-                        QuickCheck >= 2, deepseq, transformers, th-expand-syns,
-                        tree-view >= 0.5
+  Build-Depends:        base >= 4.16 && < 4.19,
+                        QuickCheck >= 2.14.3 && < 2.15,
+                        containers >= 0.6.8 && < 0.7,
+                        deepseq >= 1.4 && < 1.6,
+                        template-haskell >= 2.17 && < 2.22,
+                        mtl >= 2.3.1 && < 2.4,
+                        transformers >= 0.6.1 && < 0.7,
+                        th-expand-syns >= 0.4.11 && < 0.5,
+                        tree-view >= 0.5.1 && < 0.6
+
   Default-Language:     Haskell2010
   Default-Extensions:   FlexibleContexts
   hs-source-dirs:	src
diff --git a/src/Data/Comp/Arbitrary.hs b/src/Data/Comp/Arbitrary.hs
--- a/src/Data/Comp/Arbitrary.hs
+++ b/src/Data/Comp/Arbitrary.hs
@@ -38,7 +38,7 @@
     arbitraryF' = map addP arbitraryF'
         where addP (i,gen) =  (i,(:&:) <$> gen <*> arbitrary)
     arbitraryF = (:&:) <$> arbitraryF <*> arbitrary
-    shrinkF (v :&: p) = tail [v' :&: p'| v' <- v: shrinkF v, p' <- p : shrink p ]
+    shrinkF (v :&: p) = drop 1 [v' :&: p'| v' <- v: shrinkF v, p' <- p : shrink p ]
 
 {-|
   This lifts instances of 'ArbitraryF' to instances of 'ArbitraryF' for
diff --git a/src/Data/Comp/Derive/Utils.hs b/src/Data/Comp/Derive/Utils.hs
--- a/src/Data/Comp/Derive/Utils.hs
+++ b/src/Data/Comp/Derive/Utils.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE ExistentialQuantification #-}
 {-# LANGUAGE CPP #-}
 --------------------------------------------------------------------------------
 -- |
@@ -20,20 +21,20 @@
 import Language.Haskell.TH.Syntax
 import Language.Haskell.TH.ExpandSyns
 
-data DataInfo flag = DataInfo Cxt Name [TyVarBndr flag] [Con] [DerivClause] 
+data DataInfo = forall flag . DataInfo Cxt Name [TyVarBndr flag] [Con] [DerivClause] 
 
 
 {-|
   This is the @Q@-lifted version of 'abstractNewtype.
 -}
-abstractNewtypeQ :: Q Info -> Q (Maybe (DataInfo ()))
+abstractNewtypeQ :: Q Info -> Q (Maybe DataInfo)
 abstractNewtypeQ = liftM abstractNewtype
 
 {-|
   This function abstracts away @newtype@ declaration, it turns them into
   @data@ declarations.
 -}
-abstractNewtype :: Info -> Maybe (DataInfo ())
+abstractNewtype :: Info -> Maybe DataInfo
 abstractNewtype (TyConI (NewtypeD cxt name args _ constr derive))
     = Just (DataInfo cxt name args [constr] derive)
 abstractNewtype (TyConI (DataD cxt name args _ constrs derive))
diff --git a/src/Data/Comp/Thunk.hs b/src/Data/Comp/Thunk.hs
--- a/src/Data/Comp/Thunk.hs
+++ b/src/Data/Comp/Thunk.hs
@@ -54,11 +54,6 @@
 import Control.Monad hiding (mapM, sequence)
 import Data.Traversable
 
--- Control.Monad.Fail import is redundant since GHC 8.8.1
-#if !MIN_VERSION_base(4,13,0)
-import Control.Monad.Fail (MonadFail)
-#endif
-
 import Prelude hiding (foldl, foldl1, foldr, foldr1, mapM, sequence)
 
 
