diff --git a/Data/Attoparsec.hs b/Data/Attoparsec.hs
--- a/Data/Attoparsec.hs
+++ b/Data/Attoparsec.hs
@@ -9,7 +9,6 @@
 -- | 'parseOnly'             | 'parseOnlyBack'         |
 -- +-------------------------+-------------------------+
 --
-{-# LANGUAGE TemplateHaskell #-}
 module Data.Attoparsec (module Data.Attoparsec.ByteString) where
 import Haddock.UseRefs
 import Data.Attoparsec.ByteString.Lazy (parseOnlyBack)
diff --git a/Data/Attoparsec/ByteString.hs b/Data/Attoparsec/ByteString.hs
--- a/Data/Attoparsec/ByteString.hs
+++ b/Data/Attoparsec/ByteString.hs
@@ -1,7 +1,4 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE FlexibleContexts #-}
 #if __GLASGOW_HASKELL__ >= 702
-{-# LANGUAGE Trustworthy #-}
 #endif
 -- |
 -- Module      :  Data.Attoparsec.ByteString
diff --git a/Data/Attoparsec/ByteString/Char8.hs b/Data/Attoparsec/ByteString/Char8.hs
--- a/Data/Attoparsec/ByteString/Char8.hs
+++ b/Data/Attoparsec/ByteString/Char8.hs
@@ -1,5 +1,4 @@
 {-# OPTIONS_GHC -fno-warn-orphans #-}
-{-# LANGUAGE BangPatterns, FlexibleInstances, ConstraintKinds, FlexibleContexts, LambdaCase #-}
 
 -- |
 -- Module      :  Data.Attoparsec.ByteString.Char8
@@ -131,10 +130,12 @@
 
 import Control.Applicative (Alternative ((<|>)))
 import Control.Monad (void, when)
-import Debug.TraceEmbrace
+import Debug.TraceEmbrace ( tw )
 import Data.Attoparsec.ByteString.FastSet (charClass, memberChar)
 import Data.Attoparsec.ByteString.Internal (DirParser, Parser, BackParser, DirectedTuple (..))
 import Data.Attoparsec.Combinator
+    ( many1', many', many1, try, (<?>), choice, option, sepBy, sepBy', sepBy1,
+      sepBy1', manyTill, manyTill', skipMany, skipMany1, count, eitherP )
 import Data.Bits (Bits, (.|.), shiftL)
 import Data.ByteString.Internal (c2w, w2c)
 import Data.Int (Int8, Int16, Int32, Int64)
diff --git a/Data/Attoparsec/ByteString/Internal.hs b/Data/Attoparsec/ByteString/Internal.hs
--- a/Data/Attoparsec/ByteString/Internal.hs
+++ b/Data/Attoparsec/ByteString/Internal.hs
@@ -1,6 +1,3 @@
-{-# LANGUAGE BangPatterns, CPP, GADTs, OverloadedStrings, RankNTypes,
-    RecordWildCards, TypeApplications, ScopedTypeVariables, KindSignatures,
-    DataKinds, FlexibleContexts, PolyKinds, ConstraintKinds, FlexibleInstances #-}
 -- |
 -- Module      :  Data.Attoparsec.ByteString.Internal
 -- Copyright   :  Bryan O'Sullivan 2007-2015
@@ -99,7 +96,7 @@
 import Data.Tagged (Tagged(..), untag)
 import Data.Tuple (swap)
 import Data.Word (Word8)
-import Debug.TraceEmbrace
+import Debug.TraceEmbrace ( tr, tw )
 import qualified Foreign.ForeignPtr as FP
 import Foreign.Ptr (Ptr, castPtr)
 import qualified Foreign.Ptr as FP
diff --git a/Data/Attoparsec/ByteString/Lazy.hs b/Data/Attoparsec/ByteString/Lazy.hs
--- a/Data/Attoparsec/ByteString/Lazy.hs
+++ b/Data/Attoparsec/ByteString/Lazy.hs
@@ -1,11 +1,4 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE ConstraintKinds #-}
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE TypeApplications #-}
-{-# LANGUAGE ScopedTypeVariables #-}
 #if __GLASGOW_HASKELL__ >= 702
-{-# LANGUAGE Trustworthy #-} -- Imports internal modules
 #endif
 
 -- |
diff --git a/Data/Attoparsec/Combinator.hs b/Data/Attoparsec/Combinator.hs
--- a/Data/Attoparsec/Combinator.hs
+++ b/Data/Attoparsec/Combinator.hs
@@ -1,9 +1,4 @@
-{-# LANGUAGE BangPatterns, CPP, DataKinds #-}
-{-# LANGUAGE KindSignatures #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE FlexibleInstances #-}
 #if __GLASGOW_HASKELL__ >= 702
-{-# LANGUAGE Trustworthy #-} -- Imports internal modules
 #endif
 -- |
 -- Module      :  Data.Attoparsec.Combinator
diff --git a/Data/Attoparsec/Internal.hs b/Data/Attoparsec/Internal.hs
--- a/Data/Attoparsec/Internal.hs
+++ b/Data/Attoparsec/Internal.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE BangPatterns, CPP, ScopedTypeVariables, DataKinds, TypeApplications, FlexibleContexts, IncoherentInstances #-}
 -- |
 -- Module      :  Data.Attoparsec.Internal
 -- Copyright   :  Bryan O'Sullivan 2007-2015
diff --git a/Data/Attoparsec/Internal/Types.hs b/Data/Attoparsec/Internal/Types.hs
--- a/Data/Attoparsec/Internal/Types.hs
+++ b/Data/Attoparsec/Internal/Types.hs
@@ -1,6 +1,3 @@
-{-# LANGUAGE CPP, BangPatterns, GeneralizedNewtypeDeriving, OverloadedStrings,
-    Rank2Types, RecordWildCards, TypeFamilies, DataKinds, TypeApplications,
-    MultiParamTypeClasses, FlexibleContexts, FlexibleInstances #-}
 -- |
 -- Module      :  Data.Attoparsec.Internal.Types
 -- Copyright   :  Bryan O'Sullivan 2007-2015
@@ -48,7 +45,7 @@
 import Data.Text (Text)
 import qualified Data.Text as Text
 import Data.Text.Unsafe (Iter(..))
-import Debug.TraceEmbrace
+import Debug.TraceEmbrace (tw)
 import Prelude hiding (succ)
 import Data.Attoparsec.ByteString.Buffer (Dir (..))
 import qualified Data.Attoparsec.ByteString.Buffer as B
diff --git a/Data/Attoparsec/Number.hs b/Data/Attoparsec/Number.hs
--- a/Data/Attoparsec/Number.hs
+++ b/Data/Attoparsec/Number.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE DeriveDataTypeable #-}
 -- |
 -- Module      :  Data.Attoparsec.Number
 -- Copyright   :  Bryan O'Sullivan 2007-2015
@@ -24,7 +23,6 @@
 import Control.DeepSeq (NFData(rnf))
 import Data.Data (Data)
 import Data.Function (on)
-import Data.Typeable (Typeable)
 
 -- | A numeric type that can represent integers accurately, and
 -- floating point numbers to the precision of a 'Double'.
@@ -33,7 +31,7 @@
 -- major release.  Use the 'Data.Scientific.Scientific' type instead.
 data Number = I !Integer
             | D {-# UNPACK #-} !Double
-              deriving (Typeable, Data)
+              deriving (Data)
 {-# DEPRECATED Number "Use Scientific instead." #-}
 
 instance Show Number where
diff --git a/Data/Attoparsec/Text.hs b/Data/Attoparsec/Text.hs
--- a/Data/Attoparsec/Text.hs
+++ b/Data/Attoparsec/Text.hs
@@ -1,6 +1,4 @@
-{-# LANGUAGE BangPatterns, CPP, FlexibleInstances, TypeSynonymInstances #-}
 #if __GLASGOW_HASKELL__ >= 702
-{-# LANGUAGE Trustworthy #-} -- Imports internal modules
 #endif
 {-# OPTIONS_GHC -fno-warn-warnings-deprecations #-}
 
diff --git a/Data/Attoparsec/Text/Internal.hs b/Data/Attoparsec/Text/Internal.hs
--- a/Data/Attoparsec/Text/Internal.hs
+++ b/Data/Attoparsec/Text/Internal.hs
@@ -1,5 +1,3 @@
-{-# LANGUAGE BangPatterns, FlexibleInstances, GADTs, OverloadedStrings,
-    Rank2Types, RecordWildCards, TypeFamilies, TypeSynonymInstances #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 -- |
 -- Module      :  Data.Attoparsec.Text.Internal
diff --git a/Data/Attoparsec/Text/Lazy.hs b/Data/Attoparsec/Text/Lazy.hs
--- a/Data/Attoparsec/Text/Lazy.hs
+++ b/Data/Attoparsec/Text/Lazy.hs
@@ -1,6 +1,4 @@
-{-# LANGUAGE CPP #-}
 #if __GLASGOW_HASKELL__ >= 702
-{-# LANGUAGE Trustworthy #-} -- Imports internal modules
 #endif
 
 {-# OPTIONS_GHC -fno-warn-warnings-deprecations #-}
diff --git a/Data/Attoparsec/Zepto.hs b/Data/Attoparsec/Zepto.hs
--- a/Data/Attoparsec/Zepto.hs
+++ b/Data/Attoparsec/Zepto.hs
@@ -1,8 +1,5 @@
-{-# LANGUAGE CPP #-}
 #if __GLASGOW_HASKELL__ >= 702
-{-# LANGUAGE Trustworthy #-} -- Data.ByteString.Unsafe
 #endif
-{-# LANGUAGE BangPatterns #-}
 
 -- |
 -- Module      :  Data.Attoparsec.Zepto
diff --git a/attoparsec-isotropic.cabal b/attoparsec-isotropic.cabal
--- a/attoparsec-isotropic.cabal
+++ b/attoparsec-isotropic.cabal
@@ -1,6 +1,6 @@
 cabal-version:   3.0
 name:            attoparsec-isotropic
-version:         0.14.4
+version:         0.14.5
 license:         BSD-3-Clause
 license-file:    LICENSE
 category:        Text, Parsing
@@ -71,7 +71,7 @@
     >                       go (Just (unconsumed, iBlock')) unconsumed
 
 tested-with:
-  GHC == 9.10.1
+  GHC == 9.10.1, GHC == 9.12.2
 
 extra-source-files:
     benchmarks/*.txt
@@ -91,19 +91,35 @@
   Default: False
   Manual: True
 
+common base
+  default-language: GHC2024
+  ghc-options: -Wall
+  default-extensions:
+    CPP
+    DefaultSignatures
+    OverloadedStrings
+    TemplateHaskell
+    TypeFamilies
+  build-depends:
+      array < 1
+    , base < 5
+    , bytestring < 1
+    , containers < 1
+    , deepseq < 2
+    , fail < 5
+    , haddock-use-refs < 2
+    , scientific < 1
+    , semigroups < 0.21
+    , tagged < 1
+    , text < 3
+    , trace-embrace >= 1.2 && < 3
+    , transformers < 1
+
 -- We need to test and benchmark these modules,
 -- but do not want to expose them to end users
 library attoparsec-isotropic-internal
+  import: base
   hs-source-dirs: internal
-  build-depends: array < 0.6,
-                 base >= 4.3 && < 5,
-                 bytestring <0.13,
-                 tagged < 0.9,
-                 trace-embrace < 2.0.2,
-                 text < 3.0
-  if !impl(ghc >= 8.0)
-    build-depends: semigroups >=0.16.1 && <0.21
-
   exposed-modules: Data.Attoparsec.ByteString.Buffer
                    Data.Attoparsec.ByteString.FastSet
                    Data.Attoparsec.Internal.Compat
@@ -111,33 +127,12 @@
                    Data.Attoparsec.Text.Buffer
                    Data.Attoparsec.Text.FastSet
   ghc-options: -O2 -Wall
-  default-language: Haskell2010
-  default-extensions:
-    TemplateHaskell
 
 library
-  build-depends: array < 0.6,
-                 base >= 4.5 && < 5,
-                 bytestring <0.13,
-                 containers < 0.9,
-                 deepseq < 1.8,
-                 haddock-use-refs < 2.0,
-                 scientific >= 0.3.1 && < 0.4,
-                 tagged < 1.0,
-                 transformers >= 0.2 && (< 0.4 || >= 0.4.1.0) && < 0.7,
-                 text < 3.0,
-                 trace-embrace < 2.0.2,
-                 ghc-prim < 0.14,
-                 attoparsec-isotropic-internal
-  if impl(ghc < 7.4)
-    build-depends:
-      bytestring < 0.10.4.0
-
-  if !impl(ghc >= 8.0)
-    -- Data.Semigroup && Control.Monad.Fail are available in base-4.9+
-    build-depends: fail == 4.9.*,
-                   semigroups >=0.16.1 && <0.21
-
+  import: base
+  build-depends:
+      attoparsec-isotropic-internal
+    , ghc-prim < 0.14
   exposed-modules: Data.Attoparsec
                    Data.Attoparsec.ByteString
                    Data.Attoparsec.ByteString.Char8
@@ -155,18 +150,12 @@
   other-modules:   Data.Attoparsec.ByteString.Internal
                    Data.Attoparsec.Text.Internal
   ghc-options: -O2 -Wall
-
-  default-language: Haskell2010
-  default-extensions:
-    ImportQualifiedPost
-    TypeOperators
-    TemplateHaskell
-
   if flag(developer)
     ghc-prof-options: -auto-all
     ghc-options: -Werror
 
 test-suite attoparsec-isotropic-tests
+  import: base
   type:           exitcode-stdio-1.0
   hs-source-dirs: tests
   main-is:        QC.hs
@@ -192,35 +181,21 @@
     ghc-options: -Werror
 
   build-depends:
-    array < 0.6,
-    attoparsec-isotropic,
-    attoparsec-isotropic-internal,
-    base,
-    bytestring,
-    deepseq >= 1.1,
-    QuickCheck >= 2.13.2 && < 2.16,
-    quickcheck-unicode,
-    scientific,
-    tasty >= 0.11,
-    tasty-bench >= 0.3,
-    tasty-quickcheck >= 0.8,
-    text >= 2.1.1,
-    transformers,
-    trace-embrace,
-    vector,
+      QuickCheck >= 2.13.2 && < 2.16
+    , attoparsec-isotropic
+    , attoparsec-isotropic-internal
+    , quickcheck-unicode
+    , tasty >= 1 && < 2
+    , tasty-bench >= 0.3 && < 1
+    , tasty-quickcheck >= 0.8 && < 1
+    , vector
+
     -- benchmark dependencies
     -- cabal2nix skips dependencies from benchmark
-    tasty-bench >= 0.3,
-    http-types
-
-  default-language: Haskell2010
-
-  if !impl(ghc >= 8.0)
-    -- Data.Semigroup && Control.Monad.Fail are available in base-4.9+
-    build-depends: fail == 4.9.*,
-                   semigroups >=0.16.1 && <0.19
+    , http-types
 
 benchmark attoparsec-isotropic-benchmarks
+  import: base
   type: exitcode-stdio-1.0
   hs-source-dirs: benchmarks benchmarks/warp-3.0.1.1
   ghc-options: -O2 -Wall -rtsopts
@@ -245,32 +220,17 @@
     ghc-options: -Werror
 
   build-depends:
-    array,
-    attoparsec-isotropic,
-    attoparsec-isotropic-internal,
-    base == 4.*,
-    bytestring >= 0.10.4.0,
-    case-insensitive,
-    containers >= 0.7,
-    deepseq >= 1.1,
-    directory,
-    filepath,
-    ghc-prim,
-    http-types,
-    parsec >= 3.1.2,
-    scientific,
-    tasty-bench >= 0.3,
-    text >= 1.1.1.0,
-    transformers,
-    unordered-containers,
-    vector
-
-  default-language: Haskell2010
-
-  if !impl(ghc >= 8.0)
-    -- Data.Semigroup && Control.Monad.Fail are available in base-4.9+
-    build-depends: fail == 4.9.*,
-                   semigroups >=0.16.1 && <0.19
+      attoparsec-isotropic
+    , attoparsec-isotropic-internal
+    , case-insensitive
+    , directory
+    , filepath
+    , ghc-prim
+    , http-types
+    , parsec >= 3.1.2
+    , tasty-bench >= 0.3 && < 1
+    , unordered-containers
+    , vector
 
 source-repository head
   type:     git
diff --git a/benchmarks/Aeson.hs b/benchmarks/Aeson.hs
--- a/benchmarks/Aeson.hs
+++ b/benchmarks/Aeson.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE BangPatterns, CPP, OverloadedStrings #-}
 {-# OPTIONS_GHC -fno-warn-unused-binds #-}
 
 module Aeson
diff --git a/benchmarks/Benchmarks.hs b/benchmarks/Benchmarks.hs
--- a/benchmarks/Benchmarks.hs
+++ b/benchmarks/Benchmarks.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE BangPatterns, CPP #-}
 
 import Common ()
 import Control.Applicative (many)
diff --git a/benchmarks/Common.hs b/benchmarks/Common.hs
--- a/benchmarks/Common.hs
+++ b/benchmarks/Common.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 
 module Common (
diff --git a/benchmarks/Genome.hs b/benchmarks/Genome.hs
--- a/benchmarks/Genome.hs
+++ b/benchmarks/Genome.hs
@@ -1,5 +1,4 @@
-{-# LANGUAGE OverloadedStrings #-}
-
+{-# LANGUAGE NoCPP #-}
 module Genome
     (
       genome
diff --git a/benchmarks/HeadersByteString/Atto.hs b/benchmarks/HeadersByteString/Atto.hs
--- a/benchmarks/HeadersByteString/Atto.hs
+++ b/benchmarks/HeadersByteString/Atto.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE BangPatterns, OverloadedStrings #-}
 {-# OPTIONS_GHC -fno-warn-missing-signatures -fno-warn-orphans #-}
 module HeadersByteString.Atto
     (
diff --git a/benchmarks/HeadersText.hs b/benchmarks/HeadersText.hs
--- a/benchmarks/HeadersText.hs
+++ b/benchmarks/HeadersText.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE OverloadedStrings #-}
 {-# OPTIONS_GHC -fno-warn-missing-signatures #-}
 module HeadersText (headers) where
 
diff --git a/benchmarks/Links.hs b/benchmarks/Links.hs
--- a/benchmarks/Links.hs
+++ b/benchmarks/Links.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE OverloadedStrings #-}
 
 module Links (links) where
 
diff --git a/benchmarks/Numbers.hs b/benchmarks/Numbers.hs
--- a/benchmarks/Numbers.hs
+++ b/benchmarks/Numbers.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE BangPatterns #-}
 {-# OPTIONS_GHC -fno-warn-deprecations #-}
 
 module Numbers (numbers) where
diff --git a/benchmarks/TextFastSet.hs b/benchmarks/TextFastSet.hs
--- a/benchmarks/TextFastSet.hs
+++ b/benchmarks/TextFastSet.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE BangPatterns #-}
 
 ------------------------------------------------------------------------------
 -- |
diff --git a/benchmarks/Warp.hs b/benchmarks/Warp.hs
--- a/benchmarks/Warp.hs
+++ b/benchmarks/Warp.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE OverloadedStrings #-}
 
 module Warp (benchmarks) where
 
diff --git a/benchmarks/warp-3.0.1.1/Network/Wai/Handler/Warp/ReadInt.hs b/benchmarks/warp-3.0.1.1/Network/Wai/Handler/Warp/ReadInt.hs
--- a/benchmarks/warp-3.0.1.1/Network/Wai/Handler/Warp/ReadInt.hs
+++ b/benchmarks/warp-3.0.1.1/Network/Wai/Handler/Warp/ReadInt.hs
@@ -1,8 +1,4 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE MagicHash #-}
-{-# LANGUAGE BangPatterns #-}
-
 -- Copyright     : Erik de Castro Lopo <erikd@mega-nerd.com>
 -- License       : BSD3
 
diff --git a/benchmarks/warp-3.0.1.1/Network/Wai/Handler/Warp/RequestHeader.hs b/benchmarks/warp-3.0.1.1/Network/Wai/Handler/Warp/RequestHeader.hs
--- a/benchmarks/warp-3.0.1.1/Network/Wai/Handler/Warp/RequestHeader.hs
+++ b/benchmarks/warp-3.0.1.1/Network/Wai/Handler/Warp/RequestHeader.hs
@@ -1,7 +1,3 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE BangPatterns #-}
-
 module Network.Wai.Handler.Warp.RequestHeader (
       parseHeaderLines
     , parseByteRanges
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,8 @@
+# 0.14.5
+
+* Fork from attoparsec
+* Clean support of GHC-9.12.2
+
 # 0.14.4
 
 * Fix a segmentation fault when built against `text-2.0`
diff --git a/examples/Atto_RFC2616.hs b/examples/Atto_RFC2616.hs
--- a/examples/Atto_RFC2616.hs
+++ b/examples/Atto_RFC2616.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE BangPatterns #-}
 
 module Main (main) where
 
diff --git a/examples/Parsec_RFC2616.hs b/examples/Parsec_RFC2616.hs
--- a/examples/Parsec_RFC2616.hs
+++ b/examples/Parsec_RFC2616.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE BangPatterns, CPP, FlexibleContexts #-}
 
 module Main (main) where
 
diff --git a/examples/RFC2616.hs b/examples/RFC2616.hs
--- a/examples/RFC2616.hs
+++ b/examples/RFC2616.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE OverloadedStrings #-}
 
 module RFC2616
     (
diff --git a/internal/Data/Attoparsec/ByteString/Buffer.hs b/internal/Data/Attoparsec/ByteString/Buffer.hs
--- a/internal/Data/Attoparsec/ByteString/Buffer.hs
+++ b/internal/Data/Attoparsec/ByteString/Buffer.hs
@@ -1,13 +1,3 @@
-{-# LANGUAGE BangPatterns #-}
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE GeneralisedNewtypeDeriving #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE KindSignatures #-}
-{-# LANGUAGE TypeFamilies #-}
-{-# LANGUAGE TypeApplications #-}
-{-# LANGUAGE RankNTypes #-}
-{-# LANGUAGE NamedFieldPuns #-}
 
 -- |
 -- Module      :  Data.Attoparsec.ByteString.Buffer
@@ -73,15 +63,15 @@
 import Data.ByteString.Internal (ByteString(..), nullForeignPtr)
 import qualified Data.ByteString as B
 import Data.Attoparsec.Internal.Fhthagn (inlinePerformIO)
-import Data.Attoparsec.Internal.Compat
+import Data.Attoparsec.Internal.Compat ( mkPS, withPS )
 import Data.List (foldl1')
 import Data.Monoid as Mon (Monoid(..))
-import Data.Proxy
+import Data.Proxy ( Proxy )
 #if !MIN_VERSION_base(4,20,0)
 import Data.Semigroup (Semigroup(..))
 #endif
 import Data.Word (Word8)
-import Debug.TraceEmbrace
+import Debug.TraceEmbrace ( tr, tw', ShowTrace(ShowTrace) )
 import Foreign.ForeignPtr (ForeignPtr, withForeignPtr)
 import Foreign.Marshal.Utils (copyBytes)
 import Foreign.Ptr (castPtr, plusPtr)
diff --git a/internal/Data/Attoparsec/ByteString/FastSet.hs b/internal/Data/Attoparsec/ByteString/FastSet.hs
--- a/internal/Data/Attoparsec/ByteString/FastSet.hs
+++ b/internal/Data/Attoparsec/ByteString/FastSet.hs
@@ -1,5 +1,4 @@
-{-# LANGUAGE BangPatterns, MagicHash #-}
-
+{-# LANGUAGE MagicHash #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Data.Attoparsec.ByteString.FastSet
diff --git a/internal/Data/Attoparsec/Internal/Compat.hs b/internal/Data/Attoparsec/Internal/Compat.hs
--- a/internal/Data/Attoparsec/Internal/Compat.hs
+++ b/internal/Data/Attoparsec/Internal/Compat.hs
@@ -1,7 +1,3 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE MagicHash #-}
-{-# LANGUAGE RankNTypes #-}
-{-# LANGUAGE PolyKinds #-}
 
 module Data.Attoparsec.Internal.Compat where
 
diff --git a/internal/Data/Attoparsec/Internal/Fhthagn.hs b/internal/Data/Attoparsec/Internal/Fhthagn.hs
--- a/internal/Data/Attoparsec/Internal/Fhthagn.hs
+++ b/internal/Data/Attoparsec/Internal/Fhthagn.hs
@@ -1,5 +1,4 @@
-{-# LANGUAGE BangPatterns, Rank2Types, OverloadedStrings,
-    RecordWildCards, MagicHash, UnboxedTuples #-}
+{-# LANGUAGE MagicHash, UnboxedTuples #-}
 
 module Data.Attoparsec.Internal.Fhthagn
     (
diff --git a/internal/Data/Attoparsec/Text/Buffer.hs b/internal/Data/Attoparsec/Text/Buffer.hs
--- a/internal/Data/Attoparsec/Text/Buffer.hs
+++ b/internal/Data/Attoparsec/Text/Buffer.hs
@@ -1,5 +1,4 @@
-{-# LANGUAGE BangPatterns, CPP, MagicHash, RankNTypes, RecordWildCards,
-    UnboxedTuples, FlexibleInstances #-}
+{-# LANGUAGE MagicHash, UnboxedTuples #-}
 
 -- |
 -- Module      :  Data.Attoparsec.Text.Buffer
@@ -53,7 +52,7 @@
 import Data.Text.Unsafe (lengthWord16)
 #endif
 import Data.Text.Unsafe (Iter(..))
-import Debug.TraceEmbrace
+import Debug.TraceEmbrace ( ShowTrace(ShowTrace) )
 import Foreign.Storable (sizeOf)
 import GHC.Exts (Int(..), indexIntArray#, unsafeCoerce#, writeIntArray#)
 import GHC.ST (ST(..), runST)
diff --git a/internal/Data/Attoparsec/Text/FastSet.hs b/internal/Data/Attoparsec/Text/FastSet.hs
--- a/internal/Data/Attoparsec/Text/FastSet.hs
+++ b/internal/Data/Attoparsec/Text/FastSet.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE BangPatterns #-}
 
 ------------------------------------------------------------------------------
 -- |
diff --git a/tests/QC/Buffer.hs b/tests/QC/Buffer.hs
--- a/tests/QC/Buffer.hs
+++ b/tests/QC/Buffer.hs
@@ -1,6 +1,3 @@
-{-# LANGUAGE BangPatterns, CPP, FlexibleInstances, OverloadedStrings,
-    TypeSynonymInstances #-}
-
 module QC.Buffer (tests) where
 
 #if !MIN_VERSION_base(4,8,0)
diff --git a/tests/QC/ByteString.hs b/tests/QC/ByteString.hs
--- a/tests/QC/ByteString.hs
+++ b/tests/QC/ByteString.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE BangPatterns, CPP, OverloadedStrings, ScopedTypeVariables, FlexibleContexts #-}
 module QC.ByteString (tests) where
 
 #if !MIN_VERSION_base(4,8,0)
diff --git a/tests/QC/ByteStringRightToLeft.hs b/tests/QC/ByteStringRightToLeft.hs
--- a/tests/QC/ByteStringRightToLeft.hs
+++ b/tests/QC/ByteStringRightToLeft.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE BangPatterns, CPP, OverloadedStrings, ScopedTypeVariables, FlexibleContexts, TemplateHaskell #-}
 module QC.ByteStringRightToLeft (tests) where
 
 #if !MIN_VERSION_base(4,8,0)
diff --git a/tests/QC/Combinator.hs b/tests/QC/Combinator.hs
--- a/tests/QC/Combinator.hs
+++ b/tests/QC/Combinator.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP, OverloadedStrings, TemplateHaskell #-}
 
 module QC.Combinator where
 
diff --git a/tests/QC/CombinatorRight.hs b/tests/QC/CombinatorRight.hs
--- a/tests/QC/CombinatorRight.hs
+++ b/tests/QC/CombinatorRight.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP, OverloadedStrings, TemplateHaskell, ScopedTypeVariables, BangPatterns, TypeApplications, DataKinds #-}
 
 module QC.CombinatorRight where
 
diff --git a/tests/QC/Common.hs b/tests/QC/Common.hs
--- a/tests/QC/Common.hs
+++ b/tests/QC/Common.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP, FlexibleInstances #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 module QC.Common
     (
diff --git a/tests/QC/IPv6/Internal.hs b/tests/QC/IPv6/Internal.hs
--- a/tests/QC/IPv6/Internal.hs
+++ b/tests/QC/IPv6/Internal.hs
@@ -11,8 +11,6 @@
 
 -- -----------------------------------------------------------------------------
 
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE ScopedTypeVariables #-}
 
 module QC.IPv6.Internal where
 
diff --git a/tests/QC/MonoidalScientific.hs b/tests/QC/MonoidalScientific.hs
--- a/tests/QC/MonoidalScientific.hs
+++ b/tests/QC/MonoidalScientific.hs
@@ -1,5 +1,3 @@
-{-# LANGUAGE CPP, OverloadedStrings, TemplateHaskell, ScopedTypeVariables #-}
-{-# LANGUAGE BangPatterns, TypeApplications, DataKinds, DeriveGeneric #-}
 
 module QC.MonoidalScientific where
 
diff --git a/tests/QC/Rechunked.hs b/tests/QC/Rechunked.hs
--- a/tests/QC/Rechunked.hs
+++ b/tests/QC/Rechunked.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE BangPatterns #-}
 
 module QC.Rechunked (
       rechunkBS
diff --git a/tests/QC/Simple.hs b/tests/QC/Simple.hs
--- a/tests/QC/Simple.hs
+++ b/tests/QC/Simple.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE OverloadedStrings #-}
 {-# OPTIONS_GHC -fno-warn-missing-signatures #-}
 
 module QC.Simple (
diff --git a/tests/QC/Text.hs b/tests/QC/Text.hs
--- a/tests/QC/Text.hs
+++ b/tests/QC/Text.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE BangPatterns, CPP, OverloadedStrings #-}
 {-# OPTIONS_GHC -fno-warn-warnings-deprecations #-}
 module QC.Text (tests) where
 
diff --git a/tests/QC/Text/Regressions.hs b/tests/QC/Text/Regressions.hs
--- a/tests/QC/Text/Regressions.hs
+++ b/tests/QC/Text/Regressions.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE OverloadedStrings #-}
 
 module QC.Text.Regressions (
       tests
