diff --git a/library/Rebase/Control/Monad/IO/Class.hs b/library/Rebase/Control/Monad/IO/Class.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Control/Monad/IO/Class.hs
@@ -0,0 +1,7 @@
+module Rebase.Control.Monad.IO.Class
+(
+  module Control.Monad.IO.Class,
+)
+where
+
+import Control.Monad.IO.Class
diff --git a/library/Rebase/Control/Monad/Trans/Class.hs b/library/Rebase/Control/Monad/Trans/Class.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Control/Monad/Trans/Class.hs
@@ -0,0 +1,7 @@
+module Rebase.Control.Monad.Trans.Class
+(
+  module Control.Monad.Trans.Class,
+)
+where
+
+import Control.Monad.Trans.Class
diff --git a/library/Rebase/Control/Monad/Trans/Cont.hs b/library/Rebase/Control/Monad/Trans/Cont.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Control/Monad/Trans/Cont.hs
@@ -0,0 +1,7 @@
+module Rebase.Control.Monad.Trans.Cont
+(
+  module Control.Monad.Trans.Cont,
+)
+where
+
+import Control.Monad.Trans.Cont
diff --git a/library/Rebase/Control/Monad/Trans/Either.hs b/library/Rebase/Control/Monad/Trans/Either.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Control/Monad/Trans/Either.hs
@@ -0,0 +1,7 @@
+module Rebase.Control.Monad.Trans.Either
+(
+  module Control.Monad.Trans.Either,
+)
+where
+
+import Control.Monad.Trans.Either
diff --git a/library/Rebase/Control/Monad/Trans/Except.hs b/library/Rebase/Control/Monad/Trans/Except.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Control/Monad/Trans/Except.hs
@@ -0,0 +1,7 @@
+module Rebase.Control.Monad.Trans.Except
+(
+  module Control.Monad.Trans.Except,
+)
+where
+
+import Control.Monad.Trans.Except
diff --git a/library/Rebase/Control/Monad/Trans/Maybe.hs b/library/Rebase/Control/Monad/Trans/Maybe.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Control/Monad/Trans/Maybe.hs
@@ -0,0 +1,7 @@
+module Rebase.Control.Monad.Trans.Maybe
+(
+  module Control.Monad.Trans.Maybe,
+)
+where
+
+import Control.Monad.Trans.Maybe
diff --git a/library/Rebase/Control/Monad/Trans/Reader.hs b/library/Rebase/Control/Monad/Trans/Reader.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Control/Monad/Trans/Reader.hs
@@ -0,0 +1,7 @@
+module Rebase.Control.Monad.Trans.Reader
+(
+  module Control.Monad.Trans.Reader,
+)
+where
+
+import Control.Monad.Trans.Reader
diff --git a/library/Rebase/Control/Monad/Trans/State/Lazy.hs b/library/Rebase/Control/Monad/Trans/State/Lazy.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Control/Monad/Trans/State/Lazy.hs
@@ -0,0 +1,7 @@
+module Rebase.Control.Monad.Trans.State.Lazy
+(
+  module Control.Monad.Trans.State.Lazy,
+)
+where
+
+import Control.Monad.Trans.State.Lazy
diff --git a/library/Rebase/Control/Monad/Trans/State/Strict.hs b/library/Rebase/Control/Monad/Trans/State/Strict.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Control/Monad/Trans/State/Strict.hs
@@ -0,0 +1,7 @@
+module Rebase.Control.Monad.Trans.State.Strict
+(
+  module Control.Monad.Trans.State.Strict,
+)
+where
+
+import Control.Monad.Trans.State.Strict
diff --git a/library/Rebase/Control/Monad/Trans/Writer/Lazy.hs b/library/Rebase/Control/Monad/Trans/Writer/Lazy.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Control/Monad/Trans/Writer/Lazy.hs
@@ -0,0 +1,7 @@
+module Rebase.Control.Monad.Trans.Writer.Lazy
+(
+  module Control.Monad.Trans.Writer.Lazy,
+)
+where
+
+import Control.Monad.Trans.Writer.Lazy
diff --git a/library/Rebase/Control/Monad/Trans/Writer/Strict.hs b/library/Rebase/Control/Monad/Trans/Writer/Strict.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Control/Monad/Trans/Writer/Strict.hs
@@ -0,0 +1,7 @@
+module Rebase.Control.Monad.Trans.Writer.Strict
+(
+  module Control.Monad.Trans.Writer.Strict,
+)
+where
+
+import Control.Monad.Trans.Writer.Strict
diff --git a/library/Rebase/Data/Either/Combinators.hs b/library/Rebase/Data/Either/Combinators.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Data/Either/Combinators.hs
@@ -0,0 +1,7 @@
+module Rebase.Data.Either.Combinators
+(
+  module Data.Either.Combinators,
+)
+where
+
+import Data.Either.Combinators
diff --git a/library/Rebase/Data/Either/Validation.hs b/library/Rebase/Data/Either/Validation.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Data/Either/Validation.hs
@@ -0,0 +1,7 @@
+module Rebase.Data.Either.Validation
+(
+  module Data.Either.Validation,
+)
+where
+
+import Data.Either.Validation
diff --git a/library/Rebase/Data/Functor/Identity.hs b/library/Rebase/Data/Functor/Identity.hs
new file mode 100644
--- /dev/null
+++ b/library/Rebase/Data/Functor/Identity.hs
@@ -0,0 +1,7 @@
+module Rebase.Data.Functor.Identity
+(
+  module Data.Functor.Identity,
+)
+where
+
+import Data.Functor.Identity
diff --git a/library/Rebase/Prelude.hs b/library/Rebase/Prelude.hs
--- a/library/Rebase/Prelude.hs
+++ b/library/Rebase/Prelude.hs
@@ -13,8 +13,12 @@
 
 -- base-prelude
 -------------------------
