diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,12 @@
 # Change log
 
+## 0.2.0.0
+
+* Lift signatures from `IO` to `MonadIO`, `MonadThrow` and `MonadMask`
+* Type parameter order is now explicit via `ScopedTypeVariables`
+* `WithRes` has new monad type parameter
+* Dependency bump: `context-0.2.0.0`
+
 ## 0.1.0.0
 
-Initial release
+* Initial release
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -2,8 +2,6 @@
 
 [![Version badge][]][version]
 
-🚧 This README is under construction and could use some love. 🚧
-
 `context-resource` contains a thread-safe, pool-compatible resource provider
 abstraction that supports resource-sharing within nested actions.
 
diff --git a/context-resource.cabal b/context-resource.cabal
--- a/context-resource.cabal
+++ b/context-resource.cabal
@@ -1,13 +1,11 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.33.0.
+-- This file has been generated from package.yaml by hpack version 0.34.4.
 --
 -- see: https://github.com/sol/hpack
---
--- hash: 25e9584bac69d5f10c59d16e951839e19321a6ec9958b9edf594a1256b310ff9
 
 name:           context-resource
-version:        0.1.0.0
+version:        0.2.0.0
 synopsis:       Thread-safe, pool-compatible resource provider
 description:    A thread-safe, pool-compatible resource provider abstraction that supports
                 resource-sharing within nested actions.
@@ -41,7 +39,8 @@
   ghc-options: -Wall -fwarn-tabs -Wincomplete-uni-patterns -Wredundant-constraints
   build-depends:
       base >=4.12 && <5
-    , context >=0.1.0.0 && <0.2
+    , context >=0.2.0.0 && <0.3
+    , exceptions >=0.10.0 && <0.11
   default-language: Haskell2010
 
 test-suite context-resource-test-suite
diff --git a/library/Context/Resource.hs b/library/Context/Resource.hs
--- a/library/Context/Resource.hs
+++ b/library/Context/Resource.hs
@@ -20,17 +20,19 @@
   , withSharedResource
   ) where
 
+import Control.Monad.Catch (MonadMask, MonadThrow)
+import Control.Monad.IO.Class (MonadIO)
 import Prelude
 import qualified Context
 
 -- | An opaque resource provider.
 --
 -- @since 0.1.0.0
-newtype Provider res = Provider
-  { store :: Context.Store (WithRes res)
+newtype Provider m res = Provider
+  { store :: Context.Store (WithRes m res)
   }
 
-newtype WithRes res = WithRes (forall r. (res -> IO r) -> IO r)
+newtype WithRes m res = WithRes (forall r. (res -> m r) -> m r)
 
 -- | Given a @with@-style function to acquire a resource, supplies the caller
 -- with a resource 'Provider'. This 'Provider' should ideally be long-lived and
@@ -39,9 +41,11 @@
 --
 -- @since 0.1.0.0
 withProvider
-  :: (forall r. (res -> IO r) -> IO r)
-  -> (Provider res -> IO a)
-  -> IO a
+  :: forall m res a
+   . (MonadIO m, MonadMask m)
+  => (forall r. (res -> m r) -> m r)
+  -> (Provider m res -> m a)
+  -> m a
 withProvider withRes f = do
   Context.withStore Context.noPropagation (Just (WithRes withRes)) \store -> do
     f Provider { store }
@@ -50,7 +54,12 @@
 -- specified action.
 --
 -- @since 0.1.0.0
-withResource :: Provider res -> (res -> IO a) -> IO a
+withResource
+  :: forall m res a
+   . (MonadIO m, MonadThrow m)
+  => Provider m res
+  -> (res -> m a)
+  -> m a
 withResource Provider { store } f = do
   WithRes withRes <- Context.mine store
   withRes f
@@ -60,7 +69,13 @@
 -- 'withSharedResource') within the action will return the shared resource.
 --
 -- @since 0.1.0.0
-shareResource :: Provider res -> res -> IO a -> IO a
+shareResource
+  :: forall m res a
+   . (MonadIO m, MonadMask m)
+  => Provider m res
+  -> res
+  -> m a
+  -> m a
 shareResource Provider { store } resource action = do
   Context.use store (WithRes ($ resource)) action
 
@@ -71,7 +86,12 @@
 -- This is a convenience function combining 'withResource' and 'shareResource'.
 --
 -- @since 0.1.0.0
-withSharedResource :: Provider res -> (res -> IO a) -> IO a
+withSharedResource
+  :: forall m res a
+   . (MonadIO m, MonadMask m)
+  => Provider m res
+  -> (res -> m a)
+  -> m a
 withSharedResource provider f = do
   withResource provider \resource -> do
     shareResource provider resource do
diff --git a/package.yaml b/package.yaml
--- a/package.yaml
+++ b/package.yaml
@@ -1,5 +1,5 @@
 name: context-resource
-version: '0.1.0.0'
+version: '0.2.0.0'
 github: "jship/context/context-resource"
 license: MIT
 license-file: LICENSE.md
@@ -27,7 +27,8 @@
 library:
   dependencies:
   - base >=4.12 && <5
-  - context >=0.1.0.0 && <0.2
+  - context >=0.2.0.0 && <0.3
+  - exceptions >=0.10.0 && <0.11
   source-dirs: library
 
 tests:
