diff --git a/Control/Joint/Base/Either.hs b/Control/Joint/Base/Either.hs
new file mode 100644
--- /dev/null
+++ b/Control/Joint/Base/Either.hs
@@ -0,0 +1,14 @@
+module Control.Joint.Base.Either where
+
+import Control.Joint.Composition (Composition (Primary, unwrap))
+import Control.Joint.Transformer (Transformer (Schema, lay, wrap))
+import Control.Joint.Schemes.UT (UT (UT))
+
+instance Composition (Either e) where
+	type Primary (Either e) a = Either e a
+	unwrap x = x
+
+instance Transformer (Either e) where
+	type Schema (Either e) u = UT (Either e) u
+	lay x = UT $ Right <$> x
+	wrap x = UT . pure $ x
diff --git a/Control/Joint/Base/Maybe.hs b/Control/Joint/Base/Maybe.hs
new file mode 100644
--- /dev/null
+++ b/Control/Joint/Base/Maybe.hs
@@ -0,0 +1,14 @@
+module Control.Joint.Base.Maybe where
+
+import Control.Joint.Composition (Composition (Primary, unwrap))
+import Control.Joint.Transformer (Transformer (Schema, lay, wrap))
+import Control.Joint.Schemes.UT (UT (UT))
+
+instance Composition Maybe where
+	type Primary Maybe a = Maybe a
+	unwrap x = x
+
+instance Transformer Maybe where
+	type Schema Maybe u = UT Maybe u
+	lay x = UT $ Just <$> x
+	wrap x = UT . pure $ x
diff --git a/Control/Joint/Base/Reader.hs b/Control/Joint/Base/Reader.hs
new file mode 100644
--- /dev/null
+++ b/Control/Joint/Base/Reader.hs
@@ -0,0 +1,16 @@
+module Control.Joint.Base.Reader where
+
+import Control.Joint.Composition (Composition (Primary, unwrap))
+import Control.Joint.Transformer (Transformer (Schema, lay, wrap))
+import Control.Joint.Schemes.TU (TU (TU))
+
+newtype Reader r a = Reader (r -> a)
+
+instance Composition (Reader e) where
+	type Primary (Reader e) a = (->) e a
+	unwrap (Reader x) = x
+
+instance Transformer (Reader r) where
+	type Schema (Reader r) u = TU ((->) r) u
+	lay x = TU . const $ x
+	wrap x = TU $ pure <$> unwrap x
diff --git a/Control/Joint/Schemes/UT.hs b/Control/Joint/Schemes/UT.hs
new file mode 100644
--- /dev/null
+++ b/Control/Joint/Schemes/UT.hs
@@ -0,0 +1,10 @@
+module Control.Joint.Schemes.UT (UT (..)) where
+
+import Control.Joint.Core (type (:.), type (:=))
+import Control.Joint.Composition (Composition (Primary, unwrap))
+
+newtype UT t u a = UT (u :. t := a)
+
+instance Composition (UT t u) where
+	type Primary (UT t u) a = u :. t := a
+	unwrap (UT x) = x
diff --git a/Control/Joint/Transformer.hs b/Control/Joint/Transformer.hs
--- a/Control/Joint/Transformer.hs
+++ b/Control/Joint/Transformer.hs
@@ -1,4 +1,4 @@
-module Control.Joint.Transformer (Transformer (..)) where
+module Control.Joint.Transformer (Transformer (..), type (:>)) where
 
 import Control.Joint.Core (type (~>))
 import Control.Joint.Composition (Composition)
diff --git a/joint.cabal b/joint.cabal
--- a/joint.cabal
+++ b/joint.cabal
@@ -1,5 +1,5 @@
 name:                joint
-version:             0.1.0
+version:             0.1.1
 synopsis:            Trying to compose non-composable
 homepage:            https://github.com/iokasimov/joint
 license:             BSD3
@@ -22,7 +22,11 @@
     Control.Joint.Transformer
     Control.Joint.Schemes
     Control.Joint.Schemes.TU
+    Control.Joint.Schemes.UT
     Control.Joint.Schemes.UTU
+    Control.Joint.Base.Maybe
+    Control.Joint.Base.Either
+    Control.Joint.Base.Reader
   build-depends: base == 4.*
   default-language: Haskell2010
   ghc-options: -fno-warn-tabs
