diff --git a/category.cabal b/category.cabal
--- a/category.cabal
+++ b/category.cabal
@@ -1,5 +1,5 @@
 name:                category
-version:             0.2.4.1
+version:             0.2.4.2
 synopsis:            Categorical types and classes
 -- description:         
 license:             BSD3
@@ -9,7 +9,7 @@
 -- copyright:           
 category:            Control, Math
 build-type:          Simple
-cabal-version:       >=1.10
+cabal-version:       >=1.22
 bug-reports:         http://github.com/strake/category.hs/issues
 tested-with:         GHC ==8.4.3
                    , GHC ==8.6.4
@@ -19,16 +19,17 @@
   exposed-modules:     Control.Categorical.Functor
                      , Control.Categorical.Monad
                      , Control.Category.Const2
-                     , Control.Category.Dual
                      , Control.Category.Groupoid
                      , Data.Functor.Trans.Identity
                      , Data.Functor.Trans.Reader
                      , Data.Functor.Trans.Writer
                      , Data.Morphism.Endo
                      , Data.Morphism.Iso
+  reexported-modules:  Control.Category.Dual
   other-modules:       Prelude
   build-depends:       base >=4.10 && <5
                      , alg >=0.2 && <0.3
+                     , dual >=0.1.0.2 && <0.2
                      , transformers >= 0.5 && < 0.6
   default-language:    Haskell2010
   default-extensions:  UnicodeSyntax
diff --git a/src/Control/Category/Dual.hs b/src/Control/Category/Dual.hs
deleted file mode 100644
--- a/src/Control/Category/Dual.hs
+++ /dev/null
@@ -1,13 +0,0 @@
-module Control.Category.Dual where
-
-import Control.Category.Groupoid
-
-newtype Dual k a b = Dual { dual :: k b a }
-  deriving (Semigroup, Monoid, Group)
-
-instance Category k => Category (Dual k) where
-    id = Dual id
-    Dual f . Dual g = Dual (g . f)
-
-instance Groupoid k => Groupoid (Dual k) where
-    invert = Dual . invert . dual
diff --git a/src/Control/Category/Groupoid.hs b/src/Control/Category/Groupoid.hs
--- a/src/Control/Category/Groupoid.hs
+++ b/src/Control/Category/Groupoid.hs
@@ -1,5 +1,7 @@
 module Control.Category.Groupoid where
 
+import Control.Category.Dual
+
 -- | 'Category' where every morphism is iso
 --
 -- Laws:
@@ -10,3 +12,5 @@
 -- @
 class Category k => Groupoid k where
     invert :: k a b -> k b a
+
+instance Groupoid k => Groupoid (Dual k) where invert = Dual . invert . dual
