diff --git a/heart-core.cabal b/heart-core.cabal
--- a/heart-core.cabal
+++ b/heart-core.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: c4d8800e6e2a4c22bd77a058f3ad0baa8e722bee6f6d57446b5ee0382cafbde9
+-- hash: 507050e1190f946f7bd7befa6b9d911d927f5f1737a960c724047c1a6956bbe1
 
 name:           heart-core
-version:        0.1.0
+version:        0.1.1
 synopsis:       An opinionated library prelude in the UnliftIO style
 description:    Please see the README on GitHub at <https://github.com/ejconlon/heart-core#readme>
 category:       Prelude
@@ -42,7 +42,7 @@
       Paths_heart_core
   hs-source-dirs:
       src
-  default-extensions: ConstraintKinds DataKinds DeriveFunctor DeriveFoldable DeriveGeneric DeriveTraversable DerivingStrategies FlexibleContexts FlexibleInstances FunctionalDependencies GADTs GeneralizedNewtypeDeriving KindSignatures LambdaCase MultiParamTypeClasses MultiWayIf NoImplicitPrelude OverloadedStrings Rank2Types StandaloneDeriving TemplateHaskell TupleSections TypeApplications TypeFamilies
+  default-extensions: ConstraintKinds DataKinds DeriveFunctor DeriveFoldable DeriveGeneric DeriveTraversable DerivingStrategies GeneralizedNewtypeDeriving NoImplicitPrelude TypeFamilies
   ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints -fno-warn-unused-top-binds
   build-depends:
       aeson >=1.4
diff --git a/src/Heart/Core/Prelude.hs b/src/Heart/Core/Prelude.hs
--- a/src/Heart/Core/Prelude.hs
+++ b/src/Heart/Core/Prelude.hs
@@ -18,8 +18,10 @@
   , Lens'
   , ListT (..)
   , Map
+  , MonadCatch (..)
   , MonadFail (..)
   , MonadIO (..)
+  , MonadMask (..)
   , MonadReader (..)
   , MonadThrow (..)
   , MonadTrans (..)
@@ -31,6 +33,7 @@
   , Seq (..)
   , Set
   , Setter'
+  , SomeException
   , Text
   , ToJSON (..)
   , ToJSONKey
@@ -39,6 +42,8 @@
   , Void
   , ap
   , asum
+  , catchJust
+  , cast
   , coerce
   , coerced
   , foldl'
@@ -59,11 +64,11 @@
   ) where
 
 import Control.Applicative (Alternative (..))
-import Control.Exception (Exception (..))
+import Control.Exception (Exception (..), SomeException)
 import Control.Lens (Getter, Iso', Lens', Prism', Setter', coerced, iso, over, review, set, simple, view)
 import Control.Lens.TH (makeLenses, makePrisms)
 import Control.Monad (ap, foldM, unless, when)
-import Control.Monad.Catch (MonadThrow (..))
+import Control.Monad.Catch (MonadCatch (..), MonadMask (..), MonadThrow (..), catchJust)
 import Control.Monad.Fail (MonadFail (..))
 import Control.Monad.Identity (Identity (..))
 import Control.Monad.IO.Class (MonadIO (..))
@@ -86,7 +91,7 @@
 import Data.String (IsString)
 import Data.Text (Text)
 import Data.Traversable (for)
-import Data.Typeable (Typeable)
+import Data.Typeable (Typeable, cast)
 import Data.Void (Void)
 import GHC.Generics (Generic, Rep)
 import GHC.Stack (HasCallStack)
diff --git a/src/Heart/Core/RIO.hs b/src/Heart/Core/RIO.hs
--- a/src/Heart/Core/RIO.hs
+++ b/src/Heart/Core/RIO.hs
@@ -9,7 +9,7 @@
 import Heart.Core.Prelude
 
 newtype RIO env a = RIO { unRIO :: ReaderT env IO a }
-  deriving (Functor, Applicative, Monad, MonadReader env, MonadIO, MonadThrow, MonadFail)
+  deriving (Functor, Applicative, Monad, MonadReader env, MonadIO, MonadThrow, MonadFail, MonadCatch, MonadMask)
 
 instance MonadUnliftIO (RIO env) where
   askUnliftIO = RIO (ReaderT (\r -> withUnliftIO (\u -> return (UnliftIO (unliftIO u . flip runReaderT r . unRIO)))))
