diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,7 @@
+0.8.3 [2024.12.06]
+------------------
+* Drop support for pre-8.0 versions of GHC.
+
 0.8.2 [2022.05.07]
 ------------------
 * Allow building with `mtl-2.3.*`.
diff --git a/src/Data/Functor/Trans/Tagged.hs b/src/Data/Functor/Trans/Tagged.hs
--- a/src/Data/Functor/Trans/Tagged.hs
+++ b/src/Data/Functor/Trans/Tagged.hs
@@ -4,16 +4,7 @@
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE UndecidableInstances #-}
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE CPP #-}
-#ifdef LANGUAGE_DeriveDataTypeable
-{-# LANGUAGE DeriveDataTypeable #-}
-#endif
-#if __GLASGOW_HASKELL__ >= 706
 {-# LANGUAGE PolyKinds #-}
-#endif
-#if __GLASGOW_HASKELL__ >= 702 && __GLASGOW_HASKELL__ < 710
-{-# LANGUAGE Trustworthy #-}
-#endif
 ----------------------------------------------------------------------------
 -- |
 -- Module     : Data.Functor.Trans.Tagged
@@ -44,16 +35,8 @@
   , witness, witnessT
   ) where
 
-#if defined(__GLASGOW_HASKELL__) && (__GLASGOW_HASKELL__ >= 706)
 import Prelude hiding (foldr, foldl, mapM, sequence, foldr1, foldl1)
-#else
-import Prelude hiding (catch, foldr, foldl, mapM, sequence, foldr1, foldl1)
-#endif
-#if __GLASGOW_HASKELL__ < 710
-import Control.Applicative (Alternative(..), Applicative(..), (<$), (<$>))
-#else
 import Control.Applicative (Alternative(..))
-#endif
 import Control.Monad (liftM, MonadPlus(..))
 import Control.Monad.Catch (MonadCatch(..), MonadThrow(..), MonadMask(..))
 import Control.Monad.Fix (MonadFix(..))
@@ -67,16 +50,13 @@
 import Control.Comonad.Hoist.Class (ComonadHoist(..))
 import Control.Comonad (Comonad(..))
 import Data.Traversable (Traversable(..))
-import Data.Typeable
 import Data.Foldable (Foldable(..))
 import Data.Distributive (Distributive(..))
 import Data.Functor.Bind (Apply(..), Bind(..))
 import Data.Functor.Extend (Extend(..))
 import Data.Functor.Plus (Alt(..), Plus(..))
 import Data.Functor.Contravariant (Contravariant(..))
-#if !(defined(__GLASGOW_HASKELL__)) || __GLASGOW_HASKELL__ < 707
 import Data.Proxy (Proxy(..))
-#endif
 import Data.Reflection (Reifies(..))
 
 -- ---------------------------------------------------------------------------
@@ -149,11 +129,7 @@
 -- Moreover, you don't have to rely on the compiler to inline away the extra
 -- argument, because the newtype is \"free\"
 newtype TaggedT s m b = TagT { untagT :: m b }
-  deriving ( Eq, Ord, Read, Show
-#if __GLASGOW_HASKELL__ >= 707
-  , Typeable
-#endif
-  )
+  deriving (Eq, Ord, Read, Show)
 
 instance Functor m => Functor (TaggedT s m) where
   fmap f (TagT x) = TagT (fmap f x)
@@ -230,10 +206,8 @@
   {-# INLINE liftIO #-}
 
 instance MonadWriter w m => MonadWriter w (TaggedT s m) where
-#if MIN_VERSION_mtl(2,1,0)
   writer = lift . writer
   {-# INLINE writer #-}
-#endif
   tell = lift . tell
   {-# INLINE tell #-}
   listen = lift . listen . untagT
@@ -246,20 +220,16 @@
   {-# INLINE ask #-}
   local f = lift . local f . untagT
   {-# INLINE local #-}
-#if MIN_VERSION_mtl(2,1,0)
   reader = lift . reader
   {-# INLINE reader #-}
-#endif
 
 instance MonadState t m => MonadState t (TaggedT s m) where
   get = lift get
   {-# INLINE get #-}
   put = lift . put
   {-# INLINE put #-}
-#if MIN_VERSION_mtl(2,1,0)
   state = lift . state
   {-# INLINE state #-}
-#endif
 
 instance MonadCont m => MonadCont (TaggedT s m) where
   callCC f = lift . callCC $ \k -> untagT (f (TagT . k))
@@ -326,13 +296,11 @@
   uninterruptibleMask a = TagT $ uninterruptibleMask $ \u -> untagT (a $ q u)
     where q u = TagT . u . untagT
   {-# INLINE uninterruptibleMask#-}
-#if MIN_VERSION_exceptions(0,10,0)
   generalBracket acquire release use = TagT $
     generalBracket
       (untagT acquire)
       (\resource exitCase -> untagT (release resource exitCase))
       (\resource -> untagT (use resource))
-#endif
 
 -- | Easier to type alias for 'TagT'
 tagT :: m b -> TaggedT s m b
diff --git a/tagged-transformer.cabal b/tagged-transformer.cabal
--- a/tagged-transformer.cabal
+++ b/tagged-transformer.cabal
@@ -1,5 +1,5 @@
 name:           tagged-transformer
-version:        0.8.2
+version:        0.8.3
 license:        BSD3
 license-file:   LICENSE
 author:         Edward A. Kmett
@@ -18,20 +18,19 @@
   .gitignore
   CHANGELOG.markdown
   README.markdown
-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
+tested-with:   GHC == 8.0.2
              , GHC == 8.2.2
              , GHC == 8.4.4
              , GHC == 8.6.5
              , GHC == 8.8.4
              , GHC == 8.10.7
              , GHC == 9.0.2
-             , GHC == 9.2.2
+             , GHC == 9.2.8
+             , GHC == 9.4.8
+             , GHC == 9.6.6
+             , GHC == 9.8.4
+             , GHC == 9.10.1
+             , GHC == 9.12.1
 
 source-repository head
   type: git
@@ -39,14 +38,14 @@
 
 library
   build-depends:
-    base                      >= 4        && < 5,
+    base                      >= 4.9      && < 5,
     comonad                   >= 4        && < 6,
     contravariant             >= 0.3      && < 2,
     distributive              >= 0.3      && < 1,
-    exceptions                >= 0.6      && < 1,
-    mtl                       >= 2.0.1    && < 2.4,
+    exceptions                >= 0.10     && < 1,
+    mtl                       >= 2.2      && < 2.4,
     reflection                >= 1.1.6    && < 3,
-    semigroupoids             >= 4        && < 6,
+    semigroupoids             >= 4        && < 7,
     tagged                    >= 0.4.4    && < 1
 
   exposed-modules:
@@ -55,7 +54,3 @@
   hs-source-dirs: src
   ghc-options: -Wall
   default-language: Haskell2010
-
-  if !impl(hugs)
-    cpp-options: -DLANGUAGE_DeriveDataTypeable
-    other-extensions: DeriveDataTypeable
