diff --git a/src/Control/Monad/Trans/Abort.hs b/src/Control/Monad/Trans/Abort.hs
--- a/src/Control/Monad/Trans/Abort.hs
+++ b/src/Control/Monad/Trans/Abort.hs
@@ -1,15 +1,16 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE UnicodeSyntax #-}
 {-# LANGUAGE TypeFamilies #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE UndecidableInstances #-}
 
-module Control.Monad.Trans.Abort (
-    Abort,
-    runAbort,
-    AbortT(..),
-    abort,
-    recover
+module Control.Monad.Trans.Abort
+  ( Abort
+  , runAbort
+  , AbortT(..)
+  , abort
+  , recover
   ) where
 
 import Data.Pointed
@@ -20,7 +21,10 @@
 import Data.Functor.Bind.Trans
 import Data.Default.Class
 import Control.Applicative
-import Control.Monad (liftM, ap, MonadPlus(..))
+import Control.Monad (ap, MonadPlus(..))
+#if !MIN_VERSION_monad_control(1,0,0)
+import Control.Monad (liftM)
+#endif
 import Control.Monad.Base
 import Control.Monad.Fix
 import Control.Monad.Trans.Class
@@ -86,19 +90,30 @@
   lift = AbortT . ap (return Right)
 
 instance MonadTransControl (AbortT e) where
+#if MIN_VERSION_monad_control(1,0,0)
+  type StT (AbortT e) α = Either e α
+  liftWith f = lift $ f $ runAbortT
+  restoreT   = AbortT
+#else
   newtype StT (AbortT e) α = StAbort { unStAbort ∷ Either e α }
   liftWith f = lift $ f $ liftM StAbort . runAbortT
   restoreT   = AbortT . liftM unStAbort
+#endif
 
 instance MonadBaseControl η μ ⇒ MonadBaseControl η (AbortT e μ) where
+#if MIN_VERSION_monad_control(1,0,0)
+  type StM (AbortT e μ) α = ComposeSt (AbortT e) μ α
+  liftBaseWith = defaultLiftBaseWith
+  restoreM     = defaultRestoreM
+#else
   newtype StM (AbortT e μ) α =
     StMAbort { unStMAbort ∷ ComposeSt (AbortT e) μ α }
   liftBaseWith = defaultLiftBaseWith StMAbort
   restoreM     = defaultRestoreM unStMAbort
+#endif
 
 abort ∷ Monad μ ⇒ e → AbortT e μ α
 abort = AbortT . return . Left
 
 recover ∷ Monad μ ⇒ AbortT e μ α → (e → AbortT e μ α) → AbortT e μ α
 recover m h = AbortT $ runAbortT m >>= either (runAbortT . h) (return . Right)
-
diff --git a/src/Control/Monad/Trans/Finish.hs b/src/Control/Monad/Trans/Finish.hs
--- a/src/Control/Monad/Trans/Finish.hs
+++ b/src/Control/Monad/Trans/Finish.hs
@@ -1,16 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE UnicodeSyntax #-}
 {-# LANGUAGE TypeFamilies #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE UndecidableInstances #-}
 
-module Control.Monad.Trans.Finish (
-    Finish,
-    runFinish,
-    runFinish',
-    FinishT(..),
-    runFinishT',
-    finish,
+module Control.Monad.Trans.Finish
+  ( Finish
+  , runFinish
+  , runFinish'
+  , FinishT(..)
+  , runFinishT'
+  , finish
   ) where
 
 import Data.Pointed
@@ -18,7 +19,10 @@
 import Data.Functor.Bind
 import Data.Functor.Bind.Trans
 import Control.Applicative
-import Control.Monad (liftM, ap)
+import Control.Monad (ap)
+#if !MIN_VERSION_monad_control(1,0,0)
+import Control.Monad (liftM)
+#endif
 import Control.Monad.Base
 import Control.Monad.Fix
 import Control.Monad.Trans.Class
@@ -70,15 +74,27 @@
   lift = FinishT . ap (return Right)
 
 instance MonadTransControl (FinishT f) where
+#if MIN_VERSION_monad_control(1,0,0)
+  type StT (FinishT f) α = Either f α
+  liftWith f = lift $ f $ runFinishT
+  restoreT   = FinishT
+#else
   newtype StT (FinishT f) α = StFinish { unStFinish ∷ Either f α }
   liftWith f = lift $ f $ liftM StFinish . runFinishT
   restoreT   = FinishT . liftM unStFinish
+#endif
 
 instance MonadBaseControl η μ ⇒ MonadBaseControl η (FinishT e μ) where
+#if MIN_VERSION_monad_control(1,0,0)
+  type StM (FinishT e μ) α = ComposeSt (FinishT e) μ α
+  liftBaseWith = defaultLiftBaseWith
+  restoreM     = defaultRestoreM
+#else
   newtype StM (FinishT e μ) α =
     StMFinish { unStMFinish ∷ ComposeSt (FinishT e) μ α }
   liftBaseWith = defaultLiftBaseWith StMFinish
   restoreM     = defaultRestoreM unStMFinish
+#endif
 
 runFinishT' ∷ Monad μ ⇒ FinishT α μ α → μ α
 runFinishT' m = runFinishT m >>= return . either id id
@@ -88,4 +104,3 @@
 
 finish ∷ Monad μ ⇒ f → FinishT f μ α
 finish = FinishT . return . Left
-
diff --git a/transformers-abort.cabal b/transformers-abort.cabal
--- a/transformers-abort.cabal
+++ b/transformers-abort.cabal
@@ -1,5 +1,5 @@
 Name: transformers-abort
-Version: 0.5
+Version: 0.5.0.1
 Category: Control
 Stability: experimental
 Synopsis: A better error monad transformer
