diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## Version 0.9.0 (23 May 2014)
+
+- The option returned by `abortOption` is now visible by default.
+
 ## Version 0.8.1 (5 May 2014)
 
 - Fixed bugs
diff --git a/Options/Applicative/Builder.hs b/Options/Applicative/Builder.hs
--- a/Options/Applicative/Builder.hs
+++ b/Options/Applicative/Builder.hs
@@ -285,8 +285,7 @@
   [ reader (const (ReadM (Left err)))
   , noArgError err
   , value id
-  , metavar ""
-  , hidden ]
+  , metavar "" ]
 
 -- | An option that always fails and displays a message.
 infoOption :: String -> Mod OptionFields (a -> a) -> Parser (a -> a)
diff --git a/Options/Applicative/Extra.hs b/Options/Applicative/Extra.hs
--- a/Options/Applicative/Extra.hs
+++ b/Options/Applicative/Extra.hs
@@ -27,6 +27,7 @@
 import Options.Applicative.Builder.Internal
 import Options.Applicative.Common
 import Options.Applicative.Help
+
 import Options.Applicative.Internal
 import Options.Applicative.Types
 
@@ -35,7 +36,8 @@
 helper = abortOption ShowHelpText $ mconcat
   [ long "help"
   , short 'h'
-  , help "Show this help text" ]
+  , help "Show this help text"
+  , hidden ]
 
 hsubparser :: Mod CommandFields a -> Parser a
 hsubparser m = mkParser d g rdr
@@ -117,8 +119,9 @@
   in (render_help h, exit_code)
   where
     exit_code = case msg of
-      ErrorMsg _ -> ExitFailure (infoFailureCode pinfo)
-      _          -> ExitSuccess
+      ErrorMsg _   -> ExitFailure (infoFailureCode pinfo)
+      UnknownError -> ExitFailure (infoFailureCode pinfo)
+      _            -> ExitSuccess
 
     with_context :: Context
                  -> ParserInfo a
@@ -142,6 +145,7 @@
       ShowHelpText -> mempty
       ErrorMsg m   -> stringChunk m
       InfoMsg  m   -> stringChunk m
+      UnknownError -> mempty
 
     base_help :: ParserInfo a -> ParserHelp
     base_help i
diff --git a/Options/Applicative/Internal.hs b/Options/Applicative/Internal.hs
--- a/Options/Applicative/Internal.hs
+++ b/Options/Applicative/Internal.hs
@@ -29,8 +29,8 @@
 import Control.Applicative (Applicative(..), Alternative(..), (<$>))
 import Control.Monad (MonadPlus(..), liftM, ap, guard)
 import Control.Monad.Trans.Class (MonadTrans, lift)
-import Control.Monad.Trans.Error
-  (runErrorT, ErrorT(..), Error(..), throwError, catchError)
+import Control.Monad.Trans.Except
+  (runExceptT, ExceptT(..), throwE, catchE)
 import Control.Monad.Trans.Reader
   (runReader, runReaderT, Reader, ReaderT, ask)
 import Control.Monad.Trans.Writer (runWriterT, WriterT, tell)
@@ -50,7 +50,7 @@
   errorP :: ParseError -> m a
   exitP :: Parser b -> Maybe a -> m a
 
-newtype P a = P (ErrorT ParseError (WriterT Context (Reader ParserPrefs)) a)
+newtype P a = P (ExceptT ParseError (WriterT Context (Reader ParserPrefs)) a)
 
 instance Functor P where
   fmap f (P m) = P $ fmap f m
@@ -91,9 +91,9 @@
   getPrefs = P . lift . lift $ ask
 
   missingArgP e _ = errorP e
-  tryP (P p) = P $ lift $ runErrorT p
+  tryP (P p) = P $ lift $ runExceptT p
   exitP _ = P . hoistMaybe
-  errorP = P . throwError
+  errorP = P . throwE
 
 hoistMaybe :: MonadPlus m => Maybe a -> m a
 hoistMaybe = maybe mzero return
