diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,7 @@
+0.1.0.2
+
+* `_ExitSuccess` more polymorphic.
+
 0.1.0.1
 
 * Make `_ExitSuccess` more polymorphic. It was unnecessarily specialised to `()`.
diff --git a/exitcode.cabal b/exitcode.cabal
--- a/exitcode.cabal
+++ b/exitcode.cabal
@@ -1,7 +1,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                exitcode
-version:             0.1.0.1
+version:             0.1.0.2
 synopsis:            Monad transformer for exit codes
 description:       
   <<http://i.imgur.com/uZnp9ke.png>>
@@ -18,7 +18,7 @@
 cabal-version:       >=1.10
 homepage:            https://github.com/qfpl/exitcode
 bug-reports:         https://github.com/qfpl/exitcode/issues
-tested-with:         GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.1
+tested-with:         GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.3, GHC == 8.6.1
 
 source-repository   head
   type:             git
@@ -26,11 +26,11 @@
 
 library
   exposed-modules:     Control.Exitcode
-  build-depends:       base >=4.8 && <4.11
-                     , lens >=4.15 && < 4.17
+  build-depends:       base >=4.8 && <4.13
+                     , lens >=4.15 && < 4.18
                      , mmorph >= 1.0 && < 1.2
                      , mtl >=2.2 && <2.3
-                     , semigroupoids >=5.1 && <5.3
+                     , semigroupoids >=5.1 && <5.4
                      , semigroups >=0.16 && <0.19
                      , transformers >=0.4.1 && <5.5
   hs-source-dirs:      src
@@ -38,13 +38,13 @@
   ghc-options:         -Wall
 
 test-suite             tests
-  build-depends:       QuickCheck >=2.9.2 && <2.12
-                     , base >=4.8 && <4.11
+  build-depends:       QuickCheck >=2.9.2 && <2.13
+                     , base >=4.8 && <4.13
                      , checkers >=0.4.6 && <0.5
                      , exitcode
-                     , hedgehog >=0.5 && <0.6
-                     , lens >=4.15 && <4.17
-                     , tasty >=0.11 && <1.1
+                     , hedgehog >=0.5 && <0.7
+                     , lens >=4.15 && <4.18
+                     , tasty >=0.11 && <1.3
                      , tasty-hunit >=0.9 && <0.11
                      , tasty-hedgehog >= 0.1 && <0.3
                      , tasty-quickcheck >=0.8.4 && <0.11
diff --git a/src/Control/Exitcode.hs b/src/Control/Exitcode.hs
--- a/src/Control/Exitcode.hs
+++ b/src/Control/Exitcode.hs
@@ -26,8 +26,8 @@
 
 import           Control.Applicative        (Applicative(pure, (<*>)), liftA2)
 import           Control.Category           ((.))
-import           Control.Lens               (Iso, Prism', iso, prism', view,
-                                             (^?), _Left, _Right)
+import           Control.Lens               (Iso, Prism', Prism, iso, prism', prism, view, over,
+                                             (^?), _Left)
 import           Control.Monad              (Monad(return, (>>=)))
 import           Control.Monad.Cont.Class   (MonadCont (..))
 import           Control.Monad.Error.Class  (MonadError (..))
@@ -160,13 +160,17 @@
     (\(ExitcodeT (Identity x)) -> x ^? _Left)
 
 _ExitSuccess ::
-  Prism'
+  Prism
     (Exitcode a)
+    (Exitcode b)
     a
+    b
 _ExitSuccess =
-  prism'
+  prism
     exitsuccess
-    (\(ExitcodeT (Identity x)) -> x ^? _Right)
+    (\(ExitcodeT (Identity x)) ->
+      over _Left (ExitcodeT . Identity . Left) x
+    )
 
 instance Functor f => Functor (ExitcodeT f) where
   fmap f (ExitcodeT x) =
