diff --git a/Data/Constraint.hs b/Data/Constraint.hs
--- a/Data/Constraint.hs
+++ b/Data/Constraint.hs
@@ -4,9 +4,7 @@
 
 import Control.Categorical.Functor
 import Control.Category
-import Data.Semigroup
-
-import GHC.Exts (Constraint)
+import Data.Kind (Constraint)
 
 data Dict a where Dict :: a => Dict a
 
diff --git a/Data/Constraint/Product.hs b/Data/Constraint/Product.hs
new file mode 100644
--- /dev/null
+++ b/Data/Constraint/Product.hs
@@ -0,0 +1,6 @@
+{-# LANGUAGE UndecidableSuperClasses #-}
+
+module Data.Constraint.Product where
+
+class    (a, b) => Product a b
+instance (a, b) => Product a b
diff --git a/constraint.cabal b/constraint.cabal
--- a/constraint.cabal
+++ b/constraint.cabal
@@ -1,5 +1,5 @@
 name:                constraint
-version:             0.1.0.1
+version:             0.1.1.0
 synopsis:            Reified constraints
 -- description:         
 license:             BSD3
@@ -14,10 +14,11 @@
 library
   exposed-modules:     Data.Constraint
                      , Data.Constraint.Compose
+                     , Data.Constraint.Product
   -- other-modules:       
   -- other-extensions:    
   build-depends:       base >=4.10 && <5
-                     , category >=0.1.2
+                     , category >=0.1.2 && <0.3
   -- hs-source-dirs:      
   default-language:    Haskell2010
   default-extensions:  TypeOperators
