diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,8 +1,23 @@
 See also http://pvp.haskell.org/faq
 
+## 0.94.0.3
+
+_2025-03-02 Andreas Abel_
+
+- Drop support for GHC 7
+- Make `Prelude` imports explicit, add `LANGUAGE NoImplicitPrelude`
+- Make upper bounds of dependencies major-major (all are shipped with GHC)
+- Tested with GHC 8.0 - 9.12.1
+
+## 0.94.0.2 Revision 1
+
+_2022-05-25 Andreas Abel_
+
+- Allow `base-4.17` and higher, for GHC 9.4
+
 ## 0.94.0.2
 
-2021-11-16 Andreas Abel
+_2021-11-16 Andreas Abel_
 
 - Allow `text-2.0`
 - Remove unused dependency `mtl`
@@ -11,20 +26,20 @@
 
 ## 0.94.0.1 Revision 1
 
-2021-08-12 Andreas Abel
+_2021-08-12 Andreas Abel_
 
 - Allow `base-4.16`, for GHC 9.2
 
 ## 0.94.0.1
 
-2021-02-20 Andreas Abel
+_2021-02-20 Andreas Abel_
 
 - Workaround for `{-# LANGUAGE Haskell2010 #-}` parser regression introduced in GHC 9.0
 - Optimization flag `-O2` has been removed
 
 ## 0.94.0.0
 
