diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.0.5
+
+- Support GHC-8.6.5...9.10.1
+
 ## 1.0.4
 
 - Add instances for `ByteArray` from `data-array-byte` or `base`
diff --git a/binary-instances.cabal b/binary-instances.cabal
--- a/binary-instances.cabal
+++ b/binary-instances.cabal
@@ -1,5 +1,6 @@
+cabal-version:      2.2
 name:               binary-instances
-version:            1.0.4
+version:            1.0.5
 synopsis:           Orphan instances for binary
 description:
   `binary-instances` defines orphan instances for types in some popular packages.
@@ -9,23 +10,19 @@
 bug-reports:        https://github.com/haskellari/binary-instances/issues
 author:             Oleg Grenrus <oleg.grenrus@iki.fi>
 maintainer:         Oleg Grenrus <oleg.grenrus@iki.fi>
-license:            BSD3
+license:            BSD-3-Clause
 license-file:       LICENSE
 build-type:         Simple
-cabal-version:      >=1.10
 tested-with:
-  GHC ==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.2.8
+   || ==9.4.8
+   || ==9.6.5
+   || ==9.8.2
+   || ==9.10.1
 
 extra-source-files: CHANGELOG.md
 
@@ -37,22 +34,25 @@
   default-language: Haskell2010
   hs-source-dirs:   src
   build-depends:
-      aeson                    >=0.7.0.6   && <1.6 || >=2.0.0.0 && <2.2
-    , base                     >=4.6.0.1   && <4.18
-    , binary                   >=0.5.1.1   && <0.8.10
-    , binary-orphans           >=1.0.4     && <1.1
-    , case-insensitive         >=1.2.0.4   && <1.2.2
-    , hashable                 >=1.2.3.3   && <1.5
-    , primitive                >=0.7.2.0   && <0.9
-    , scientific               >=0.3.3.8   && <0.4
-    , tagged                   >=0.7.3     && <0.8.8
-    , text                     >=1.2.0.6   && <1.3 || >=2.0 && <2.1
-    , text-binary              >=0.2.1.1   && <0.3
-    , time-compat              >=1.9.4     && <1.10
-    , unordered-containers     >=0.2.5.1   && <0.3
-    , vector                   >=0.10.12.3 && <0.14
-    , vector-binary-instances  >=0.2.1.0   && <0.3
+    , base    >=4.6.0.1 && <4.21
+    , binary  >=0.5.1.1 && <0.8.10
+    , text    >=1.2.3.0 && <1.3    || >=2.0 && <2.2
 
+  build-depends:
+    , case-insensitive  >=1.2.1.0 && <1.2.2
+    , tagged            >=0.8.8   && <0.8.9
+
+  build-depends:
+    , aeson                    ^>=2.2.2.0
+    , binary-orphans           ^>=1.0.5
+    , hashable                 ^>=1.4.4.0
+    , primitive                ^>=0.9.0.0
+    , scientific               ^>=0.3.8.0
+    , time-compat              ^>=1.9.7
+    , unordered-containers     ^>=0.2.20
+    , vector                   ^>=0.13.1.0
+    , vector-binary-instances  ^>=0.2.5.2
+
   exposed-modules:
     Data.Binary.Instances
     Data.Binary.Instances.Aeson
@@ -73,7 +73,7 @@
   hs-source-dirs:   test
   ghc-options:      -Wall -fno-warn-orphans
   build-depends:
-      aeson
+    , aeson
     , base
     , binary
     , binary-instances
@@ -81,12 +81,12 @@
     , case-insensitive
     , hashable
     , primitive
-    , QuickCheck            >=2.13.1   && <2.15
-    , quickcheck-instances  >=0.3.29   && <0.4
+    , QuickCheck            ^>=2.14.3 || ^>=2.15.0.1
+    , quickcheck-instances  ^>=0.3.31
     , scientific
     , tagged
-    , tasty                 >=0.10.1.2 && <1.5
-    , tasty-quickcheck      >=0.8.3.2  && <0.11
+    , tasty                 ^>=1.5
+    , tasty-quickcheck      ^>=0.10.3
     , text
     , time-compat
     , unordered-containers
diff --git a/src/Data/Binary/Instances/Aeson.hs b/src/Data/Binary/Instances/Aeson.hs
--- a/src/Data/Binary/Instances/Aeson.hs
+++ b/src/Data/Binary/Instances/Aeson.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 module Data.Binary.Instances.Aeson where
 
