diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,4 +1,21 @@
-For versioning policy, see: http://pvp.haskell.org/faq
+## 0.96.0.2 (2025-03-02)
+
+- 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.96.0.1 Revision 3 (2023-09-28)
+
+- Allow `containers-0.7`
+
+## 0.96.0.1 Revision 2 (2023-07-07)
+
+- Allow `bytestring-0.12`
+
+## 0.96.0.1 Revision 1 (2022-05-25)
+
+- Allow `base >= 4.17` (GHC 9.4)
 
 ## 0.96.0.1 (2021-07-19)
 
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,5 +1,3 @@
-This modile is under this "3 clause" BSD license:
-
 Copyright (c) 2007, Christopher Kuklewicz
 All rights reserved.
 
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,9 @@
+[![Hackage version](https://img.shields.io/hackage/v/regex-posix.svg?label=Hackage&color=informational)](http://hackage.haskell.org/package/regex-posix)
+[![Stackage Nightly](http://stackage.org/package/regex-posix/badge/nightly)](http://stackage.org/nightly/package/regex-posix)
+[![Stackage LTS](http://stackage.org/package/regex-posix/badge/lts)](http://stackage.org/lts/package/regex-posix)
+[![Haskell-CI](https://github.com/haskell-hvr/regex-posix/actions/workflows/haskell-ci.yml/badge.svg?branch=master&event=push)](https://github.com/haskell-hvr/regex-posix/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-posix
+===========
+
+[Documentation](https://hackage.haskell.org/package/regex-posix/docs/Text-Regex-Posix.html) on hackage.
diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,2 +0,0 @@
-import Distribution.Simple
-main = defaultMain
diff --git a/regex-posix.cabal b/regex-posix.cabal
--- a/regex-posix.cabal
+++ b/regex-posix.cabal
@@ -1,14 +1,14 @@
-cabal-version:          1.12
+cabal-version:          1.24
 name:                   regex-posix
-version:                0.96.0.1
+version:                0.96.0.2
 
 build-type:             Simple
 license:                BSD3
 license-file:           LICENSE
 copyright:              Copyright (c) 2007-2010, Christopher Kuklewicz
 author:                 Christopher Kuklewicz
-maintainer:             hvr@gnu.org, Andreas Abel
-bug-reports:            https://github.com/hvr/regex-posix
+maintainer:             Andreas Abel
+bug-reports:            https://github.com/haskell-hvr/regex-posix
 synopsis:               POSIX Backend for "Text.Regex" (regex-base)
 category:               Text
 description:
@@ -18,34 +18,36 @@
   .
   See also <https://wiki.haskell.org/Regular_expressions> for more information.
 
-extra-source-files:
+extra-doc-files:
+  README.md
   ChangeLog.md
+
+extra-source-files:
   cbits/myfree.h
 
 tested-with:
-  -- Haskell CI:
-  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 == 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 == 8.8.4
-  GHC == 8.10.4
-  GHC == 9.0.1
+  GHC == 8.6.5
+  GHC == 8.4.4
+  GHC == 8.2.2
+  GHC == 8.0.2
 
 source-repository head
   type:     git
-  location: https://github.com/hvr/regex-posix.git
+  location: https://github.com/haskell-hvr/regex-posix.git
 
 source-repository this
   type:     git
-  location: https://github.com/hvr/regex-base.git
-  tag:      v0.96.0.1
+  location: https://github.com/haskell-hvr/regex-base.git
+  tag:      v0.96.0.2
 
 flag _regex-posix-clib
   manual: False
@@ -73,32 +75,25 @@
     -- Otherwise, use POSIX.2 regex implementation from @libc@.
     -- However, Windows/msys2 doesn't provide a POSIX.2 regex impl in its @libc@.
 
-  default-language: Haskell2010
+  default-language:
+      Haskell2010
   default-extensions:
+      NoImplicitPrelude
       MultiParamTypeClasses
       FunctionalDependencies
       ForeignFunctionInterface
       GeneralizedNewtypeDeriving
       FlexibleContexts
-      TypeSynonymInstances
-         -- ^ for ghc 7.0, subsumed under FlexibleInstances later
       FlexibleInstances
 
-  build-depends: regex-base == 0.94.*
-               , base       >= 4.3 && < 4.17
-               , containers >= 0.4 && < 0.7
-               , bytestring >= 0.9 && < 0.12
-               , array      >= 0.3 && < 0.6
-
-  if impl(ghc < 8)
-      build-depends: fail == 4.9.*
-
-  -- Warnings
+  build-depends:
+        regex-base == 0.94.*
+      , base       >= 4.9  && < 5
+      , containers >= 0.5  && < 1
+      , bytestring >= 0.10 && < 1
+      , array      >= 0.5  && < 1
 
   ghc-options:
       -Wall
-      -fno-warn-unused-imports
-
-  if impl(ghc >= 8)
-    ghc-options:
       -Wcompat
+      -Wno-orphans
diff --git a/src/Text/Regex/Posix.hs b/src/Text/Regex/Posix.hs
--- a/src/Text/Regex/Posix.hs
+++ b/src/Text/Regex/Posix.hs
@@ -5,7 +5,7 @@
 -- Copyright   :  (c) Chris Kuklewicz 2006
 -- License     :  BSD-3-Clause
 --
--- Maintainer  :  hvr@gnu.org, Andreas Abel
+-- Maintainer  :  Andreas Abel
 -- Stability   :  stable
 -- Portability :  non-portable (regex-base needs MPTC+FD)
 --
@@ -55,8 +55,7 @@
   -- ** Wrap, for '=~' and '=~~', types and constants
  ,module Text.Regex.Posix.Wrap) where
 
-import Prelude hiding (fail)
-import Control.Monad.Fail (MonadFail)
+import Prelude ()
 
 import Text.Regex.Posix.Wrap(Regex, CompOption(CompOption),
   ExecOption(ExecOption), (=~), (=~~),
@@ -67,7 +66,7 @@
 import Text.Regex.Posix.Sequence()
 import Text.Regex.Posix.ByteString()
 import Text.Regex.Posix.ByteString.Lazy()
-import Data.Version(Version(..))
+import Data.Version(Version)
 import Text.Regex.Base
 import qualified Paths_regex_posix
 
diff --git a/src/Text/Regex/Posix/ByteString.hs b/src/Text/Regex/Posix/ByteString.hs
--- a/src/Text/Regex/Posix/ByteString.hs
+++ b/src/Text/Regex/Posix/ByteString.hs
@@ -1,11 +1,10 @@
-{-# OPTIONS_GHC -fno-warn-orphans #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Text.Regex.Posix.ByteString
 -- Copyright   :  (c) Chris Kuklewicz 2006
 -- License     :  BSD-3-Clause
 --
--- Maintainer  :  hvr@gnu.org, Andreas Abel
+-- Maintainer  :  Andreas Abel
 -- Stability   :  stable
 -- Portability :  non-portable (regex-base needs MPTC+FD)
 --
@@ -51,7 +50,15 @@
   execNotEOL       -- not at end of line
   ) where
 
-import Prelude hiding (fail)
+import Prelude
+  ( Int, Integral, Num, (-), fromIntegral, pred
+  , Either(Left, Right), either
+  , Show(show)
+  , IO, (>>=), return
+  , Maybe(Nothing, Just)
+  , ($), (.), (==), (&&), otherwise, not
+  , (++), length, map
+  )
 import Control.Monad.Fail (MonadFail(fail))
 
 import Data.Array(Array,listArray)
diff --git a/src/Text/Regex/Posix/ByteString/Lazy.hs b/src/Text/Regex/Posix/ByteString/Lazy.hs
--- a/src/Text/Regex/Posix/ByteString/Lazy.hs
+++ b/src/Text/Regex/Posix/ByteString/Lazy.hs
@@ -1,11 +1,10 @@
-{-# OPTIONS_GHC -fno-warn-orphans #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Text.Regex.Posix.ByteString.Lazy
 -- Copyright   :  (c) Chris Kuklewicz 2007
 -- License     :  BSD-3-Clause
 --
--- Maintainer  :  hvr@gnu.org, Andreas Abel
+-- Maintainer  :  Andreas Abel
 -- Stability   :  stable
 -- Portability :  non-portable (regex-base needs MPTC+FD)
 --
@@ -52,7 +51,16 @@
   execNotEOL       -- not at end of line
   ) where
 
-import Prelude hiding (fail)
+import Prelude
+  ( Int, fromIntegral
+  , Either(Left, Right), either
+  , Show(show)
+  , IO, (>>=), return
+  , Maybe(Nothing, Just)
+  , (.), ($), (==)
+  , (&&), not
+  , (++), map
+  )
 import Control.Monad.Fail (MonadFail(fail))
 
 import Data.Array(Array)
diff --git a/src/Text/Regex/Posix/Sequence.hs b/src/Text/Regex/Posix/Sequence.hs
--- a/src/Text/Regex/Posix/Sequence.hs
+++ b/src/Text/Regex/Posix/Sequence.hs
@@ -1,11 +1,10 @@
-{-# OPTIONS_GHC -fno-warn-orphans #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Text.Regex.Posix.Sequence
 -- Copyright   :  (c) Chris Kuklewicz 2006
 -- License     :  BSD-3-Clause
 --
--- Maintainer  :  hvr@gnu.org, Andreas Abel
+-- Maintainer  :  Andreas Abel
 -- Stability   :  stable
 -- Portability :  non-portable (regex-base needs MPTC+FD)
 --
@@ -48,7 +47,16 @@
   execNotEOL     -- not at end of line
   ) where
 
-import Prelude hiding (fail)
+import Prelude
+  ( Char
+  , Int, (-), fromEnum, fromIntegral, pred
+  , Show(show)
+  , Either(Left, Right), either
+  , IO, (>>), (>>=), return
+  , Maybe(Nothing, Just)
+  , ($), (.), (==), otherwise
+  , (++), length, map
+  )
 import Control.Monad.Fail (MonadFail(fail))
 
 import Data.Array(listArray, Array)
@@ -114,7 +122,7 @@
   maybeStartEnd <- withSeq str (wrapMatch regex)
   case maybeStartEnd of
     Right Nothing -> return (Right Nothing)
---  Right (Just []) ->  fail "got [] back!" -- return wierd array instead
+--  Right (Just []) ->  fail "got [] back!" -- return weird array instead
     Right (Just parts) ->
       return . Right . Just . listArray (0,pred (length parts))
        . map (\(s,e)->(fromIntegral s, fromIntegral (e-s)))
diff --git a/src/Text/Regex/Posix/String.hs b/src/Text/Regex/Posix/String.hs
--- a/src/Text/Regex/Posix/String.hs
+++ b/src/Text/Regex/Posix/String.hs
@@ -1,11 +1,10 @@
-{-# OPTIONS_GHC -fno-warn-orphans #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Text.Regex.Posix.String
 -- Copyright   :  (c) Chris Kuklewicz 2006
 -- License     :  BSD-3-Clause
 --
--- Maintainer  :  hvr@gnu.org, Andreas Abel
+-- Maintainer  :  Andreas Abel
 -- Stability   :  stable
 -- Portability :  non-portable (regex-base needs MPTC+FD)
 --
@@ -48,7 +47,18 @@
   execNotEOL     -- not at end of line
   ) where
 
-import Prelude hiding (fail)
+import Prelude
+  ( Int, String, IO
+  , Either(Left, Right), either
+  , Maybe(Nothing, Just)
+  , Show(show)
+  , fromIntegral, pred
+  , (.), ($), (==), otherwise
+  , (++), (-)
+  , (>>=), return
+  , length, map
+  )
+
 import Control.Monad.Fail (MonadFail(fail))
 
 import Data.Array(listArray, Array)
diff --git a/src/Text/Regex/Posix/Wrap.hsc b/src/Text/Regex/Posix/Wrap.hsc
--- a/src/Text/Regex/Posix/Wrap.hsc
+++ b/src/Text/Regex/Posix/Wrap.hsc
@@ -1,4 +1,5 @@
-{-# OPTIONS_GHC -Wall -fno-warn-unused-imports #-}
+{-# LANGUAGE CPP #-}
+{-# OPTIONS_GHC -Wno-unused-imports #-}
 
 -----------------------------------------------------------------------------
 -- |
@@ -6,7 +7,7 @@
 -- Copyright   :  (c) Chris Kuklewicz 2006,2007,2008 derived from (c) The University of Glasgow 2002
 -- Identifier  :  BSD-3-Clause
 --
--- Maintainer  :  hvr@gnu.org, Andreas Abel
+-- Maintainer  :  Andreas Abel
 -- Stability   :  stable
 -- Portability :  non-portable (regex-base needs MPTC+FD)
 --
@@ -97,7 +98,18 @@
 
 #include "myfree.h"
 
-import Prelude hiding (fail)
+import Prelude
+  ( Bool(True, False), otherwise
+  , Either(Left, Right)
+  , Eq, (==), (/=), (>=)
+  , IO, return, mapM
+  , Int, Num, (+), (*), (-), fromIntegral, pred, succ, toEnum
+  , Maybe(Nothing, Just)
+  , Show(show)
+  , String
+  , ($), (.), seq, undefined
+  , (++), iterate, length, map, take
+  )
 import Control.Monad.Fail (MonadFail)
 
 import Control.Monad(liftM)
@@ -106,15 +118,11 @@
 import Data.Int(Int32,Int64)   -- need whatever RegeOffset or #regoff_t type will be
 import Data.Word(Word32,Word64) -- need whatever RegeOffset or #regoff_t type will be
 import Foreign(Ptr, FunPtr, nullPtr, newForeignPtr,
-               addForeignPtrFinalizer, Storable(peekByteOff), allocaArray,
+               Storable(peekByteOff), allocaArray,
                allocaBytes, withForeignPtr,ForeignPtr,plusPtr,peekElemOff)
 import Foreign.Marshal.Alloc(mallocBytes)
 import Foreign.C(CChar)
-#if __GLASGOW_HASKELL__ >= 703
 import Foreign.C(CSize(CSize),CInt(CInt))
-#else
-import Foreign.C(CSize,CInt)
-#endif
 import Foreign.C.String(peekCAString, CString)
 import Text.Regex.Base.RegexLike(RegexOptions(..),RegexMaker(..),RegexContext(..),MatchArray)
 -- deprecated: import qualified System.IO.Error as IOERROR(try)
