diff --git a/smallcheck-kind-generics.cabal b/smallcheck-kind-generics.cabal
--- a/smallcheck-kind-generics.cabal
+++ b/smallcheck-kind-generics.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.4
 name:                smallcheck-kind-generics
-version:             0.0.0.0
+version:             0.0.0.1
 synopsis:            See README for more info
 description:         See README for more info
 homepage:            https://github.com/strake/smallcheck-kind-generics.hs
diff --git a/src/Test/SmallCheck/GenericK.hs b/src/Test/SmallCheck/GenericK.hs
--- a/src/Test/SmallCheck/GenericK.hs
+++ b/src/Test/SmallCheck/GenericK.hs
@@ -9,7 +9,10 @@
 
 import Control.Applicative
 import Data.Kind (Type)
-import Generics.Kind
+import Data.Type.Equality
+import GHC.Generics (C)
+import Generics.Kind hiding ((:~:))
+import Type.Reflection (Typeable, typeRep)
 
 import Test.SmallCheck.Series
 
@@ -27,8 +30,9 @@
     gSeries = (L1 <$> gSeries) \/ (R1 <$> gSeries)
 instance (Monad m, GSerial m f x, GSerial m g x) => GSerial m (f :*: g) x where
     gSeries = (:*:) <$> gSeries <~> gSeries
-instance GSerial m f x => GSerial m (M1 i c f) x where
-    gSeries = M1 <$> gSeries
+instance (Typeable i, GSerial m f x) => GSerial m (M1 i c f) x where
+    gSeries = ($ M1 <$> gSeries) $ case testEquality typeRep typeRep :: Maybe (i :~: C) of
+        Just _ -> decDepth; _ -> id
 instance (Serial m (Interpret t x)) => GSerial m (Field t) x where
     gSeries = Field <$> series
 instance (∀ (t :: k) . GSerial m f (t :&&: x)) => GSerial m (Exists k f) x where
