diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Version history for bin
 
+## 0.1.4
+
+- Support GHC-8.6.5...9.10.1
+
 ## 0.1.3
 
 - Add `EqP` and `OrdP` instances.
diff --git a/bin.cabal b/bin.cabal
--- a/bin.cabal
+++ b/bin.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.2
 name:               bin
-version:            0.1.3
+version:            0.1.4
 synopsis:           Bin: binary natural numbers.
 category:           Data, Dependent Types, Singletons, Math
 description:
@@ -34,18 +34,15 @@
 build-type:         Simple
 extra-source-files: ChangeLog.md
 tested-with:
-  GHC ==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
@@ -66,25 +63,28 @@
     Data.Wrd
 
   other-modules:    TrustworthyCompat
+
+  -- GHC boot libs
   build-depends:
-    , base        >=4.7     && <4.19
-    , boring      ^>=0.2
-    , dec         ^>=0.0.3
-    , deepseq     >=1.3.0.2 && <1.5
-    , fin         ^>=0.3
-    , hashable    >=1.2.7.0 && <1.5
-    , QuickCheck  ^>=2.14.2
-    , some        ^>=1.0.4
+    , base     >=4.12.0.0 && <4.21
+    , deepseq  >=1.4.4.0  && <1.6
 
-  if !impl(ghc >=7.10)
-    build-depends: nats ^>=1.1.2
+  -- siblings
+  build-depends:    fin ^>=0.3.1
 
+  -- other dependencies
+  build-depends:
+    , boring      ^>=0.2.2
+    , dec         ^>=0.0.6
+    , hashable    ^>=1.4.4.0
+    , QuickCheck  ^>=2.14.2  || ^>=2.15
+    , some        ^>=1.0.6
+
   if impl(ghc >=9.0)
     -- these flags may abort compilation with GHC-8.10
     -- https://gitlab.haskell.org/ghc/ghc/-/merge_requests/3295
     ghc-options: -Winferred-safe-imports -Wmissing-safe-haskell-mode
 
 -- dump-core
--- if impl(ghc >= 8.0)
 --  build-depends: dump-core
 --  ghc-options: -fplugin=DumpCore -fplugin-opt DumpCore:core-html
