diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Revision history for boring
 
+## 0.2.2
+
+- Support GHC-8.6.5...9.10.1
+
 ## 0.2.1
 
 -  Add instances for `SNat`, `SSymbol`, and `SChar`
diff --git a/boring.cabal b/boring.cabal
--- a/boring.cabal
+++ b/boring.cabal
@@ -1,16 +1,17 @@
+cabal-version:      2.2
 name:               boring
-version:            0.2.1
+version:            0.2.2
 synopsis:           Boring and Absurd types
 description:
   * @Boring@ types are isomorphic to @()@.
-  . 
+  .
   * @Absurd@ types are isomorphic to @Void@.
   .
   See [What does () mean in Haskell -answer by Conor McBride](https://stackoverflow.com/questions/33112439/what-does-mean-in-haskell/33115522#33115522)
 
 homepage:           https://github.com/phadej/boring
 bug-reports:        https://github.com/phadej/boring/issues
-license:            BSD3
+license:            BSD-3-Clause
 license-file:       LICENSE
 author:             Oleg Grenrus <oleg.grenrus@iki.fi>
 maintainer:         Oleg.Grenrus <oleg.grenrus@iki.fi>
@@ -18,22 +19,16 @@
 category:           Data
 build-type:         Simple
 extra-source-files: ChangeLog.md
-cabal-version:      >=1.10
 tested-with:
-  GHC ==7.4.2
-   || ==7.6.3
-   || ==7.8.4
-   || ==7.10.3
-   || ==8.0.2
-   || ==8.2.2
-   || ==8.4.4
-   || ==8.6.5
+  GHC ==8.6.5
    || ==8.8.4
    || ==8.10.7
    || ==9.0.2
-   || ==9.2.7
-   || ==9.4.4
-   || ==9.6.1
+   || ==9.2.8
+   || ==9.4.8
+   || ==9.6.5
+   || ==9.8.2
+   || ==9.10.1
 
 source-repository head
   type:     git
@@ -52,24 +47,13 @@
 library
   exposed-modules:  Data.Boring
   build-depends:
-      base          >=4.5 && <4.19
-    , transformers  >=0.3 && <0.7
+      base          >=4.12.0.0 && <4.21
+    , transformers  >=0.5.6.2  && <0.7
 
   if impl(ghc <7.6)
     build-depends: ghc-prim
-  
-  if !impl(ghc >=7.8)
-    build-depends: type-equality >=1 && <1.1
 
-  if !impl(ghc >=7.10)
-    build-depends: void >=0.7.3 && <0.8
-
-  if !impl(ghc >=8.0)
-    build-depends:
-        semigroups           >=0.18.5 && <0.21
-      , transformers-compat  >=0.5    && <0.8
-
-  if flag(tagged) || !impl(ghc >=7.8)
+  if flag(tagged)
     build-depends: tagged >=0.8.6 && <0.9
 
   other-extensions:
diff --git a/src/Data/Boring.hs b/src/Data/Boring.hs
--- a/src/Data/Boring.hs
+++ b/src/Data/Boring.hs
@@ -4,9 +4,7 @@
 {-# LANGUAGE GADTs             #-}
 {-# LANGUAGE Trustworthy       #-}
 {-# LANGUAGE TypeOperators     #-}
-#if __GLASGOW_HASKELL >= 708
 {-# LANGUAGE EmptyCase         #-}
-#endif
 -- | 'Boring' and 'Absurd' classes. One approach.
 --
 -- Different approach would be to have
@@ -79,18 +77,12 @@
 
 import qualified Data.Void as V
 
-#if __GLASGOW_HASKELL >= 708
 import qualified Data.Coerce        as Co
 import qualified Data.Type.Coercion as Co
-#else
-import Prelude (seq, error)
-#endif
 
 import qualified Data.Type.Equality as Eq
 
-#if MIN_VERSION_base(4,10,0)
 import qualified Type.Reflection as Typeable
-#endif
 
 #if MIN_VERSION_base(4,18,0)
 import qualified GHC.TypeLits as TypeLits
@@ -189,26 +181,20 @@
 instance Absurd a => Boring (Maybe a) where
     boring = Nothing
 
-#if __GLASGOW_HASKELL >= 708
 -- | Coercibility is 'Boring' too.
 instance Co.Coercible a b => Boring (Co.Coercion a b) where
     boring = Co.Coercion
-#endif
 
 -- | Homogeneous type equality is 'Boring' too.
 instance a ~ b => Boring (a Eq.:~: b) where
     boring = Eq.Refl
 
-# if MIN_VERSION_base(4,10,0)
 -- | Heterogeneous type equality is 'Boring' too.
 instance a Eq.~~ b => Boring (a Eq.:~~: b) where
     boring = Eq.HRefl
-# endif
 
-#if MIN_VERSION_base(4,10,0)
 instance Typeable.Typeable a => Boring (Typeable.TypeRep a) where
     boring = Typeable.typeRep
-#endif
 
 #if MIN_VERSION_base(4,18,0)
 instance TypeLits.KnownChar n => Boring (TypeLits.SChar n) where
@@ -295,11 +281,7 @@
 -------------------------------------------------------------------------------
 
 instance Absurd (V1 p) where
-#if __GLASGOW_HASKELL >= 708
     absurd v = case v of {}
-#else
-    absurd v = v `seq` error "absurd @(V1 p)"
-#endif
 
 instance Absurd c => Absurd (K1 i c p) where
     absurd = absurd . unK1
@@ -399,11 +381,7 @@
     gabsurd :: f a -> b
 
 instance GAbsurd V1 where
-#if __GLASGOW_HASKELL >= 708
     gabsurd x = case x of {}
-#else
-    gabsurd x = x `seq` error "gabsurd @V1"
-#endif
 
 instance GAbsurd f => GAbsurd (M1 i c f) where
     gabsurd (M1 x) = gabsurd x
