diff --git a/Control/Monad/Failure/MTL.hs b/Control/Monad/Failure/MTL.hs
deleted file mode 100644
--- a/Control/Monad/Failure/MTL.hs
+++ /dev/null
@@ -1,77 +0,0 @@
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE UndecidableInstances #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# OPTIONS_GHC -fno-warn-orphans #-}
-
-module Control.Monad.Failure.MTL (module Control.Monad.Failure.Class) where
-
-import Control.Monad.Failure.Class
-
-import Control.Monad.Error
-import Control.Monad.List
-import Control.Monad.Reader
-import Control.Monad.State.Lazy     as Lazy
-import Control.Monad.State.Strict   as Strict
-import Control.Monad.Writer.Lazy    as Lazy
-import Control.Monad.Writer.Strict  as Strict
-import Control.Monad.RWS.Lazy       as Lazy
-import Control.Monad.RWS.Strict     as Strict
-import Data.Monoid
-
--- -----------------------
--- MonadFailure Instances
--- -----------------------
-
-instance (Error e, Monad m) => MonadFailure e (ErrorT e m) where
-  failure = throwError
-
-instance MonadFailure e m => MonadFailure e (ListT m) where
-  failure = lift . failure
-
-instance MonadFailure e m => MonadFailure e (ReaderT r m) where
-  failure = lift . failure
-
-instance (Monoid w, MonadFailure e m) => MonadFailure e (Lazy.WriterT w  m) where
-  failure = lift . failure
-
-instance MonadFailure e m => MonadFailure e (Lazy.StateT s m) where
-  failure = lift . failure
-
-instance (Monoid w, MonadFailure e m) => MonadFailure e (Lazy.RWST r w s m) where
-  failure = lift . failure
-
-instance (Monoid w, MonadFailure e m) => MonadFailure e (Strict.WriterT w  m) where
-  failure = lift . failure
-
-instance MonadFailure e m => MonadFailure e (Strict.StateT s m) where
-  failure = lift . failure
-
-instance (Monoid w, MonadFailure e m) => MonadFailure e (Strict.RWST r w s m) where
-  failure = lift . failure
-
--- ---------------------
--- WrapFailure instances
--- ---------------------
-
-instance WrapFailure e m => WrapFailure e (ListT m) where
-  wrapFailure f = ListT . wrapFailure f . runListT
-
-instance WrapFailure e m => WrapFailure e (ReaderT r m) where
-  wrapFailure f m = ReaderT $ \r -> wrapFailure f (runReaderT m r)
-
-instance (WrapFailure e m, Monoid w) => WrapFailure e (Lazy.WriterT w m) where
-  wrapFailure f = Lazy.WriterT . wrapFailure f . Lazy.runWriterT
-
-
--- all the following instances require undecidable instances
-instance WrapFailure e m => WrapFailure e (Lazy.StateT s m) where
-  wrapFailure f m = Lazy.StateT $ \s -> wrapFailure f (Lazy.runStateT m s)
-
-instance (WrapFailure e m, Monoid w) => WrapFailure e (Lazy.RWST r w s m) where
-  wrapFailure f m = Lazy.RWST $ \r s -> wrapFailure f (Lazy.runRWST m r s)
-
-instance WrapFailure e m => WrapFailure e (Strict.StateT s m) where
-  wrapFailure f m = Strict.StateT $ \s -> wrapFailure f (Strict.runStateT m s)
-
-instance (WrapFailure e m, Monoid w) => WrapFailure e (Strict.RWST r w s m) where
-  wrapFailure f m = Strict.RWST $ \r s -> wrapFailure f (Strict.runRWST m r s)
diff --git a/control-monad-failure.cabal b/control-monad-failure.cabal
--- a/control-monad-failure.cabal
+++ b/control-monad-failure.cabal
@@ -1,5 +1,5 @@
 name: control-monad-failure
-version: 0.4
+version: 0.5.0
 Cabal-Version:  >= 1.6
 build-type: Simple
 license: PublicDomain
@@ -11,9 +11,6 @@
 category: Control, Monads
 stability: experimental
 
-Flag mtl
-  default: True
-
 Library
   buildable: True
   build-depends: base >= 4 && < 5, transformers
@@ -24,10 +21,6 @@
      Control.Monad.Failure
      Control.Monad.Failure.Class
      Control.Monad.Failure.Transformers
-  if flag(mtl)
-    cpp-options: -DMTL
-    build-depends: mtl
-    exposed-modules: Control.Monad.Failure.MTL
 
 source-repository head
   type:     git