diff --git a/src/Data/Bin.hs b/src/Data/Bin.hs
--- a/src/Data/Bin.hs
+++ b/src/Data/Bin.hs
@@ -1,11 +1,5 @@
-{-# LANGUAGE CPP                #-}
 {-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE Safe               #-}
-
-#if __GLASGOW_HASKELL__ < 710
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE StandaloneDeriving #-}
-#endif
 -- | Binary natural numbers, 'Bin'.
 --
 -- This module is designed to be imported qualified.
@@ -80,11 +74,6 @@
 -------------------------------------------------------------------------------
 -- Instances
 -------------------------------------------------------------------------------
-
-#if __GLASGOW_HASKELL__ < 710
-deriving instance Typeable 'BZ
-deriving instance Typeable 'BP
-#endif
 
 -- | 'Bin' is printed as 'Natural'.
 --
diff --git a/src/Data/Bin/Pos.hs b/src/Data/Bin/Pos.hs
--- a/src/Data/Bin/Pos.hs
+++ b/src/Data/Bin/Pos.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP                    #-}
 {-# LANGUAGE DataKinds              #-}
 {-# LANGUAGE DeriveDataTypeable     #-}
 {-# LANGUAGE EmptyCase              #-}
@@ -36,15 +35,12 @@
 import Control.DeepSeq (NFData (..))
 import Data.Bin        (Bin (..), BinP (..))
 import Data.BinP.PosP  (PosP (..))
+import Data.EqP        (EqP (..))
 import Data.GADT.Show  (GShow (..))
+import Data.OrdP       (OrdP (..))
 import Data.Typeable   (Typeable)
 import Numeric.Natural (Natural)
 
-#if MIN_VERSION_some(1,0,5)
-import Data.EqP  (EqP (..))
-import Data.OrdP (OrdP (..))
-#endif
-
 import qualified Data.BinP.PosP  as PP
 import qualified Data.Boring     as Boring
 import qualified Data.Type.Bin   as B
@@ -87,7 +83,6 @@
 instance GShow Pos where
     gshowsPrec = showsPrec
 
-#if MIN_VERSION_some(1,0,5)
 -- |
 --
 -- >>> eqp (top :: Pos Bin4) (top :: Pos Bin6)
@@ -115,7 +110,6 @@
 --
 instance OrdP Pos where
     comparep (Pos x) (Pos y) = comparep x y
-#endif
 
 -- |
 --
diff --git a/src/Data/BinP.hs b/src/Data/BinP.hs
--- a/src/Data/BinP.hs
+++ b/src/Data/BinP.hs
@@ -1,12 +1,6 @@
 {-# LANGUAGE BangPatterns       #-}
-{-# LANGUAGE CPP                #-}
 {-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE Safe               #-}
-
-#if __GLASGOW_HASKELL__ < 710
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE StandaloneDeriving #-}
-#endif
 -- | Positive binary natural numbers, 'BinP'.
 --
 -- This module is designed to be imported qualified.
@@ -60,12 +54,6 @@
 -------------------------------------------------------------------------------
 -- Instances
 -------------------------------------------------------------------------------
-
-#if __GLASGOW_HASKELL__ < 710
-deriving instance Typeable 'BE
-deriving instance Typeable 'B0
-deriving instance Typeable 'B1
-#endif
 
 -- |
 --
diff --git a/src/Data/BinP/PosP.hs b/src/Data/BinP/PosP.hs
--- a/src/Data/BinP/PosP.hs
+++ b/src/Data/BinP/PosP.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP                    #-}
 {-# LANGUAGE BangPatterns           #-}
 {-# LANGUAGE DataKinds              #-}
 {-# LANGUAGE DeriveDataTypeable     #-}
@@ -33,23 +32,20 @@
     ) where
 
 import Prelude
-       (Bounded (..), Either (..), Eq (..), Int, Integer, Num, Ord (..), Ordering (..), Show (..), ShowS, String, either,
-       fmap, fromIntegral, map, showParen, showString, ($), (*), (+), (++), (.))
+       (Bounded (..), Either (..), Eq (..), Int, Integer, Num, Ord (..), Ordering (..), Show (..), ShowS, String,
+       either, fmap, fromIntegral, map, showParen, showString, ($), (*), (+), (++), (.))
 
 import Control.DeepSeq (NFData (..))
 import Data.Bin        (BinP (..))
+import Data.EqP        (EqP (..))
 import Data.GADT.Show  (GShow (..))
 import Data.Nat        (Nat (..))
+import Data.OrdP       (OrdP (..))
 import Data.Proxy      (Proxy (..))
 import Data.Typeable   (Typeable)
 import Data.Wrd        (Wrd (..))
 import Numeric.Natural (Natural)
 
-#if MIN_VERSION_some(1,0,5)
-import Data.EqP  (EqP (..))
-import Data.OrdP (OrdP (..))
-#endif
-
 import qualified Data.Bin        as B
 import qualified Data.Boring     as Boring
 import qualified Data.Type.Bin   as B
@@ -95,7 +91,6 @@
 -- some
 -------------------------------------------------------------------------------
 
-#if MIN_VERSION_some(1,0,5)
 -- | @since 0.1.3
 instance EqP PosP where
     eqp x y = toNatural x == toNatural y
@@ -103,7 +98,6 @@
 -- | @since 0.1.3
 instance OrdP PosP where
     comparep x y = compare (toNatural x) (toNatural y)
-#endif
 
 -------------------------------------------------------------------------------
 -- Instances
diff --git a/src/Data/Type/Bin.hs b/src/Data/Type/Bin.hs
--- a/src/Data/Type/Bin.hs
+++ b/src/Data/Type/Bin.hs
@@ -1,20 +1,15 @@
-{-# LANGUAGE CPP                  #-}
 {-# LANGUAGE DataKinds            #-}
 {-# LANGUAGE DeriveDataTypeable   #-}
 {-# LANGUAGE FlexibleContexts     #-}
 {-# LANGUAGE GADTs                #-}
 {-# LANGUAGE KindSignatures       #-}
 {-# LANGUAGE RankNTypes           #-}
+{-# LANGUAGE Safe                 #-}
 {-# LANGUAGE ScopedTypeVariables  #-}
 {-# LANGUAGE StandaloneDeriving   #-}
 {-# LANGUAGE TypeFamilies         #-}
 {-# LANGUAGE TypeOperators        #-}
 {-# LANGUAGE UndecidableInstances #-}
-#if MIN_VERSION_base(4,8,0)
-{-# LANGUAGE Safe                 #-}
-#else
-{-# LANGUAGE Trustworthy          #-}
-#endif
 -- | Binary natural numbers. @DataKinds@ stuff.
 module Data.Type.Bin (
     -- * Singleton
@@ -54,7 +49,8 @@
 import Control.DeepSeq   (NFData (..))
 import Data.Bin          (Bin (..), BinP (..))
 import Data.Boring       (Boring (..))
-import Data.GADT.Compare (GEq (..))
+import Data.EqP          (EqP (..))
+import Data.GADT.Compare (GEq (..), defaultEq)
 import Data.GADT.DeepSeq (GNFData (..))
 import Data.GADT.Show    (GShow (..))
 import Data.Nat          (Nat (..))
@@ -63,11 +59,6 @@
 import Data.Typeable     (Typeable)
 import Numeric.Natural   (Natural)
 
-#if MIN_VERSION_some(1,0,5)
-import Data.EqP          (EqP (..))
-import Data.GADT.Compare (defaultEq)
-#endif
-
 import qualified Data.Type.BinP as BP
 import qualified Data.Type.Nat  as N
 import qualified GHC.TypeLits   as GHC
@@ -189,10 +180,6 @@
     EqBin ('BP n) ('BP m) = BP.EqBinP n m
     EqBin n       m       = 'False
 
-#if !MIN_VERSION_base(4,11,0)
-type instance n == m = EqBin n m
-#endif
-
 -------------------------------------------------------------------------------
 -- Induction
 -------------------------------------------------------------------------------
@@ -419,10 +406,8 @@
 instance Ord (SBin a) where
     compare _ _ = EQ
 
-#if MIN_VERSION_some(1,0,5)
 -- | @since 0.1.3
 instance EqP SBin where eqp = defaultEq
-#endif
 
 -- | @since 0.1.2
 instance GShow SBin where
diff --git a/src/Data/Type/BinP.hs b/src/Data/Type/BinP.hs
--- a/src/Data/Type/BinP.hs
+++ b/src/Data/Type/BinP.hs
@@ -10,11 +10,7 @@
 {-# LANGUAGE TypeFamilies         #-}
 {-# LANGUAGE TypeOperators        #-}
 {-# LANGUAGE UndecidableInstances #-}
-#if MIN_VERSION_base(4,8,0)
 {-# LANGUAGE Safe                 #-}
-#else
-{-# LANGUAGE Trustworthy          #-}
-#endif
 -- | Positive binary natural numbers. @DataKinds@ stuff.
 module Data.Type.BinP (
     -- * Singleton
@@ -57,11 +53,8 @@
 import Data.Proxy        (Proxy (..))
 import Data.Typeable     (Typeable)
 import Numeric.Natural   (Natural)
-
-#if MIN_VERSION_some(1,0,5)
 import Data.EqP          (EqP (..))
 import Data.GADT.Compare (defaultEq)
-#endif
 
 import qualified Data.Type.Nat as N
 import qualified GHC.TypeLits  as GHC
@@ -167,10 +160,6 @@
     EqBinP ('B1 n) ('B1 m) = EqBinP n m
     EqBinP n       m       = 'False
 
-#if !MIN_VERSION_base(4,11,0)
-type instance n == m = EqBinP n m
-#endif
-
 -------------------------------------------------------------------------------
 -- Convert to GHC Nat
 -------------------------------------------------------------------------------
@@ -295,10 +284,8 @@
 instance Ord (SBinP a) where
     compare _ _ = EQ
 
-#if MIN_VERSION_some(1,0,5)
 -- | @since 0.1.3
 instance EqP SBinP where eqp = defaultEq
-#endif
 
 -- | @since 0.1.2
 instance GShow SBinP where
diff --git a/src/Data/Wrd.hs b/src/Data/Wrd.hs
--- a/src/Data/Wrd.hs
+++ b/src/Data/Wrd.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE BangPatterns        #-}
-{-# LANGUAGE CPP                 #-}
 {-# LANGUAGE DataKinds           #-}
 {-# LANGUAGE DeriveDataTypeable  #-}
 {-# LANGUAGE GADTs               #-}
@@ -215,10 +214,7 @@
 
 instance N.SNatI n => I.FiniteBits (Wrd n) where
     finiteBitSize _ = N.reflectToNum (Proxy :: Proxy n)
-
-#if MIN_VERSION_base(4,8,0)
     countLeadingZeros = countLeadingZeros
-#endif
 
 testBit :: Wrd n -> Int -> Bool
 testBit w0 i = snd (go 0 w0) where
