diff --git a/library/ListT/Attoparsec.hs b/library/ListT/Attoparsec.hs
--- a/library/ListT/Attoparsec.hs
+++ b/library/ListT/Attoparsec.hs
@@ -1,8 +1,9 @@
 module ListT.Attoparsec where
 
 import BasePrelude hiding (cons, uncons)
-import MTLPrelude
-import Control.Monad.Catch
+import Control.Monad.Trans.Either
+import Control.Monad.Trans.Class
+import Data.Either.Combinators
 import Data.Text (Text)
 import ListT
 import qualified Data.Attoparsec.Text as P
@@ -11,22 +12,21 @@
 -- |
 -- A text message and a list of contexts,
 -- as per the failure in \"attoparsec\".
-data ParsingFailure =
-  ParsingFailure !String ![String]
+data Error =
+  Error !String ![String]
   deriving (Show, Eq, Ord, Data, Typeable, Generic)
 
-instance Exception ParsingFailure
 
 -- |
 -- Given a text parser, produces 
 -- a transformation of a stream of text chunks into a stream of parsed results.
--- In case of a parsing failure it raises a 'ParsingFailure' error in the base monad.
-textParser :: MonadThrow m => P.Parser a -> Transformation m Text a
+-- In case of a parsing failure it raises an 'Error' in the 'EitherT' monad over the base.
+textParser :: Monad m => P.Parser a -> ListT m Text -> ListT (EitherT Error m) a
 textParser p =
   loop (P.parse p)
   where
     loop parse input =
-      lift (uncons input) >>= maybe mzero (onUncons parse)
+      lift (lift (uncons input)) >>= maybe mzero (onUncons parse)
     onUncons parse (chunk, otherChunks) =
       case parse chunk of
         P.Done chunk' result -> 
@@ -34,6 +34,6 @@
         P.Partial parse' -> 
           loop parse' otherChunks
         P.Fail _ contexts message -> 
-          lift $ throwM $ ParsingFailure message contexts
+          lift $ EitherT $ return $ Left $ Error message contexts
 
 
diff --git a/list-t-attoparsec.cabal b/list-t-attoparsec.cabal
--- a/list-t-attoparsec.cabal
+++ b/list-t-attoparsec.cabal
@@ -1,7 +1,7 @@
 name:
   list-t-attoparsec
 version:
-  0.2.0.0
+  0.3.0.0
 synopsis:
   An "attoparsec" adapter for "list-t"
 category:
@@ -49,6 +49,6 @@
     attoparsec >= 0.10 && < 0.13,
     text >= 1 && < 1.3,
     list-t == 0.4.*,
-    exceptions == 0.8.*,
-    mtl-prelude >= 1 && < 3,
+    either == 4.*,
+    transformers >= 0.3 && < 0.5,
     base-prelude >= 0.1.19 && < 0.2
