diff --git a/src/Control/Monad/Trans/Except/Extra.hs b/src/Control/Monad/Trans/Except/Extra.hs
--- a/src/Control/Monad/Trans/Except/Extra.hs
+++ b/src/Control/Monad/Trans/Except/Extra.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE NoImplicitPrelude #-}
-{-# LANGUAGE PatternSynonyms #-}
 {-# LANGUAGE RankNTypes #-}
 -----------------------------------------------------------------------------
 -- |
@@ -44,22 +43,24 @@
   , bracketExceptionT
 
   , hushM
+  , onLeft
+  , onNothing
   ) where
 
 import           Control.Exception (Exception, IOException, SomeException)
 import qualified Control.Exception as Exception
-import           Control.Monad (Monad(..), (=<<))
+import           Control.Monad (Monad (..), (=<<))
 import           Control.Monad.Catch (Handler (..), MonadCatch, MonadMask, catchAll, mask, throwM)
 import qualified Control.Monad.Catch as Catch
 import           Control.Monad.IO.Class (MonadIO, liftIO)
 import           Control.Monad.Trans.Class (lift)
 import           Control.Monad.Trans.Except
 
-import           Data.Maybe (Maybe(..), maybe)
-import           Data.Either (Either(..), either)
+import           Data.Either (Either (..), either)
 import           Data.Foldable (Foldable, foldr)
-import           Data.Function (($), (.), const, id, flip)
-import           Data.Functor (Functor(..))
+import           Data.Function (const, flip, id, ($), (.))
+import           Data.Functor (Functor (..))
+import           Data.Maybe (Maybe (..), maybe)
 
 import           System.IO (IO)
 
@@ -292,3 +293,13 @@
   Right a -> return (Just a)
   Left e -> f e >> return Nothing
 {-# INLINE hushM #-}
+
+-- | Handle the Left constructor in returned Either.
+onLeft :: forall e x m a. Monad m => (e -> ExceptT x m a) -> ExceptT x m (Either e a) -> ExceptT x m a
+onLeft h f = f >>= either h return
+{-# INLINE onLeft #-}
+
+-- | Handle the Nothing constructor in returned Maybe.
+onNothing :: forall x m a. Monad m => ExceptT x m a -> ExceptT x m (Maybe a) -> ExceptT x m a
+onNothing h f = f >>= maybe h return
+{-# INLINE onNothing #-}
diff --git a/transformers-except.cabal b/transformers-except.cabal
--- a/transformers-except.cabal
+++ b/transformers-except.cabal
@@ -1,41 +1,35 @@
-cabal-version:         3.0
-name:                  transformers-except
-version:               0.1.2
-license:               BSD-3-Clause
-license-file:          LICENSE
-author:                Tim McGilchrist <timmcgil@gmail.com>
-maintainer:            Tim McGilchrist <timmcgil@gmail.com>
-copyright:             (c) 2017 Tim McGilchrist
-synopsis:              An Except monad transformer with 
-category:              System
-build-type:            Simple
-tested-with:           GHC == 8.10.5
-                     , GHC == 8.8.4
-                     , GHC == 8.6.5
-                     , GHC == 8.4.4
-                     , GHC == 8.2.2
-                     , GHC == 8.0.2
+cabal-version: 3.0
+name:          transformers-except
+version:       0.1.3
+license:       BSD-3-Clause
+license-file:  LICENSE
+author:        Tim McGilchrist <timmcgil@gmail.com>
+maintainer:    Tim McGilchrist <timmcgil@gmail.com>
+copyright:     (c) 2023 Tim McGilchrist
+synopsis:      An Except monad transformer with
+category:      System
+build-type:    Simple
+tested-with:
+  GHC ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.7 || ==9.0.2 || ==9.2.5
 
-description:           Extra pieces for working with Except
+description:   Extra pieces for working with Except
 homepage:      http://github.com/tmcgilchrist/transformers-either/
 bug-reports:   http://github.com/tmcgilchrist/transformers-either/issues
+
 source-repository head
-  type: git
+  type:     git
   location: https://github.com/tmcgilchrist/transformers-either.git
 
 library
   build-depends:
-                       base                            >= 4.8        && < 5
-                     , text                            == 1.2.*
-                     , exceptions                      >= 0.6        && < 0.11
-                     , transformers                    >= 0.4        && < 0.6
-
-  ghc-options:
-                       -Wall
-  default-language:   Haskell98
-  hs-source-dirs:
-                       src
+    , base          >=4.8 && <5
+    , exceptions    >=0.6 && <0.11
+    , text          ^>=1.2
+    , transformers  >=0.4 && <0.7
 
+  ghc-options:      -Wall
+  default-language: Haskell98
+  hs-source-dirs:   src
   exposed-modules:
-                       Control.Monad.Trans.Except.Extra
-                       Control.Monad.Trans.Except.Exit
+    Control.Monad.Trans.Except.Exit
+    Control.Monad.Trans.Except.Extra
