diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,13 @@
+0.4.1.1
+-------
+
+_Andreas Abel, 2025-08-27_
+
+- bump cabal-version to 1.18
+- remove unused dependencies
+
+Tested with GHC 8.0 - 9.14 alpha1
+
 0.4.1
 -----
 
diff --git a/equivalence.cabal b/equivalence.cabal
--- a/equivalence.cabal
+++ b/equivalence.cabal
@@ -1,6 +1,6 @@
-Cabal-Version:   >= 1.10
+Cabal-Version:   1.18
 Name:            equivalence
-Version:         0.4.1
+Version:         0.4.1.1
 License:         BSD3
 License-File:    LICENSE
 Author:          Patrick Bahr
@@ -21,8 +21,13 @@
 Build-Type:      Simple
 
 tested-with:
-  GHC == 9.4.1
-  GHC == 9.2.3
+  GHC == 9.14.1
+  GHC == 9.12.2
+  GHC == 9.10.2
+  GHC == 9.8.4
+  GHC == 9.6.7
+  GHC == 9.4.8
+  GHC == 9.2.8
   GHC == 9.0.2
   GHC == 8.10.7
   GHC == 8.8.4
@@ -30,9 +35,8 @@
   GHC == 8.4.4
   GHC == 8.2.2
   GHC == 8.0.2
-  GHC == 7.10.3
 
-Extra-Source-Files: CHANGES.md
+Extra-Doc-Files: CHANGES.md
 
 source-repository head
   type:     git
@@ -46,22 +50,17 @@
   Hs-Source-Dirs:       src
   default-language:     Haskell2010
   Build-Depends:
-    base                   >= 4.8    && < 5
-    , containers
+    base                   >= 4.9    && < 5
+    -- Lower bounds at least from Stackage LTS 7.0 (GHC 8.0)
+    , containers           >= 0.5.7.1
     , mtl                  >= 2.2.1
     , STMonadTrans         >= 0.4.3
-    , transformers         >= 0.2
-    , transformers-compat  >= 0.3
-  if impl(ghc < 8.0)
-    Build-Depends:
-      fail
+    , transformers         >= 0.5.2.0
 
   ghc-options:
       -Wall
-      -fno-warn-name-shadowing
-      -fno-warn-incomplete-record-updates
-  if impl(ghc >= 8.0)
-    ghc-options:
+      -Wno-name-shadowing
+      -Wno-incomplete-record-updates
       -Wcompat
 
 Test-Suite test
@@ -81,20 +80,14 @@
     , mtl
     , STMonadTrans
     , transformers
-    , transformers-compat
     -- Additional dependencies for testsuite
-    , QuickCheck           >= 2
-    , template-haskell
-  if impl(ghc < 8.0)
-    Build-Depends:
-      fail
+    -- Lower bounds at least from Stackage LTS 7.0 (GHC 8.0)
+    , QuickCheck           >= 2.8.2
 
   ghc-options:
       -Wall
-      -fno-warn-name-shadowing
-      -fno-warn-incomplete-record-updates
-      -fno-warn-missing-signatures
-      -fno-warn-unused-do-bind
-  if impl(ghc >= 8.0)
-    ghc-options:
+      -Wno-name-shadowing
+      -Wno-incomplete-record-updates
+      -Wno-missing-signatures
+      -Wno-unused-do-bind
       -Wcompat
diff --git a/src/Data/Equivalence/STT.hs b/src/Data/Equivalence/STT.hs
--- a/src/Data/Equivalence/STT.hs
+++ b/src/Data/Equivalence/STT.hs
@@ -86,11 +86,12 @@
 indexed by @s@, contains equivalence class descriptors of type @c@ and
 has elements of type @a@.  -}
 
-data EntryData s c a = Node {
+data EntryData s c a
+  = Node {
       entryParent :: Entry s c a,
       entryValue :: a
     }
-                     | Root {
+  | Root {
       entryDesc :: c,
       entryWeight :: Int,
       entryValue :: a,
@@ -236,13 +237,8 @@
 yet.  -}
 
 getEntry :: (Monad m, Applicative m, Ord a) => Equiv s c a -> a -> STT s m (Maybe (Entry s c a))
-getEntry Equiv { entries = mref} val = do
-  m <- readSTRef mref
-  case Map.lookup val m of
-    Nothing -> return Nothing
-    Just entry -> return $ Just entry
-
-
+getEntry Equiv{ entries = mref } val = do
+  Map.lookup val <$> readSTRef mref
 
 {-| This function equates the two given (representative) elements. That
 is, it unions the equivalence classes of the two elements and combines
diff --git a/testsuite/tests/Data/Equivalence/Monad_Test.hs b/testsuite/tests/Data/Equivalence/Monad_Test.hs
--- a/testsuite/tests/Data/Equivalence/Monad_Test.hs
+++ b/testsuite/tests/Data/Equivalence/Monad_Test.hs
@@ -1,6 +1,7 @@
 {-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE RankNTypes, TemplateHaskell #-}
+{-# LANGUAGE RankNTypes #-}
 {-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE TemplateHaskell #-}
 
 module Data.Equivalence.Monad_Test where
 
