diff --git a/src/Quasar/Monad.hs b/src/Quasar/Monad.hs
index 2f140bca685f2d182f95593fab55d67518e0bbdb..81e8a005d04afed85dd61397f18d5635c160b3af 100644
--- a/src/Quasar/Monad.hs
+++ b/src/Quasar/Monad.hs
@@ -2,6 +2,7 @@ module Quasar.Monad (
   -- * Quasar
   Quasar,
   newQuasar,
+  withResourceScope,
 
   MonadQuasar(..),
 
@@ -94,7 +95,9 @@ newQuasar = do
   ensureSTM $ newQuasarSTM worker exChan parentRM
 
 
---withResourceScope :: MonadQuasar m => m a -> m a
+withResourceScope :: (MonadQuasar m, MonadIO m, MonadMask m) => m a -> m a
+withResourceScope fn = bracket newQuasar dispose (`localQuasar` fn)
+
 
 
 class (MonadCatch m, MonadFix m) => MonadQuasar m where