diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,18 @@
 Changelog
 =========
 
+Version 0.4.0.1
+---------------
+
+<https://github.com/mstksg/typelits-witnesses/releases/tag/v0.4.0.1>
+
+*November 29, 2023*
+
+*  Fix for GHC 8.2+
+*  Fix type of `(%*)`
+*  `minusSNat` fixed
+*  Qualified `cmpNat`
+
 Version 0.4.0.0
 ---------------
 
diff --git a/src/GHC/TypeLits/Compare.hs b/src/GHC/TypeLits/Compare.hs
--- a/src/GHC/TypeLits/Compare.hs
+++ b/src/GHC/TypeLits/Compare.hs
@@ -83,7 +83,7 @@
   , isNLE
     -- * 'CmpNat'
   , SCmpNat(..)
-  , cmpNat
+  , GHC.TypeLits.Compare.cmpNat
     -- ** Manipulating witnesses
   , flipCmpNat
   , cmpNatEq
@@ -96,7 +96,9 @@
 
 import           Data.Kind
 import           Data.Type.Equality
-import           GHC.TypeLits
+import           GHC.TypeLits ( Nat, KnownNat, CmpNat
+                              , type (<=?)
+                              , natVal )
 import           Unsafe.Coerce
 import           Data.GADT.Compare
 
diff --git a/src/GHC/TypeLits/Witnesses.hs b/src/GHC/TypeLits/Witnesses.hs
--- a/src/GHC/TypeLits/Witnesses.hs
+++ b/src/GHC/TypeLits/Witnesses.hs
@@ -7,6 +7,7 @@
 {-# LANGUAGE RankNTypes                #-}
 {-# LANGUAGE ScopedTypeVariables       #-}
 {-# LANGUAGE StandaloneDeriving        #-}
+{-# LANGUAGE NoStarIsType              #-}
 {-# LANGUAGE TypeInType                #-}
 {-# LANGUAGE TypeOperators             #-}
 {-# LANGUAGE ViewPatterns              #-}
@@ -118,9 +119,12 @@
 import           Data.Proxy
 import           Data.Type.Equality
 import           GHC.Natural
-import           GHC.TypeLits hiding         (natVal, someNatVal)
+import           GHC.TypeLits ( KnownSymbol, SomeSymbol(..)
+                              , symbolVal, someSymbolVal, sameSymbol )
 import           GHC.TypeLits.Compare hiding ((%<=?))
-import           GHC.TypeNats
+import           GHC.TypeNats ( KnownNat, SomeNat(..), CmpNat
+                              , type (+), type (-), type (*), type (^)
+                              , natVal, someNatVal, sameNat )
 import           Unsafe.Coerce
 import qualified GHC.TypeLits.Compare        as Comp
 
@@ -292,20 +296,20 @@
     -> Either (CmpNat n m :~: 'LT) (SNat (n - m))
 minusSNat (fromSNat->x) (fromSNat->y) = case minusNaturalMaybe x y of
     Nothing -> Left (unsafeCoerce Refl)
-    Just z  -> withSomeNat z unsafeCoerce
+    Just z  -> withSomeNat z (Right . unsafeCoerce)
 
 -- | A version of 'minusSNat' that just returns a 'Maybe'.
 minusSNat_ :: SNat n -> SNat m -> Maybe (SNat (n - m))
 minusSNat_ x = either (const Nothing) Just . minusSNat x
 
--- | Addition of 'SNat's.
+-- | Multiplication of 'SNat's.
 --
 -- This also will provide the correct 'KnownNat' instance for @'SNat' (n
 -- * m)@, so can be used as a way to "multiply" 'KnownNat' instances.
 --
 -- This stands in for the function with the same name from
 -- "Data.Singletons.Prelude.Num".
-(%*) :: SNat n -> SNat m -> SNat (n - m)
+(%*) :: SNat n -> SNat m -> SNat (n * m)
 (%*) = unsafeLiftNatOp2 (*)
 
 -- | Exponentiation of 'SNat's.
@@ -326,7 +330,7 @@
 -- | Compare @n@ and @m@, categorizing them into one of the constructors of
 -- 'SCmpNat'.
 sCmpNat :: SNat n -> SNat m -> SCmpNat n m
-sCmpNat x@SNat y@SNat = cmpNat x y
+sCmpNat x@SNat y@SNat = GHC.TypeLits.Compare.cmpNat x y
 
 -- | An @'SSymbol' n@ is a witness for @'KnownSymbol' n@.
 --
diff --git a/typelits-witnesses.cabal b/typelits-witnesses.cabal
--- a/typelits-witnesses.cabal
+++ b/typelits-witnesses.cabal
@@ -1,13 +1,11 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.31.1.
+-- This file has been generated from package.yaml by hpack version 0.34.5.
 --
 -- see: https://github.com/sol/hpack
---
--- hash: 8a6351c34d982cd0199ea26cf5f6378e136998abb7019115d627268f8977bdda
 
 name:           typelits-witnesses
-version:        0.4.0.0
+version:        0.4.0.1
 synopsis:       Existential witnesses, singletons, and classes for operations on GHC TypeLits
 description:    This library contains:
                 .
@@ -28,8 +26,9 @@
 copyright:      (c) Justin Le 2018
 license:        MIT
 license-file:   LICENSE
-tested-with:    GHC>=8.2 && <8.8
 build-type:     Simple
+tested-with:
+    GHC>=8.2
 extra-source-files:
     README.md
     CHANGELOG.md
@@ -49,5 +48,5 @@
   ghc-options: -Wall -Wredundant-constraints -Werror=incomplete-patterns -Wcompat
   build-depends:
       base >=4.10 && <5
-    , dependent-sum
+    , dependent-sum <0.8
   default-language: Haskell2010
