diff --git a/Changelog b/Changelog
--- a/Changelog
+++ b/Changelog
@@ -1,3 +1,10 @@
+version 0.5
+	- compatibility with ghc-9.12.1 (bump dependency bounds)
+	- drop `Error ProblemParseError` instance for mtl-2.3 compatibility
+
+version 0.4.0.2
+	- compatibility with ghc-8.8.1 (bump quickcheck version)
+
 version 0.4.0.1
 	- Changelog
 
diff --git a/src/Data/Rewriting/Problem/Parse.hs b/src/Data/Rewriting/Problem/Parse.hs
--- a/src/Data/Rewriting/Problem/Parse.hs
+++ b/src/Data/Rewriting/Problem/Parse.hs
@@ -25,8 +25,7 @@
 import Data.Maybe (isJust)
 import Prelude hiding (lex, catch)
 import Control.Exception (catch)
-import Control.Monad.Error
-import Control.Monad (liftM, liftM3)
+import Control.Monad (liftM, liftM2, liftM3, mzero)
 import Text.Parsec hiding (parse)
 import System.IO (readFile)
 
@@ -35,8 +34,6 @@
                        | FileReadError IOError
                        | UnsupportedDeclaration String
                        | SomeParseError ParseError deriving (Show)
-
-instance Error ProblemParseError where strMsg = UnknownParseError
 
 parseFileIO :: FilePath -> IO (Problem String String)
 parseFileIO file = do r <- fromFile file
diff --git a/src/Data/Rewriting/Substitution/Unify.hs b/src/Data/Rewriting/Substitution/Unify.hs
--- a/src/Data/Rewriting/Substitution/Unify.hs
+++ b/src/Data/Rewriting/Substitution/Unify.hs
@@ -21,6 +21,7 @@
 import qualified Data.Union as U
 import Control.Monad.State
 import Control.Monad.ST
+import Control.Monad
 import Control.Applicative
 import Control.Arrow
 import Data.Array.ST
diff --git a/term-rewriting.cabal b/term-rewriting.cabal
--- a/term-rewriting.cabal
+++ b/term-rewriting.cabal
@@ -1,12 +1,12 @@
 name:          term-rewriting
-version:       0.4.0.2
+version:       0.5
 stability:     experimental
 author:        Martin Avanzini,
                Bertram Felgenhauer,
                Christian Sternagel,
                Ilya Epifanov
 homepage:      http://cl-informatik.uibk.ac.at/software/haskell-rewriting/
-maintainer:    haskell-rewriting@informatik.uibk.ac.at
+maintainer:    -
 license:       MIT
 license-file:  LICENSE
 category:      Logic
@@ -17,14 +17,14 @@
   This library provides basic data types and functionality for first order
   term rewriting.
 build-type:    Simple
-cabal-version: >= 1.8
+cabal-version: >= 1.10
 
 extra-source-files:
     Changelog
 
 source-repository head
     type: git
-    location: git://github.com/haskell-rewriting/term-rewriting
+    location: https://github.com/haskell-rewriting/term-rewriting
 
 library
     hs-source-dirs:
@@ -64,17 +64,23 @@
         Data.Rewriting.Utils
         Data.Rewriting.Utils.Parse
     build-depends:
-        containers >= 0.3 && < 0.7,
+        containers >= 0.3 && < 0.9,
         multiset >= 0.2 && < 0.4,
         parsec >= 3.1.6 && < 3.2,
         union-find-array >= 0.1 && < 0.2,
         array >= 0.3 && < 0.6,
         ansi-wl-pprint >= 0.6 && < 0.7,
-        mtl >= 1.1 && < 2.3,
+        mtl >= 1.1 && < 2.4,
         base >= 4 && < 5
-    extensions:
-        TypeSynonymInstances
+    other-extensions:
         BangPatterns
+        FlexibleContexts
+        FlexibleInstances
+        GeneralizedNewtypeDeriving
+        StandaloneDeriving
+        TypeSynonymInstances
+    default-language:
+         Haskell2010
 
 test-suite test
     type:  exitcode-stdio-1.0
@@ -91,6 +97,8 @@
     build-depends:
         base >= 4 && < 5,
         term-rewriting,
-        containers >= 0.3 && < 0.7,
+        containers >= 0.3 && < 0.9,
         HUnit >= 1.2 && < 1.7,
-        QuickCheck >= 2.6 && < 2.14
+        QuickCheck >= 2.6 && < 2.17
+    default-language:
+         Haskell2010