@@ -10,12 +9,9 @@
 import Data.Binary.Instances.UnorderedContainers ()
 import Data.Binary.Instances.Vector ()
 
-import qualified Data.Aeson as A
-
-#if MIN_VERSION_aeson(2,0,0)
-import qualified Data.Aeson.Key as Key
+import qualified Data.Aeson        as A
+import qualified Data.Aeson.Key    as Key
 import qualified Data.Aeson.KeyMap as KM
-#endif
 
 instance Binary A.Value where
     get = do
@@ -36,7 +32,6 @@
     put (A.Bool v)   = put (4 :: Int) >> put v
     put A.Null       = put (5 :: Int)
 
-#if MIN_VERSION_aeson(2,0,0)
 instance Binary Key.Key where
     get = Key.fromText <$> get
     put = put . Key.toText
@@ -44,4 +39,3 @@
 instance Binary v => Binary (KM.KeyMap v) where
     get = fmap KM.fromList get
     put = put . KM.toList
-#endif
diff --git a/src/Data/Binary/Instances/Hashable.hs b/src/Data/Binary/Instances/Hashable.hs
--- a/src/Data/Binary/Instances/Hashable.hs
+++ b/src/Data/Binary/Instances/Hashable.hs
@@ -1,14 +1,11 @@
-{-# LANGUAGE CPP #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 module Data.Binary.Instances.Hashable where
 
 import Data.Binary.Orphans ()
 
-#if MIN_VERSION_hashable(1,2,5)
 import           Data.Binary   (Binary, get, put)
 import qualified Data.Hashable as Hashable
 
 instance (Hashable.Hashable a, Binary a) => Binary (Hashable.Hashed a) where
     get = fmap Hashable.hashed get
     put = put . Hashable.unhashed
-#endif
diff --git a/src/Data/Binary/Instances/Primitive.hs b/src/Data/Binary/Instances/Primitive.hs
--- a/src/Data/Binary/Instances/Primitive.hs
+++ b/src/Data/Binary/Instances/Primitive.hs
@@ -1,29 +1,4 @@
-{-# LANGUAGE CPP #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 module Data.Binary.Instances.Primitive where
 
 import Data.Binary.Orphans ()
-
-#if !MIN_VERSION_primitive(0,8,0)
-import Control.Monad (replicateM)
-import Data.Binary   (Binary, Get, Put, get, put)
-import Data.Word     (Word8)
-
-import qualified Data.Primitive as Prim
-
--- | @since 1.0.3
-instance Binary Prim.ByteArray where
-  put ba = put maxI >> go 0
-    where
-      maxI :: Int
-      maxI = Prim.sizeofByteArray ba
-
-      go :: Int -> Put
-      go i | i < maxI  = put (Prim.indexByteArray ba i :: Word8) >> go (i + 1)
-           | otherwise = return ()
-
-  get = do
-    len <- get
-    xs  <- replicateM len get
-    return (Prim.byteArrayFromListN len (xs :: [Word8]))
-#endif
diff --git a/src/Data/Binary/Instances/Scientific.hs b/src/Data/Binary/Instances/Scientific.hs
--- a/src/Data/Binary/Instances/Scientific.hs
+++ b/src/Data/Binary/Instances/Scientific.hs
@@ -1,16 +1,4 @@
-{-# LANGUAGE CPP #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 module Data.Binary.Instances.Scientific where
 
 import Data.Binary.Orphans ()
-
-#if !(MIN_VERSION_scientific(0,3,4))
-import Control.Monad (liftM2)
-import Data.Binary   (Binary, Get, Put, get, put)
-
-import qualified Data.Scientific as S
-
-instance Binary S.Scientific where
-    get = liftM2 S.scientific get get
-    put s = put (S.coefficient s) >> put (S.base10Exponent s)
-#endif
diff --git a/src/Data/Binary/Instances/Text.hs b/src/Data/Binary/Instances/Text.hs
--- a/src/Data/Binary/Instances/Text.hs
+++ b/src/Data/Binary/Instances/Text.hs
@@ -3,7 +3,3 @@
 module Data.Binary.Instances.Text where
 
 import Data.Binary.Orphans ()
-
-#if !(MIN_VERSION_text(1,2,1))
-import Data.Text.Binary ()
-#endif
