diff --git a/Text/Boomerang/Error.hs b/Text/Boomerang/Error.hs
--- a/Text/Boomerang/Error.hs
+++ b/Text/Boomerang/Error.hs
@@ -1,8 +1,10 @@
 -- | An Error handling scheme that can be used with 'Boomerang'
-{-# LANGUAGE DeriveDataTypeable, TypeFamilies #-}
+{-# LANGUAGE CPP, DeriveDataTypeable, TypeFamilies #-}
 module Text.Boomerang.Error where
 
+#if !MIN_VERSION_mtl(2,3,0)
 import Control.Monad.Error (Error(..))
+#endif
 import Data.Data (Data, Typeable)
 import Data.List (intercalate, sort, nub)
 import Text.Boomerang.Prim
@@ -39,8 +41,10 @@
     listMsg s = [ParserError Nothing (Other s)]
 -}
 
+#if !MIN_VERSION_mtl(2,3,0)
 instance Error (ParserError p) where
     strMsg s = ParserError Nothing [Message s]
+#endif
 
 -- | lift a 'pos' and '[ErrorMsg]' into a parse error
 --
diff --git a/boomerang.cabal b/boomerang.cabal
--- a/boomerang.cabal
+++ b/boomerang.cabal
@@ -1,5 +1,5 @@
 Name:             boomerang
-Version:          1.4.8.1
+Version:          1.4.9
 License:          BSD3
 License-File:     LICENSE
 Author:           jeremy@seereason.com
@@ -15,11 +15,11 @@
 Library
         Default-Language: Haskell2010
         Build-Depends:    base             >= 4    && < 5,
-                          mtl              >= 2.0  && < 2.3,
+                          mtl              >= 2.0  && < 2.4,
                           semigroups       >= 0.16 && < 0.21,
-                          template-haskell            < 2.20,
+                          template-haskell            < 2.21,
                           text             >= 0.11 && < 2.1,
-                          th-abstraction   >= 0.4  && < 0.5
+                          th-abstraction   >= 0.4  && < 0.6
         Exposed-Modules:  Text.Boomerang
                           Text.Boomerang.Combinators
                           Text.Boomerang.Error