-2019-09-25 Herbert Valerio Riedel
+_2019-09-25 Herbert Valerio Riedel_
 
 - **Breaking change**: Switch RegExp API from the previously used `Monad(fail)` to `MonadFail(fail)` to denote matching failures
 - Define `Extract Text` instances for strict and lazy `Text` types
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,7 +1,9 @@
-regex-base
 [![Hackage version](https://img.shields.io/hackage/v/regex-base.svg?label=Hackage&color=informational)](http://hackage.haskell.org/package/regex-base)
+[![Stackage Nightly](http://stackage.org/package/regex-base/badge/nightly)](http://stackage.org/nightly/package/regex-base)
+[![Stackage LTS](http://stackage.org/package/regex-base/badge/lts)](http://stackage.org/lts/package/regex-base)
 [![Haskell-CI](https://github.com/haskell-hvr/regex-base/actions/workflows/haskell-ci.yml/badge.svg?branch=master&event=push)](https://github.com/haskell-hvr/regex-base/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-base
 ==========
 
 Common interface to several Haskell implementations of regular expressions.
diff --git a/regex-base.cabal b/regex-base.cabal
--- a/regex-base.cabal
+++ b/regex-base.cabal
@@ -1,15 +1,13 @@
-cabal-version:          1.12
+cabal-version:          1.24
 name:                   regex-base
-version:                0.94.0.2
+version:                0.94.0.3
 
 build-type:             Simple
 license:                BSD3
 license-file:           LICENSE
 copyright:              Copyright (c) 2006, Christopher Kuklewicz
 author:                 Christopher Kuklewicz
-maintainer:
-  Herbert Valerio Riedel <hvr@gnu.org>,
-  Andreas Abel
+maintainer:             Andreas Abel
 homepage:               https://wiki.haskell.org/Regular_expressions
 bug-reports:            https://github.com/haskell-hvr/regex-base/issues
 synopsis:               Common "Text.Regex.*" API for Regex matching
@@ -31,25 +29,24 @@
   .
   See also <https://wiki.haskell.org/Regular_expressions> for more information.
 
-extra-source-files:
+extra-doc-files:
   ChangeLog.md
   README.md
 
 tested-with:
-  GHC == 7.0.4
-  GHC == 7.2.2
-  GHC == 7.4.2
-  GHC == 7.6.3
-  GHC == 7.8.4
-  GHC == 7.10.3
-  GHC == 8.0.2
-  GHC == 8.2.2
-  GHC == 8.4.4
-  GHC == 8.6.5
-  GHC == 8.8.4
+  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
-  GHC == 9.0.1
-  GHC == 9.2.1
+  GHC == 8.8.4
+  GHC == 8.6.5
+  GHC == 8.4.4
+  GHC == 8.2.2
+  GHC == 8.0.2
 
 source-repository head
   type:     git
@@ -58,7 +55,7 @@
 source-repository this
   type:     git
   location: https://github.com/haskell-hvr/regex-base.git
-  tag:      v0.94.0.2
+  tag:      v0.94.0.3
 
 library
   hs-source-dirs: src
@@ -72,28 +69,25 @@
   other-modules:
       Paths_regex_base
 
-  default-language: Haskell2010
-  other-extensions:
+  default-language:
+      Haskell2010
+
+  default-extensions:
+      NoImplicitPrelude
+      Safe
       MultiParamTypeClasses
       FunctionalDependencies
       TypeSynonymInstances
       FlexibleInstances
       FlexibleContexts
 
-  if impl(ghc >= 7.4)
-    default-extensions: Safe
-    build-depends: containers >= 0.4.2.1
-                 , bytestring >= 0.9.2.1
-
-  build-depends: base       >= 4.3 && < 4.17
-               , containers >= 0.4 && < 0.7
-               , bytestring >= 0.9 && < 0.12
-               , array      >= 0.3 && < 0.6
-               , text       >= 1.2.3 && < 1.3 || >=2.0 && <2.1
-
-  if !impl(ghc >= 8)
-      build-depends: fail == 4.9.*
+  build-depends:
+        base        >= 4.9   && < 5
+      , containers  >= 0.5   && < 1
+      , bytestring  >= 0.10  && < 1
+      , array       >= 0.5   && < 1
+      , text        >= 1.2.3 && < 1.3 || >= 2.0 && < 3
 
-  ghc-options: -Wall
-  if impl(ghc >= 8)
-    ghc-options: -Wcompat
+  ghc-options:
+      -Wall
+      -Wcompat
diff --git a/src/Text/Regex/Base.hs b/src/Text/Regex/Base.hs
--- a/src/Text/Regex/Base.hs
+++ b/src/Text/Regex/Base.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies #-}
 -----------------------------------------------------------------------------
 -- |
 --
@@ -6,7 +5,7 @@
 -- Copyright   :  (c) Chris Kuklewicz 2006
 -- SPDX-License-Identifier: BSD-3-Clause
 --
--- Maintainer  :  hvr@gnu.org, Andreas Abel
+-- Maintainer  :  Andreas Abel
 -- Stability   :  stable
 -- Portability :  non-portable (MPTC+FD)
 --
@@ -72,7 +71,7 @@
   -- | RegexLike defines classes and type, and 'Extract' instances
   ,module Text.Regex.Base.RegexLike) where
 
-import Data.Version(Version(..))
+import Data.Version(Version)
 import Text.Regex.Base.RegexLike
 import Text.Regex.Base.Context()
 
diff --git a/src/Text/Regex/Base/Context.hs b/src/Text/Regex/Base/Context.hs
--- a/src/Text/Regex/Base/Context.hs
+++ b/src/Text/Regex/Base/Context.hs
@@ -1,10 +1,4 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances, FlexibleContexts, TypeSynonymInstances #-}
-
-{-# OPTIONS_GHC -fno-warn-orphans #-}
-#if __GLASGOW_HASKELL__ >= 702
-{-# OPTIONS_GHC -fno-warn-incomplete-uni-patterns #-}
-#endif
+{-# OPTIONS_GHC -Wno-orphans #-}
 
 {-|
 
@@ -12,7 +6,7 @@
 Copyright   :  (c) Chris Kuklewicz 2006
 SPDX-License-Identifier: BSD-3-Clause
 
-Maintainer  :  hvr@gnu.org, Andreas Abel
+Maintainer  :  Andreas Abel
 Stability   :  stable
 Portability :  non-portable (MPTC+FD)
 
@@ -192,12 +186,18 @@
 
 module Text.Regex.Base.Context() where
 
-import Prelude hiding (fail)
-import Control.Monad.Fail (MonadFail(fail)) -- see 'regexFailed'
+import Prelude
+  ( Int
+  , Bool(True,False)
+  , (.), ($), fmap, fst, id, return
+  , length, map
+  , pred
+  )
 
+import Control.Monad.Fail (MonadFail(fail)) -- see 'regexFailed'
 import Control.Monad(liftM)
 import Data.Array(Array,(!),elems,listArray)
---  import Data.Maybe(maybe)
+import Data.Maybe(Maybe(Nothing,Just), maybe)
 import Text.Regex.Base.RegexLike(RegexLike(..),RegexContext(..)
   ,AllSubmatches(..),AllTextSubmatches(..),AllMatches(..),AllTextMatches(..)
   ,MatchResult(..),Extract(empty),MatchOffset,MatchLength,MatchArray,MatchText)
diff --git a/src/Text/Regex/Base/Impl.hs b/src/Text/Regex/Base/Impl.hs
--- a/src/Text/Regex/Base/Impl.hs
+++ b/src/Text/Regex/Base/Impl.hs
@@ -4,7 +4,7 @@
 -- Copyright   :  (c) Chris Kuklewicz 2006
 -- SPDX-License-Identifier: BSD-3-Clause
 --
--- Maintainer  :  hvr@gnu.org, Andreas Abel
+-- Maintainer  :  Andreas Abel
 -- Stability   :  stable
 -- Portability :  non-portable (Text.Regex.Base needs MPTC+FD)
 --
@@ -40,7 +40,11 @@
 
 module Text.Regex.Base.Impl(polymatch,polymatchM) where
 
-import Prelude hiding (fail)
+import Prelude
+  ( Maybe(Nothing,Just)
+  , ($)
+  , fst, return
+  )
 import Control.Monad.Fail (MonadFail(fail))
 
 import Text.Regex.Base
diff --git a/src/Text/Regex/Base/RegexLike.hs b/src/Text/Regex/Base/RegexLike.hs
--- a/src/Text/Regex/Base/RegexLike.hs
+++ b/src/Text/Regex/Base/RegexLike.hs
@@ -1,12 +1,10 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies, FlexibleInstances, TypeSynonymInstances #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Text.Regex.Base.RegexLike
 -- Copyright   :  (c) Chris Kuklewicz 2006
 -- SPDX-License-Identifier: BSD-3-Clause
 --
--- Maintainer  :  hvr@gnu.org, Andreas Abel
+-- Maintainer  :  Andreas Abel
 -- Stability   :  stable
 -- Portability :  non-portable (MPTC+FD)
 --
@@ -39,11 +37,18 @@
   AllSubmatches(..),AllTextSubmatches(..),AllMatches(..),AllTextMatches(..)
   ) where
 
-#if !MIN_VERSION_base(4,13,0)
-import Control.Monad.Fail as Fail (MonadFail)
-#endif
+import Prelude
+  (Int, Bool, String
+  , (.), (+)
+  , error, id, return, snd
+  , drop, fmap, length, map, take
+  , toEnum
+  )
+
+
+import Control.Monad.Fail (MonadFail)
 import Data.Array(Array,(!))
-import Data.Maybe(isJust)
+import Data.Maybe(Maybe,isJust,maybe)
 import qualified Data.ByteString as SB (take,drop,empty,ByteString)
 import qualified Data.ByteString.Lazy as LB (take,drop,empty,ByteString)
 import qualified Data.Sequence as S(take,drop,empty,Seq)
@@ -112,7 +117,7 @@
 -- on 'makeRegexOpts' and uses 'defaultCompOpt' and 'defaultExecOpt'.
 -- Similarly for 'makeRegexM' and 'makeRegexOptsM'.
 --
--- There are also default implementaions for 'makeRegexOpts' and
+-- There are also default implementations for 'makeRegexOpts' and
 -- 'makeRegexOptsM' in terms of each other.  So a minimal instance
 -- definition needs to only define one of these, hopefully
 -- 'makeRegexOptsM'.
