diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,2 +1,7 @@
+# effectful-core-1.1.0.0 (2022-07-19)
+* Don't reset the `UnliftStrategy` to `SeqUnlift` inside the continuation of
+  `withEffToIO`.
+* Add `withReader`.
+
 # effectful-core-1.0.0.0 (2022-07-13)
 * Initial release.
diff --git a/effectful-core.cabal b/effectful-core.cabal
--- a/effectful-core.cabal
+++ b/effectful-core.cabal
@@ -1,7 +1,7 @@
 cabal-version:      2.4
 build-type:         Simple
 name:               effectful-core
-version:            1.0.0.0
+version:            1.1.0.0
 license:            BSD-3-Clause
 license-file:       LICENSE
 category:           Control
@@ -9,12 +9,13 @@
 author:             Andrzej Rybczak
 synopsis:           An easy to use, performant extensible effects library.
 
-description: An easy to use, performant extensible effects library with seamless
-             integration with the existing Haskell ecosystem.
-             .
-             This library provides core definitions with a minimal dependency
-             footprint. See the @<https://hackage.haskell.org/package/effectful effectful>@
-             package for the "batteries-included" variant.
+description:
+  An easy to use, performant extensible effects library with seamless
+  integration with the existing Haskell ecosystem.
+  .
+  This library provides core definitions with a minimal dependency
+  footprint. See the @<https://hackage.haskell.org/package/effectful effectful>@
+  package for the "batteries-included" variant.
 
 extra-source-files:
   CHANGELOG.md
diff --git a/src/Effectful/Internal/Monad.hs b/src/Effectful/Internal/Monad.hs
--- a/src/Effectful/Internal/Monad.hs
+++ b/src/Effectful/Internal/Monad.hs
@@ -170,13 +170,10 @@
   :: (HasCallStack, IOE :> es)
   => ((forall r. Eff es r -> IO r) -> IO a)
   -- ^ Continuation with the unlifting function in scope.
-  --
-  -- /Note:/ the strategy is reset to 'SeqUnlift' inside the continuation.
   -> Eff es a
 withEffToIO f = unliftStrategy >>= \case
   SeqUnlift -> unsafeEff $ \es -> seqUnliftIO es f
-  ConcUnlift p b -> withUnliftStrategy SeqUnlift $ do
-    unsafeEff $ \es -> concUnliftIO es p b f
+  ConcUnlift p b -> unsafeEff $ \es -> concUnliftIO es p b f
 
 -- | Create an unlifting function with the 'SeqUnlift' strategy.
 seqUnliftIO
diff --git a/src/Effectful/Reader/Dynamic.hs b/src/Effectful/Reader/Dynamic.hs
--- a/src/Effectful/Reader/Dynamic.hs
+++ b/src/Effectful/Reader/Dynamic.hs
@@ -9,6 +9,7 @@
 
     -- ** Handlers
   , runReader
+  , withReader
 
     -- ** Operations
   , ask
@@ -35,6 +36,17 @@
 runReader r = reinterpret (R.runReader r) $ \env -> \case
   Ask       -> R.ask
   Local f m -> localSeqUnlift env $ \unlift -> R.local f (unlift m)
+
+-- | Execute a computation in a modified environment.
+withReader
+  :: (r1 -> r2)
+  -- ^ The function to modify the environment.
+  -> Eff (Reader r2 : es) a
+  -- ^ Computation to run in the modified environment.
+  -> Eff (Reader r1 : es) a
+withReader f m = do
+  r <- ask
+  raise $ runReader (f r) m
 
 ----------------------------------------
 -- Operations
diff --git a/src/Effectful/Reader/Static.hs b/src/Effectful/Reader/Static.hs
--- a/src/Effectful/Reader/Static.hs
+++ b/src/Effectful/Reader/Static.hs
@@ -5,6 +5,7 @@
 
     -- ** Handlers
   , runReader
+  , withReader
 
     -- ** Operations
   , ask
@@ -28,6 +29,17 @@
   -> Eff (Reader r : es) a
   -> Eff es a
 runReader r = evalStaticRep (Reader r)
+
+-- | Execute a computation in a modified environment.
+withReader
+  :: (r1 -> r2)
+  -- ^ The function to modify the environment.
+  -> Eff (Reader r2 : es) a
+  -- ^ Computation to run in the modified environment.
+  -> Eff (Reader r1 : es) a
+withReader f m = do
+  r <- ask
+  raise $ runReader (f r) m
 
 -- | Fetch the value of the environment.
 ask :: Reader r :> es => Eff es r
