diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,7 @@
+0.0.4
+
+* Add `downReader` functions.
+
 0.0.3
 
 * Add `homReader` functions.
diff --git a/reader.cabal b/reader.cabal
--- a/reader.cabal
+++ b/reader.cabal
@@ -1,5 +1,5 @@
 name:                 reader
-version:              0.0.3
+version:              0.0.4
 synopsis:             A reader data type with all the bits
 description:          A reader data type with all the bits and type constructor rearrangements
 license:              BSD3
diff --git a/src/Data/Reader/Reader1.hs b/src/Data/Reader/Reader1.hs
--- a/src/Data/Reader/Reader1.hs
+++ b/src/Data/Reader/Reader1.hs
@@ -15,6 +15,7 @@
 , reader1'
 , star1
 , kleisli1
+, downReader1
 , homReader1
 ) where
 
@@ -123,6 +124,17 @@
   iso
     (\(Kleisli k) -> Reader1T k)
     (\(Reader1T k) -> Kleisli k)
+
+downReader1 ::
+  Iso
+    (Reader1T a f b)
+    (Reader1T a' f' b')
+    (Reader1 a (f b))
+    (Reader1 a' (f' b'))
+downReader1 =
+  iso
+    (review reader1 . view _Wrapped)
+    (review _Wrapped . view reader1)
 
 homReader1 ::
   (forall x. f x -> g x)
diff --git a/src/Data/Reader/Reader2.hs b/src/Data/Reader/Reader2.hs
--- a/src/Data/Reader/Reader2.hs
+++ b/src/Data/Reader/Reader2.hs
@@ -16,10 +16,10 @@
 , reader2'
 , star2
 , kleisli2
+, downReader2
 , homReader2
 ) where
 
-import Data.Type.Equality
 import Control.Applicative
     ( Applicative((<*>), pure), Alternative((<|>), empty) )
 import Control.Arrow
@@ -144,6 +144,17 @@
   iso
     (\(Kleisli k) -> Reader2T k)
     (\(Reader2T k) -> Kleisli k)
+
+downReader2 ::
+  Iso
+    (Reader2T f a b)
+    (Reader2T f' a' b')
+    (Reader2 a (f b))
+    (Reader2 a' (f' b'))
+downReader2 =
+  iso
+    (review reader2 . view _Wrapped)
+    (review _Wrapped . view reader2)
 
 homReader2 ::
   (forall x. f x -> g x)
diff --git a/src/Data/Reader/Reader3.hs b/src/Data/Reader/Reader3.hs
--- a/src/Data/Reader/Reader3.hs
+++ b/src/Data/Reader/Reader3.hs
@@ -15,9 +15,10 @@
 , reader3'
 , star3
 , kleisli3
+, downReader3
 , homReader3
 ) where
-import Data.Type.Equality
+
 import Control.Applicative
     ( Applicative(pure), liftA2 )
 import Control.Arrow
@@ -111,6 +112,17 @@
   iso
     (\(Kleisli k) -> Reader3T k)
     (\(Reader3T k) -> Kleisli k)
+
+downReader3 ::
+  Iso
+    (Reader3T f b a)
+    (Reader3T f' b' a')
+    (Reader3 a (f b))
+    (Reader3 a' (f' b'))
+downReader3 =
+  iso
+    (review reader3 . view _Wrapped)
+    (review _Wrapped . view reader3)
 
 homReader3 ::
   (forall x. f x -> g x)
