diff --git a/managed.cabal b/managed.cabal
--- a/managed.cabal
+++ b/managed.cabal
@@ -1,5 +1,5 @@
 Name: managed
-Version: 1.0.4
+Version: 1.0.5
 Cabal-Version: >=1.8.0.2
 Build-Type: Simple
 License: BSD3
@@ -7,6 +7,7 @@
 Copyright: 2014 Gabriel Gonzalez
 Author: Gabriel Gonzalez
 Maintainer: Gabriel439@gmail.com
+Tested-With: GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.2, GHC == 8.0.1
 Bug-Reports: https://github.com/Gabriel439/Haskell-Managed-Library/issues
 Synopsis: A monad for managed values
 Description: In Haskell you very often acquire values using the @with...@
@@ -33,8 +34,8 @@
     Hs-Source-Dirs: src
     Build-Depends:
         base              >= 4.5     && < 5  ,
-        transformers      >= 0.4.0.0 && < 0.6
+        transformers      >= 0.2.0.0 && < 0.6
     Exposed-Modules:
         Control.Monad.Managed,
         Control.Monad.Managed.Safe
-    GHC-Options: -O2 -Wall
+    GHC-Options: -Wall
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
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP        #-}
 {-# LANGUAGE RankNTypes #-}
 
 {-| An example Haskell program to copy data from one handle to another might
@@ -106,13 +107,20 @@
     module Control.Monad.IO.Class
     ) where
 
-import Control.Applicative (Applicative(pure, (<*>)), liftA2)
 import Control.Monad.IO.Class (MonadIO(liftIO))
 import Control.Monad.Trans.Class (lift)
-import Data.Monoid (Monoid(mempty, mappend))
 
+#if MIN_VERSION_base(4,8,0)
+import Control.Applicative (liftA2)
+#else
+import Control.Applicative
+import Data.Monoid
+#endif
+
 import qualified Control.Monad.Trans.Cont          as Cont
+#if MIN_VERSION_transformers(0,4,0)
 import qualified Control.Monad.Trans.Except        as Except
+#endif
 import qualified Control.Monad.Trans.Identity      as Identity
 import qualified Control.Monad.Trans.Maybe         as Maybe
 import qualified Control.Monad.Trans.Reader        as Reader
@@ -211,8 +219,10 @@
 instance MonadManaged m => MonadManaged (Cont.ContT r m) where
     using m = lift (using m)
 
+#if MIN_VERSION_transformers(0,4,0)
 instance MonadManaged m => MonadManaged (Except.ExceptT e m) where
     using m = lift (using m)
+#endif
 
 instance MonadManaged m => MonadManaged (Identity.IdentityT m) where
     using m = lift (using m)