-import BasePrelude as Exports hiding (fail, Last(..), First(..), (<>))
+import BasePrelude as Exports hiding (Last(..), First(..), (<>))
 
+-- base
+-------------------------
+import Rebase.Data.Functor.Identity as Exports
+
 -- profunctors
 -------------------------
 import Rebase.Data.Profunctor.Unsafe as Exports
@@ -36,6 +40,23 @@
 -- deepseq
 -------------------------
 import Rebase.Control.DeepSeq as Exports
+
+-- transformers
+-------------------------
+import Rebase.Control.Monad.IO.Class as Exports
+import Rebase.Control.Monad.Trans.Class as Exports
+import Rebase.Control.Monad.Trans.Cont as Exports hiding (shift)
+import Rebase.Control.Monad.Trans.Except as Exports (ExceptT(ExceptT), Except, except, runExcept, runExceptT, mapExcept, mapExceptT, withExcept, withExceptT)
+import Rebase.Control.Monad.Trans.Maybe as Exports
+import Rebase.Control.Monad.Trans.Reader as Exports (Reader, runReader, mapReader, withReader, ReaderT(ReaderT), runReaderT, mapReaderT, withReaderT)
+import Rebase.Control.Monad.Trans.State.Strict as Exports (State, runState, evalState, execState, mapState, withState, StateT(StateT), runStateT, evalStateT, execStateT, mapStateT, withStateT)
+import Rebase.Control.Monad.Trans.Writer.Strict as Exports (Writer, runWriter, execWriter, mapWriter, WriterT(..), execWriterT, mapWriterT)
+
+-- either
+-------------------------
+import Rebase.Control.Monad.Trans.Either as Exports hiding (left, right)
+import Rebase.Data.Either.Combinators as Exports hiding (isLeft, isRight)
+import Rebase.Data.Either.Validation as Exports
 
 -- hashable
 -------------------------
diff --git a/rebase.cabal b/rebase.cabal
--- a/rebase.cabal
+++ b/rebase.cabal
@@ -1,7 +1,7 @@
 name:
   rebase
 version:
-  0.2.1
+  0.2.3
 synopsis:
   A more progressive alternative to the "base" package
 description:
@@ -59,6 +59,8 @@
   other-modules:
   exposed-modules:
     Rebase.Prelude
+    -- base:
+    Rebase.Data.Functor.Identity
     -- hashable:
     Rebase.Data.Hashable
     -- containers:
@@ -106,6 +108,21 @@
     Rebase.Data.List.NonEmpty
     -- deepseq:
     Rebase.Control.DeepSeq
+    -- transformers:
+    Rebase.Control.Monad.IO.Class
+    Rebase.Control.Monad.Trans.Class
+    Rebase.Control.Monad.Trans.Cont
+    Rebase.Control.Monad.Trans.Except
+    Rebase.Control.Monad.Trans.Maybe
+    Rebase.Control.Monad.Trans.Reader
+    Rebase.Control.Monad.Trans.State.Lazy
+    Rebase.Control.Monad.Trans.State.Strict
+    Rebase.Control.Monad.Trans.Writer.Lazy
+    Rebase.Control.Monad.Trans.Writer.Strict
+    -- either:
+    Rebase.Control.Monad.Trans.Either
+    Rebase.Data.Either.Combinators
+    Rebase.Data.Either.Validation
   build-depends:
     -- data:
     hashable >= 1.2 && < 2,
@@ -126,6 +143,8 @@
     contravariant-extras == 0.3.*,
     semigroups >= 0.18 && < 0.19,
     deepseq >= 1.4 && < 2,
+    transformers >= 0.4 && < 0.6,
+    either >= 4.4 && < 5,
     -- general:
     base-prelude >= 0.1.21 && < 0.2,
     base >= 4.6 && < 5
