diff --git a/Data/Morphism/Endo.hs b/Data/Morphism/Endo.hs
new file mode 100644
--- /dev/null
+++ b/Data/Morphism/Endo.hs
@@ -0,0 +1,16 @@
+module Data.Morphism.Endo where
+
+import Algebra as A
+import Control.Category.Groupoid as C
+
+newtype Endo s a = Endo { endo :: s a a }
+  deriving (Typeable)
+
+instance Category s => Semigroup (Endo s a) where
+    Endo f <> Endo g = Endo (f . g)
+
+instance Category s => Monoid (Endo s a) where
+    mempty = Endo id
+
+instance Groupoid s => Group (Endo s a) where
+    invert (Endo f) = Endo (C.invert f)
diff --git a/Data/Morphism/Iso.hs b/Data/Morphism/Iso.hs
new file mode 100644
--- /dev/null
+++ b/Data/Morphism/Iso.hs
@@ -0,0 +1,13 @@
+module Data.Morphism.Iso where
+
+import Control.Category.Groupoid
+
+data Iso s a b = Iso (s a b) (s b a)
+  deriving (Typeable)
+
+instance Category s => Category (Iso s) where
+    id = Iso id id
+    Iso f f' . Iso g g' = Iso (f . g) (g' . f')
+
+instance Category s => Groupoid (Iso s) where
+    invert (Iso f f') = Iso f' f
diff --git a/Prelude.hs b/Prelude.hs
--- a/Prelude.hs
+++ b/Prelude.hs
@@ -2,10 +2,13 @@
                 module Data.Data,
                 module Data.Either,
                 module Data.Type.Equality,
-                module Data.Typeable) where
+                module Data.Typeable,
+                Semigroup (..), Monoid (..)) where
 
 import Control.Category
 import Data.Data
 import Data.Either
+import Data.Monoid (Monoid (..))
+import Data.Semigroup (Semigroup (..))
 import Data.Type.Equality
 import Data.Typeable
diff --git a/category.cabal b/category.cabal
--- a/category.cabal
+++ b/category.cabal
@@ -1,5 +1,5 @@
 name:                category
-version:             0.1.0.1
+version:             0.1.1.0
 synopsis:            Categorical types and classes
 -- description:         
 license:             BSD3
@@ -14,8 +14,11 @@
 library
   exposed-modules:     Control.Category.Dual
                      , Control.Category.Groupoid
+                     , Data.Morphism.Endo
+                     , Data.Morphism.Iso
   other-modules:       Prelude
   build-depends:       base >=4.10 && <5
+                     , alg >=0.2 && <0.3
   default-language:    Haskell2010
   default-extensions:  LambdaCase
                      , PolyKinds
