diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
-# Revision history for autoshow1
+# Revision history for auto-lift-classes
 
-## 0.1.0.0 -- YYYY-mm-dd
+## 1.0.1 -- 2023-04-06
 
-* First version. Released on an unsuspecting world.
+* Fix the build failure on GHC 9.6 (#2)
+
+## 1 -- 2023-01-12
+
+* First version.
diff --git a/auto-lift-classes.cabal b/auto-lift-classes.cabal
--- a/auto-lift-classes.cabal
+++ b/auto-lift-classes.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.0
 name:                auto-lift-classes
-version:             1
+version:             1.0.1
 synopsis:            Deriving (Show|Read)(1|2)
 description:         Deriving (Show|Read)(1|2) from the usual, stock deriveable
                      instances like @Show a => Show (f a)@.
@@ -11,13 +11,13 @@
 copyright:           (c) 2018-2023, Koji Miyazato
 category:            Data, Reflection
 build-type:          Simple
-extra-source-files:  CHANGELOG.md
-tested-with:         GHC ==8.6.5, GHC ==8.8.4, GHC ==8.10.7, GHC ==9.0.2, GHC ==9.2.5, GHC ==9.4.4
+extra-doc-files:     CHANGELOG.md
+tested-with:         GHC ==8.6.5, GHC ==8.8.4, GHC ==8.10.7, GHC ==9.0.2, GHC ==9.2.7, GHC ==9.4.4, GHC ==9.6.1
 
 source-repository head
   type:     git
   location: https://github.com/viercc/auto-lift-classes
-  branch:   master
+  branch:   main
 
 library
   exposed-modules:    AutoLift, AutoLift.Machinery
diff --git a/src/AutoLift.hs b/src/AutoLift.hs
--- a/src/AutoLift.hs
+++ b/src/AutoLift.hs
@@ -5,6 +5,9 @@
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE TypeApplications #-}
 {-# LANGUAGE UndecidableInstances #-}
+{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
 
 -- | Derive lifted version of 'Show' or 'Read' classes, like @'Show1' f@ or @'Read1' f@,
 --   from derivable instance @forall a. Show a => Show (f a)@.
@@ -62,6 +65,8 @@
 wrapReadDict1 :: ReadDict (f a) -> ReadDict (Reflected1 f a)
 wrapReadDict1 = coerce
 
+deriving newtype instance Show (f a) => Show (Reflected1 f a)
+
 instance
   ( forall a. Show a => Show (f a),
     forall xx yy. Coercible xx yy => Coercible (f xx) (f yy)
@@ -75,6 +80,8 @@
     let showFB = wrapShowDict1 $ autoShow1 @f (ShowDict showsPrecB showListB)
      in _showList showFB
 
+deriving newtype instance Read (f a) => Read (Reflected1 f a)
+
 instance
   ( forall a. Read a => Read (f a),
     forall xx yy. Coercible xx yy => Coercible (f xx) (f yy)
@@ -126,6 +133,18 @@
 wrapReadDict2 :: ReadDict (f a b) -> ReadDict (Reflected2 f a b)
 wrapReadDict2 = coerce
 
+deriving newtype instance Show (f a b) => Show (Reflected2 f a b)
+
+instance (forall y. Show y => Show (f a y),
+          forall x y. Coercible x y => Coercible (f a x) (f a y)) => Show1 (Reflected2 f a) where
+  liftShowsPrec showsPrecB showListB =
+    let showFAB = wrapShowDict2 $ autoShow1 @(f a) (ShowDict showsPrecB showListB)
+     in _showsPrec showFAB
+  
+  liftShowList showsPrecB showListB = 
+    let showFAB = wrapShowDict2 $ autoShow1 @(f a) (ShowDict showsPrecB showListB)
+     in _showList showFAB
+
 instance
   ( forall a b. (Show a, Show b) => Show (f a b),
     forall x1 y1 x2 y2.
@@ -140,6 +159,18 @@
   liftShowList2 showsPrecC showListC showsPrecD showListD =
     let showFCD = wrapShowDict2 $ autoShow2 @f (ShowDict showsPrecC showListC) (ShowDict showsPrecD showListD)
      in _showList showFCD
+
+deriving newtype instance Read (f a b) => Read (Reflected2 f a b)
+
+instance (forall y. Read y => Read (f a y),
+          forall x y. Coercible x y => Coercible (f a x) (f a y)) => Read1 (Reflected2 f a) where
+  liftReadPrec readPrecB readListB =
+    let readFAB = wrapReadDict2 $ autoRead1 @(f a) (ReadDict readPrecB readListB)
+     in _readPrec readFAB
+  
+  liftReadListPrec readPrecB readListB =
+    let readFAB = wrapReadDict2 $ autoRead1 @(f a) (ReadDict readPrecB readListB)
+     in _readListPrec readFAB
 
 instance
   ( forall a b. (Read a, Read b) => Read (f a b),
