diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
-For the package version policy (PVP), see  http://pvp.haskell.org/faq .
+### 1.3.2.3
 
+_2025-03-02 Andreas Abel_
+
+- Drop support for GHC 7
+- Allow `containers < 1`
+- Tested with GHC 8.0 - 9.12.1
+
 ### 1.3.2.2
 
 _2023-08-02, Andreas Abel_
@@ -157,7 +163,7 @@
 
 ## 1.1.8
 
-Make ghc-7.0.2 on platorm 2011.2.0.0.0 happy
+Make ghc-7.0.2 on platform 2011.2.0.0.0 happy
 
 ## 1.1.7
 
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-This modile is under this "3 clause" BSD license:
+This module is under this "3 clause" BSD license:
 
 Copyright (c) 2007-2009, Christopher Kuklewicz
 All rights reserved.
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,3 +1,8 @@
+[![Hackage version](https://img.shields.io/hackage/v/regex-tdfa.svg?label=Hackage&color=informational)](http://hackage.haskell.org/package/regex-tdfa)
+[![Stackage Nightly](http://stackage.org/package/regex-tdfa/badge/nightly)](http://stackage.org/nightly/package/regex-tdfa)
+[![Stackage LTS](http://stackage.org/package/regex-tdfa/badge/lts)](http://stackage.org/lts/package/regex-tdfa)
+[![Haskell-CI](https://github.com/haskell-hvr/regex-tdfa/actions/workflows/haskell-ci.yml/badge.svg?branch=master&event=push)](https://github.com/haskell-hvr/regex-tdfa/actions/workflows/haskell-ci.yml)
+[![License](https://img.shields.io/badge/License-BSD_3--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)
 # regex-tdfa
 
 This is [`regex-tdfa`](http://hackage.haskell.org/package/regex-tdfa) which is a pure Haskell regular expression library (for POSIX extended regular expressions) originally written by Christopher Kuklewicz.
@@ -194,7 +199,7 @@
 
 Regardless of performance, nearly every single OS and Libra for POSIX regular expressions has bugs in sub-matches.  This was detailed on the [Regex POSIX Haskell wiki page](https://wiki.haskell.org/Regex_Posix), and can be demonstrated with the [regex-posix-unittest](http://hackage.haskell.org/package/regex-posix-unittest) suite of checks.  Test [regex-tdfa-unittest](http://hackage.haskell.org/package/regex-tdfa-unittest) should show regex-tdfa passing these same checks.  I owe my understanding of the correct behvior and many of these unit tests to Glenn Fowler at AT&T ("An Interpretation of the POSIX regex Standard").
 
-### Maintainance history
+### Maintenance history
 
 The original Darcs repository was at [code.haskell.org](http://code.haskell.org/regex-tdfa/).
 For a while a fork was maintained by Roman Cheplyaka as
diff --git a/lib/Text/Regex/TDFA/Common.hs b/lib/Text/Regex/TDFA/Common.hs
--- a/lib/Text/Regex/TDFA/Common.hs
+++ b/lib/Text/Regex/TDFA/Common.hs
@@ -28,7 +28,7 @@
 
 common_error :: String -> String -> a
 common_error moduleName message =
-  error ("Explict error in module "++moduleName++" : "++message)
+  error ("Explicit error in module "++moduleName++" : "++message)
 
 on :: (t1 -> t1 -> t2) -> (t -> t1) -> t -> t -> t2
 f `on` g = (\x y -> (g x) `f` (g y))
@@ -109,7 +109,7 @@
     captureGroups :: Bool    -- ^ True by default.  Set to False to improve speed (and space).
   } deriving (Read,Show)
 
--- | Used by implementation to name certain 'Postion's during
+-- | Used by implementation to name certain 'Position's during
 -- matching. Identity of 'Position' tag to set during a transition.
 type Tag = Int
 
diff --git a/lib/Text/Regex/TDFA/TDFA.hs b/lib/Text/Regex/TDFA/TDFA.hs
--- a/lib/Text/Regex/TDFA/TDFA.hs
+++ b/lib/Text/Regex/TDFA/TDFA.hs
@@ -264,14 +264,14 @@
                     -- this needs a leading Minimize tag inside at least the parent * operator
       Ignore -> GT -- XXX this is a guess in analogy with Maximize for the end bit of a group
       Orbit -> LT -- trace ("choose LT! Just "++show tag++" < Nothing") LT -- 2009 XXX : comment out next line and use the Orbit instead
---      Orbit -> err $ "bestTrans.choose : Very Unexpeted Orbit in Just Nothing: "++show (tag,post,aTagOP,f:fs)
+--      Orbit -> err $ "bestTrans.choose : Very Unexpected Orbit in Just Nothing: "++show (tag,post,aTagOP,f:fs)
   choose (Just (tag,post1)) (Just (_,post2)) =
     case aTagOP!tag of
       Maximize -> order
       Minimize -> flipOrder order
       Ignore -> EQ
       Orbit -> EQ
---      Orbit -> err $ "bestTrans.choose : Very Unexpeted Orbit in Just Just: "++show (tag,(post1,post2),aTagOP,f:fs)
+--      Orbit -> err $ "bestTrans.choose : Very Unexpected Orbit in Just Just: "++show (tag,(post1,post2),aTagOP,f:fs)
    where order = case (post1,post2) of
                    (SetPre,SetPre) -> EQ
                    (SetPost,SetPost) -> EQ
diff --git a/lib/Text/Regex/TDFA/TNFA.hs b/lib/Text/Regex/TDFA/TNFA.hs
--- a/lib/Text/Regex/TDFA/TNFA.hs
+++ b/lib/Text/Regex/TDFA/TNFA.hs
@@ -7,7 +7,7 @@
 -- (That will require re-organizing the continuation data a bit)
 
 -- | "Text.Regex.TDFA.TNFA" converts the CorePattern Q\/P data (and its
--- Pattern leafs) to a QNFA tagged non-deterministic finite automata.
+-- Pattern leaves) to a QNFA tagged non-deterministic finite automata.
 --
 -- This holds every possible way to follow one state by another, while
 -- in the DFA these will be reduced by picking a single best
diff --git a/regex-tdfa.cabal b/regex-tdfa.cabal
--- a/regex-tdfa.cabal
+++ b/regex-tdfa.cabal
@@ -1,6 +1,6 @@
-cabal-version:          1.12
+cabal-version:          1.24
 name:                   regex-tdfa
-version:                1.3.2.2
+version:                1.3.2.3
 
 build-Type:             Simple
 license:                BSD3
@@ -19,14 +19,19 @@
   Please consult the "Text.Regex.TDFA" module for API documentation including a tutorial with usage examples;
   see also <https://wiki.haskell.org/Regular_expressions> for general information about regular expression support in Haskell.
 
-extra-source-files:
+extra-doc-files:
   CHANGELOG.md
   README.md
+
+extra-source-files:
   test/cases/*.txt
 
 tested-with:
-  GHC == 9.6.2
-  GHC == 9.4.5
+  GHC == 9.12.1
+  GHC == 9.10.1
+  GHC == 9.8.4
+  GHC == 9.6.6
+  GHC == 9.4.8
   GHC == 9.2.8
   GHC == 9.0.2
   GHC == 8.10.7
@@ -35,10 +40,6 @@
   GHC == 8.4.4
   GHC == 8.2.2
   GHC == 8.0.2
-  GHC == 7.10.3
-  GHC == 7.8.4
-  GHC == 7.6.3
-  GHC == 7.4.2
 
 source-repository head
   type:                git
@@ -47,7 +48,7 @@
 source-repository this
   type:                git
   location:            https://github.com/haskell-hvr/regex-tdfa.git
-  tag:                 v1.3.2.2
+  tag:                 v1.3.2.3
 
 flag force-O2
   default: False
@@ -93,25 +94,14 @@
 
   other-modules:        Paths_regex_tdfa
 
-  -- Support Semigroup instances uniformly
-  --
-  -- See also
-  --  https://prime.haskell.org/wiki/Libraries/Proposals/SemigroupMonoid#RecommendedVariant
-  --
-  -- NB: This is the same logic `parsec.cabal` uses, so this doesn't
-  -- add any new dependency that isn't already incurred by
-  -- `regex-tdfa`'s transitive deps
-  if !impl(ghc >= 8.0)
-    build-depends:      fail               == 4.9.*
-                      , semigroups         == 0.18.* || == 0.19.*
-  build-depends:        array              >= 0.4    && < 0.6
-                      , base               >= 4.5    && < 5
-                      , bytestring         >= 0.9.2  && < 0.13
-                      , containers         >= 0.4.2  && < 0.7
+  build-depends:        array              >= 0.5    && < 0.6
+                      , base               >= 4.9    && < 5
+                      , bytestring         >= 0.10   && < 0.13
+                      , containers         >= 0.5    && < 1
                       , mtl                >= 2.1.3  && < 2.4
                       , parsec             == 3.1.*
                       , regex-base         == 0.94.*
-                      , text               >= 1.2.3  && < 2.1
+                      , text               >= 1.2.3  && < 2.2
 
   default-language:     Haskell2010
   default-extensions:   BangPatterns
@@ -131,13 +121,16 @@
                         UnliftedFFITypes
   other-extensions:     CPP
 
-  ghc-options:          -Wall -funbox-strict-fields -fspec-constr-count=10 -fno-warn-orphans
-
-  if impl(ghc >= 8.0)
-    ghc-options:        -Wcompat
+  ghc-options:
+      -funbox-strict-fields
+      -fspec-constr-count=10
+      -Wall
+      -Wno-orphans
+      -Wcompat
 
   if flag(force-O2)
-    ghc-options:        -O2
+    ghc-options:
+      -O2
 
 
 test-suite regex-tdfa-unittest
@@ -150,9 +143,6 @@
   build-depends:        regex-tdfa
 
   -- dependencies whose version constraints are inherited via intra-package 'regex-tdfa' dependency
-  if !impl(ghc >= 8.0)
-    build-depends:      fail
-                      , semigroups
   build-depends:        array
                       , base
                       , bytestring
@@ -164,7 +154,7 @@
 
   -- component-specific dependencies not inherited via 'regex-tdfa'
                       , directory          >= 1.1.0  && < 1.4
-                      , filepath           >= 1.3.0  && < 1.5
+                      , filepath           >= 1.3.0  && < 1.6
                       , utf8-string        >= 1.0.1  && < 1.1
 
   default-language:     Haskell2010
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -178,7 +178,7 @@
       putStrLn $ "Explanation and discussion of these tests on the wiki at http://www.haskell.org/haskellwiki/Regex_Posix including comparing results from different operating systems"
       putStrLn $ "Questions about this package to the author at email <TextRegexLazy@personal.mightyreason.com>"
       putStrLn $ "The type of both the pattern and test is " ++ show (typeOf (undefined :: RType))
-      putStrLn $ "Without extactly two arguments:"
+      putStrLn $ "Without exactly two arguments:"
       putStrLn $ "    This program runs all test files listed in test/data-dir/test-manifest.txt"
       putStrLn $ "    Lines with negative number are expected to fail, others are expected to pass."
       putStrLn $ "With exactly two arguments:"
