diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+# 0.3.0.4
+
+- Added support for GHC `9.10`.
+
 # 0.3.0.3
 
 - Revised upper bounds for package dependencies.
diff --git a/quickcheck-monoid-subclasses.cabal b/quickcheck-monoid-subclasses.cabal
--- a/quickcheck-monoid-subclasses.cabal
+++ b/quickcheck-monoid-subclasses.cabal
@@ -1,6 +1,6 @@
 cabal-version:  3.0
 name:           quickcheck-monoid-subclasses
-version:        0.3.0.3
+version:        0.3.0.4
 bug-reports:    https://github.com/jonathanknowles/quickcheck-monoid-subclasses/issues
 license:        Apache-2.0
 license-file:   LICENSE
@@ -19,7 +19,7 @@
     README.md
 
 common dependency-base
-    build-depends:base                      >= 4.14.3.0     && < 4.20
+    build-depends:base                      >= 4.14.3.0     && < 4.21
 common dependency-bytestring
     build-depends:bytestring                >= 0.10.12.0    && < 0.13
 common dependency-commutative-semigroups
@@ -54,6 +54,7 @@
         FlexibleInstances
         GeneralizedNewtypeDeriving
         LambdaCase
+        NoImplicitPrelude
         PolyKinds
         ScopedTypeVariables
         TypeApplications
diff --git a/src/internal/Internal.hs b/src/internal/Internal.hs
--- a/src/internal/Internal.hs
+++ b/src/internal/Internal.hs
@@ -14,6 +14,8 @@
     )
     where
 
+import Prelude
+
 import Data.Function
     ( (&) )
 import Data.Proxy
diff --git a/src/internal/Internal/Semigroup/Eq.hs b/src/internal/Internal/Semigroup/Eq.hs
--- a/src/internal/Internal/Semigroup/Eq.hs
+++ b/src/internal/Internal/Semigroup/Eq.hs
@@ -9,6 +9,8 @@
     )
     where
 
+import Prelude
+
 import Data.List
     ( nub )
 
diff --git a/src/internal/Internal/Semigroup/Tuple.hs b/src/internal/Internal/Semigroup/Tuple.hs
--- a/src/internal/Internal/Semigroup/Tuple.hs
+++ b/src/internal/Internal/Semigroup/Tuple.hs
@@ -9,6 +9,8 @@
 module Internal.Semigroup.Tuple
     where
 
+import Prelude
+
 import Data.Functor
     ( (<&>) )
 import Data.List.NonEmpty
diff --git a/src/public/Test/QuickCheck/Classes/Semigroup/Cancellative.hs b/src/public/Test/QuickCheck/Classes/Semigroup/Cancellative.hs
--- a/src/public/Test/QuickCheck/Classes/Semigroup/Cancellative.hs
+++ b/src/public/Test/QuickCheck/Classes/Semigroup/Cancellative.hs
@@ -26,6 +26,8 @@
     )
     where
 
+import Prelude
+
 import Data.Function
     ( (&) )
 import Data.Maybe
diff --git a/src/public/Test/QuickCheck/Classes/Semigroup/Factorial.hs b/src/public/Test/QuickCheck/Classes/Semigroup/Factorial.hs
--- a/src/public/Test/QuickCheck/Classes/Semigroup/Factorial.hs
+++ b/src/public/Test/QuickCheck/Classes/Semigroup/Factorial.hs
@@ -17,17 +17,26 @@
     )
     where
 
-import Prelude hiding
-    ( foldl, foldr, length, reverse )
-
+import Data.Bool
+    ( Bool (True) )
+import Data.Eq
+    ( Eq ((==)) )
+import Data.Foldable
+    ( all )
 import Data.Function
-    ( (&) )
+    ( ($), (&) )
+import Data.Functor
+    ( Functor (fmap), (<$>) )
 import Data.List.NonEmpty
     ( nonEmpty )
+import Data.Maybe
+    ( maybe )
+import Data.Ord
+    ( Ord ((>=)) )
 import Data.Proxy
     ( Proxy )
 import Data.Semigroup
-    ( Semigroup (sconcat) )
+    ( Semigroup (sconcat, (<>)) )
 import Data.Semigroup.Factorial
     ( Factorial
     , StableFactorial
@@ -40,12 +49,16 @@
     , primeSuffix
     , reverse
     )
+import Data.String
+    ( String )
 import Internal
     ( cover, makeLaw1, makeLaw2, makeProperty, report )
 import Test.QuickCheck
     ( Arbitrary, Gen, Property, elements, forAllBlind )
 import Test.QuickCheck.Classes
     ( Laws (Laws) )
+import Text.Show
+    ( Show )
 
 import qualified Data.List as L
 
diff --git a/src/test/ClassSpec.hs b/src/test/ClassSpec.hs
--- a/src/test/ClassSpec.hs
+++ b/src/test/ClassSpec.hs
@@ -6,6 +6,8 @@
 --
 module ClassSpec where
 
+import Prelude
+
 import Data.ByteString.Lazy
     ( ByteString )
 import Data.IntMap.Strict
