diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,9 @@
 # Changelog for package `generic-groups`
 
+## 0.3.0.0 ( December 3, 2022 )
+
+* Support GHC 9.4.
+
 ## 0.2.0.0 ( February 8, 2021 )
 
 * Support `groups-0.5`.
diff --git a/groups-generic.cabal b/groups-generic.cabal
--- a/groups-generic.cabal
+++ b/groups-generic.cabal
@@ -1,6 +1,6 @@
 cabal-version:  2.4
 name:           groups-generic
-version:        0.2.0.0
+version:        0.3.0.0
 synopsis:       Generically derive Group instances.
 category:       Algebra, Math
 license:        BSD-3-Clause
@@ -14,6 +14,9 @@
 description:
   Generically derive group instances:
   .
+  > {-# LANGUAGE DeriveGeneric, DerivingVia #-}
+  > import GHC.Generics ( Generic, Generically (..) )
+  >
   > data MyRecord
   >   = MyRecord
   >   { field1 :: Sum Double
@@ -22,7 +25,7 @@
   >   }
   >   deriving Generic
   >   deriving ( Semigroup, Monoid, Group )
-  >     via GenericProduct MyRecord
+  >     via Generically MyRecord
 
 source-repository head
   type: git
@@ -30,13 +33,16 @@
 
 library
 
-  build-depends: 
+  build-depends:
       base
-        >= 4.12 && < 4.17
-    , generic-data
-        >= 0.8.0.0 && < 0.10
+        >= 4.12 && < 4.18
     , groups
         >= 0.4.0.0 && < 0.6
+
+  if impl(ghc < 9.3)
+    build-depends:
+      generic-data
+        >= 0.8.0.0 && < 0.10
 
   hs-source-dirs:
       src
diff --git a/src/Data/Group/Generics.hs b/src/Data/Group/Generics.hs
--- a/src/Data/Group/Generics.hs
+++ b/src/Data/Group/Generics.hs
@@ -43,14 +43,12 @@
 import Data.Proxy
   ( Proxy(..) )
 import GHC.Generics
-  ( Generic(..)
-  , U1(..), Rec1(..), M1(..), K1(..), Par1(..)
-  , (:*:)(..), (:.:)(..)
-  )
 
+#if __GLASGOW_HASKELL__ < 903
 -- generic-data
 import Generic.Data
   ( Generically(..), GenericProduct(..) )
+#endif
 
 -- groups
 import Data.Group
@@ -67,22 +65,12 @@
 
 instance
   ( Generic g
-  , Monoid ( GenericProduct g )
-  , Group  ( Rep g () )
-  )
-  => Group ( GenericProduct g ) where
-  invert  = ginvert
-  pow x n = gpow x n
-
-instance
-  ( Generic g
-  , Semigroup g
   , Monoid ( Generically g )
   , Group  ( Rep g () )
   )
   => Group ( Generically g ) where
-  invert  = ginvert
-  pow x n = gpow x n
+  invert (Generically g) = Generically ( ginvert g )
+  pow (Generically x) n = Generically ( gpow x n )
 
 instance Group (U1 p) where
   invert _ = U1
@@ -126,15 +114,7 @@
 
 instance
   ( Generic g
-  , Monoid  ( GenericProduct g )
-  , Abelian ( Rep g () )
-  )
-  => Abelian ( GenericProduct g )
-
-instance
-  ( Generic g
-  , Semigroup g
-  , Monoid  ( Generically g )
+  , Group ( Generically g )
   , Abelian ( Rep g () )
   )
   => Abelian ( Generically g )
