diff --git a/managed.cabal b/managed.cabal
--- a/managed.cabal
+++ b/managed.cabal
@@ -1,6 +1,6 @@
 Name: managed
-Version: 1.0.7
-Cabal-Version: >=1.8.0.2
+Version: 1.0.8
+Cabal-Version: >=1.10
 Build-Type: Simple
 License: BSD3
 License-File: LICENSE
@@ -42,3 +42,4 @@
         Control.Monad.Managed,
         Control.Monad.Managed.Safe
     GHC-Options: -Wall
+    Default-Language: Haskell2010
diff --git a/src/Control/Monad/Managed.hs b/src/Control/Monad/Managed.hs
--- a/src/Control/Monad/Managed.hs
+++ b/src/Control/Monad/Managed.hs
@@ -271,11 +271,11 @@
     using m = lift (using m)
 
 -- | Build a `Managed` value
-managed :: (forall r . (a -> IO r) -> IO r) -> Managed a
-managed = Managed
+managed :: MonadManaged m => (forall r . (a -> IO r) -> IO r) -> m a
+managed f = using (Managed f)
 
 -- | Like 'managed' but for resource-less operations.
-managed_ :: (forall r. IO r -> IO r) -> Managed ()
+managed_ :: MonadManaged m => (forall r. IO r -> IO r) -> m ()
 managed_ f = managed $ \g -> f $ g ()
 
 {-| Acquire a `Managed` value
@@ -303,7 +303,7 @@
     a value that is not a resource being managed.
 -}
 with :: Managed a -> (a -> IO r) -> IO r
-with = (>>-)
+with m = (>>-) m
 
 -- | Run a `Managed` computation, enforcing that no acquired resources leak
 runManaged :: Managed () -> IO ()