@@ -102,7 +102,7 @@
 hoistEither = either errorP return
 
 runP :: P a -> ParserPrefs -> (Either ParseError a, Context)
-runP (P p) = runReader . runWriterT . runErrorT $ p
+runP (P p) = runReader . runWriterT . runExceptT $ p
 
 uncons :: [a] -> Maybe (a, [a])
 uncons [] = Nothing
@@ -115,9 +115,6 @@
   = ComplParseError String
   | ComplExit
 
-instance Error ComplError where
-  strMsg = ComplParseError
-
 data ComplResult a
   = ComplParser SomeParser
   | ComplOption Completer
@@ -138,7 +135,7 @@
     ComplOption c -> ComplOption c
 
 newtype Completion a =
-  Completion (ErrorT ParseError (ReaderT ParserPrefs ComplResult) a)
+  Completion (ExceptT ParseError (ReaderT ParserPrefs ComplResult) a)
 
 instance Functor Completion where
   fmap f (Completion m) = Completion $ fmap f m
@@ -165,12 +162,12 @@
   getPrefs = Completion $ lift ask
 
   missingArgP _ = Completion . lift . lift . ComplOption
-  tryP (Completion p) = Completion $ catchError (Right <$> p) (return . Left)
+  tryP (Completion p) = Completion $ catchE (Right <$> p) (return . Left)
   exitP p _ = Completion . lift . lift . ComplParser $ SomeParser p
-  errorP = Completion . throwError
+  errorP = Completion . throwE
 
 runCompletion :: Completion r -> ParserPrefs -> Maybe (Either SomeParser Completer)
-runCompletion (Completion c) prefs = case runReaderT (runErrorT c) prefs of
+runCompletion (Completion c) prefs = case runReaderT (runExceptT c) prefs of
   ComplResult _ -> Nothing
   ComplParser p' -> Just $ Left p'
   ComplOption compl -> Just $ Right compl
diff --git a/Options/Applicative/Types.hs b/Options/Applicative/Types.hs
--- a/Options/Applicative/Types.hs
+++ b/Options/Applicative/Types.hs
@@ -39,7 +39,6 @@
 import Control.Applicative
   (Applicative(..), Alternative(..), (<$>), optional)
 import Control.Monad (ap, liftM, MonadPlus, mzero, mplus)
-import Control.Monad.Trans.Error (Error(..))
 import Data.Monoid (Monoid(..))
 import System.Exit (ExitCode(..))
 
@@ -50,10 +49,13 @@
   = ErrorMsg String
   | InfoMsg String
   | ShowHelpText
+  | UnknownError
   deriving Show
 
-instance Error ParseError where
-  strMsg = ErrorMsg
+instance Monoid ParseError where
+  mempty = UnknownError
+  mappend UnknownError m = m
+  mappend m _ = m
 
 -- | A full description for a runnable 'Parser' for a program.
 data ParserInfo a = ParserInfo
@@ -136,7 +138,7 @@
   fail = ReadM . Left . ErrorMsg
 
 instance MonadPlus ReadM where
-  mzero = ReadM $ Left (strMsg "")
+  mzero = ReadM $ Left UnknownError
   mplus m1 m2 = case runReadM m1 of
     Left _ -> m2
     Right r -> return r
diff --git a/optparse-applicative.cabal b/optparse-applicative.cabal
--- a/optparse-applicative.cabal
+++ b/optparse-applicative.cabal
@@ -1,5 +1,5 @@
 name:                optparse-applicative
-version:             0.8.1
+version:             0.9.0
 synopsis:            Utilities and combinators for parsing command line options
 description:
     Here is a simple example of an applicative option parser:
@@ -108,7 +108,8 @@
                        Options.Applicative.Internal
   ghc-options:         -Wall
   build-depends:       base == 4.*,
-                       transformers >= 0.2 && < 0.4,
+                       transformers >= 0.2 && < 0.5,
+                       transformers-compat == 0.3.*,
                        process >= 1.0 && < 1.3,
                        ansi-wl-pprint >= 0.6 && < 0.7
 test-suite tests
