diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,30 @@
+## 1.0.6
+
+- Support GHC-9.12.1
+- Fix a small bug QuarterOfYear instance
+
+## 1.0.5
+
+- Support GHC-8.6.5...9.10.1
+
+## 1.0.4
+
+- Add instances for `ByteArray` from `data-array-byte` or `base`
+- Support `primitive-0.8`
+- Support `tagged-0.8.7`
+
+## 1.0.3
+
+- Add instance for `primitive`s `ByteArray`.
+
+## 1.0.2
+
+- Support `aeson-2.0.0.0`
+
+## 1.0.1
+
+- Add instances for `time-1.11` types: `Month`, `Quarter`, `QuarterOfYear`
+
 ## 1
 
 - **Breaking change** rename this package to `binary-instances`.
diff --git a/binary-instances.cabal b/binary-instances.cabal
--- a/binary-instances.cabal
+++ b/binary-instances.cabal
@@ -1,60 +1,72 @@
+cabal-version:      2.2
 name:               binary-instances
-version:            1
+version:            1.0.6
 synopsis:           Orphan instances for binary
 description:
-  `binary-orphans` defines orphan instances for types in some popular packages.
+  `binary-instances` defines orphan instances for types in some popular packages.
 
 category:           Web
-homepage:           https://github.com/phadej/binary-orphans#readme
-bug-reports:        https://github.com/phadej/binary-orphans/issues
+homepage:           https://github.com/haskellari/binary-instances#readme
+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 ==8.8.1 || ==8.6.5 || ==8.4.4 || ==8.2.2 || ==8.0.2 || ==7.10.3 || ==7.8.4 || ==7.6.3
+  GHC ==8.6.5
+   || ==8.8.4
+   || ==8.10.7
+   || ==9.0.2
+   || ==9.2.8
+   || ==9.4.8
+   || ==9.6.6
+   || ==9.8.4
+   || ==9.10.1
+   || ==9.12.2
 
-extra-source-files:
-  CHANGELOG.md
+extra-source-files: CHANGELOG.md
 
 source-repository head
   type:     git
-  location: https://github.com/phadej/binary-orphans
+  location: https://github.com/haskellari/binary-instances
 
 library
+  default-language: Haskell2010
   hs-source-dirs:   src
   build-depends:
-      aeson                    >=0.7.0.6   && <1.5
-    , base                     >=4.6.0.1   && <4.13
-    , binary                   >=0.5.1.1   && <0.8.7
-    , binary-orphans           >=1.0.1     && <1.1
-    , case-insensitive         >=1.2.0.4   && <1.2.2
-    , hashable                 >=1.2.3.3   && <1.4
-    , scientific               >=0.3.3.8   && <0.4
-    , tagged                   >=0.7.3     && <0.8.7
-    , text                     >=1.2.0.6   && <1.3
-    , text-binary              >=0.2.1.1   && <0.3
-    , time-compat              >=1.9.2.2   && <1.10
-    , unordered-containers     >=0.2.5.1   && <0.3
-    , vector                   >=0.10.12.3 && <0.13
-    , vector-binary-instances  >=0.2.1.0   && <0.3
+    , base    >=4.6.0.1 && <4.22
+    , 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.10
+
+  build-depends:
+    , aeson                    ^>=2.2.2.0
+    , binary-orphans           ^>=1.0.5
+    , hashable                 ^>=1.4.4.0  || ^>=1.5.0.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
     Data.Binary.Instances.CaseInsensitive
+    Data.Binary.Instances.Hashable
+    Data.Binary.Instances.Primitive
     Data.Binary.Instances.Scientific
+    Data.Binary.Instances.Tagged
     Data.Binary.Instances.Text
     Data.Binary.Instances.Time
-    Data.Binary.Instances.Tagged
-    Data.Binary.Instances.Hashable
     Data.Binary.Instances.UnorderedContainers
     Data.Binary.Instances.Vector
 
-  default-language: Haskell2010
-
 test-suite binary-instances-test
   default-language: Haskell2010
   type:             exitcode-stdio-1.0
@@ -62,20 +74,24 @@
   hs-source-dirs:   test
   ghc-options:      -Wall -fno-warn-orphans
   build-depends:
-      aeson
+    , aeson
     , base
     , binary
     , binary-instances
+    , bytestring
     , case-insensitive
     , hashable
-    , QuickCheck            >=2.13.1   && <2.14
-    , quickcheck-instances  >=0.3.21   && <0.4
+    , primitive
+    , QuickCheck            ^>=2.14.3 || ^>=2.15.0.1
+    , quickcheck-instances  ^>=0.3.31
     , scientific
     , tagged
-    , tasty                 >=0.10.1.2 && <1.3
-    , tasty-quickcheck      >=0.8.3.2  && <0.11
+    , tasty                 ^>=1.5
+    , tasty-quickcheck      ^>=0.10.3 || ^>=0.11
     , text
     , time-compat
     , unordered-containers
     , vector
 
+  if impl(ghc >=8.0 && <9.4)
+    build-depends: data-array-byte
diff --git a/src/Data/Binary/Instances.hs b/src/Data/Binary/Instances.hs
--- a/src/Data/Binary/Instances.hs
+++ b/src/Data/Binary/Instances.hs
@@ -28,6 +28,7 @@
 import Data.Binary.Instances.Aeson ()
 import Data.Binary.Instances.CaseInsensitive ()
 import Data.Binary.Instances.Hashable ()
+import Data.Binary.Instances.Primitive ()
 import Data.Binary.Instances.Scientific ()
 import Data.Binary.Instances.Tagged ()
 import Data.Binary.Instances.Text ()
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,7 +1,7 @@
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 module Data.Binary.Instances.Aeson where
 
-import Data.Binary (Binary, Get, get, put)
+import Data.Binary         (Binary, Get, get, put)
 import Data.Binary.Orphans ()
 
 import Data.Binary.Instances.Scientific ()
@@ -9,7 +9,9 @@
 import Data.Binary.Instances.UnorderedContainers ()
 import Data.Binary.Instances.Vector ()
 
-import qualified Data.Aeson as A
+import qualified Data.Aeson        as A
+import qualified Data.Aeson.Key    as Key
+import qualified Data.Aeson.KeyMap as KM
 
 instance Binary A.Value where
     get = do
@@ -29,3 +31,11 @@
     put (A.Number v) = put (3 :: Int) >> put v
     put (A.Bool v)   = put (4 :: Int) >> put v
     put A.Null       = put (5 :: Int)
+
+instance Binary Key.Key where
+    get = Key.fromText <$> get
+    put = put . Key.toText
+
+instance Binary v => Binary (KM.KeyMap v) where
+    get = fmap KM.fromList get
+    put = put . KM.toList
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
new file mode 100644
--- /dev/null
+++ b/src/Data/Binary/Instances/Primitive.hs
@@ -0,0 +1,4 @@
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+module Data.Binary.Instances.Primitive where
+
+import Data.Binary.Orphans ()
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/Tagged.hs b/src/Data/Binary/Instances/Tagged.hs
--- a/src/Data/Binary/Instances/Tagged.hs
+++ b/src/Data/Binary/Instances/Tagged.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE CPP       #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 #if __GLASGOW_HASKELL__ >= 706
 {-# LANGUAGE PolyKinds #-}
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
diff --git a/src/Data/Binary/Instances/Time.hs b/src/Data/Binary/Instances/Time.hs
--- a/src/Data/Binary/Instances/Time.hs
+++ b/src/Data/Binary/Instances/Time.hs
@@ -6,12 +6,14 @@
 import Data.Binary.Orphans ()
 import Data.Word           (Word8)
 
-import qualified Data.Fixed                    as Fixed
-import qualified Data.Time.Calendar.Compat     as Time
-import qualified Data.Time.Clock.Compat        as Time
-import qualified Data.Time.Clock.System.Compat as Time
-import qualified Data.Time.Clock.TAI.Compat    as Time
-import qualified Data.Time.LocalTime.Compat    as Time
+import qualified Data.Fixed                        as Fixed
+import qualified Data.Time.Calendar.Compat         as Time
+import qualified Data.Time.Calendar.Month.Compat   as Time
+import qualified Data.Time.Calendar.Quarter.Compat as Time
+import qualified Data.Time.Clock.Compat            as Time
+import qualified Data.Time.Clock.System.Compat     as Time
+import qualified Data.Time.Clock.TAI.Compat        as Time
+import qualified Data.Time.LocalTime.Compat        as Time
 
 instance Binary Time.Day where
   get = fmap Time.ModifiedJulianDay get
@@ -84,4 +86,27 @@
             4 -> Time.Thursday
             5 -> Time.Friday
             6 -> Time.Saturday
-            _ -> error "panic: get @DayOfWeek"
+            j -> error $ "panic: get @DayOfWeek: " ++ show (i, j)
+
+instance Binary Time.Month where
+    put (Time.MkMonth m) = put m
+    get = fmap Time.MkMonth get
+
+instance Binary Time.Quarter where
+    put (Time.MkQuarter m) = put m
+    get = fmap Time.MkQuarter get
+
+instance Binary Time.QuarterOfYear where
+    put Time.Q1 = put (1 :: Word8)
+    put Time.Q2 = put (2 :: Word8)
+    put Time.Q3 = put (3 :: Word8)
+    put Time.Q4 = put (4 :: Word8)
+
+    get = do
+        i <- get
+        return $ case mod (i :: Word8) 4 of
+            1 -> Time.Q1
+            2 -> Time.Q2
+            3 -> Time.Q3
+            0 -> Time.Q4
+            j -> error $ "panic: get @QuarterOfYear: " ++ show (i, j)
diff --git a/src/Data/Binary/Instances/UnorderedContainers.hs b/src/Data/Binary/Instances/UnorderedContainers.hs
--- a/src/Data/Binary/Instances/UnorderedContainers.hs
+++ b/src/Data/Binary/Instances/UnorderedContainers.hs
@@ -1,12 +1,12 @@
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 module Data.Binary.Instances.UnorderedContainers where
 
-import Data.Binary (Binary, get, put)
+import Data.Binary         (Binary, get, put)
 import Data.Binary.Orphans ()
 
-import qualified Data.Hashable        as Hashable
-import qualified Data.HashMap.Lazy    as HM
-import qualified Data.HashSet         as HS
+import qualified Data.Hashable     as Hashable
+import qualified Data.HashMap.Lazy as HM
+import qualified Data.HashSet      as HS
 
 instance  (Hashable.Hashable k, Eq k, Binary k, Binary v) => Binary (HM.HashMap k v) where
     get = fmap HM.fromList get
diff --git a/test/Tests.hs b/test/Tests.hs
--- a/test/Tests.hs
+++ b/test/Tests.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP                 #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 module Main (main) where
 
@@ -10,6 +11,7 @@
 import Test.Tasty            (TestTree, defaultMain, testGroup)
 import Test.Tasty.QuickCheck (testProperty)
 
+import Data.ByteString      (ByteString)
 import Data.CaseInsensitive (CI)
 import Data.HashMap.Lazy    (HashMap)
 import Data.HashSet         (HashSet)
@@ -21,12 +23,19 @@
 
 import qualified Data.Vector.Unboxed as VU
 
-import qualified Data.Time.Calendar.Compat     as Time
-import qualified Data.Time.Clock.Compat        as Time
-import qualified Data.Time.Clock.System.Compat as Time
-import qualified Data.Time.Clock.TAI.Compat    as Time
-import qualified Data.Time.LocalTime.Compat    as Time
+import qualified Data.Primitive                    as Prim
+import qualified Data.Time.Calendar.Compat         as Time
+import qualified Data.Time.Calendar.Month.Compat   as Time
+import qualified Data.Time.Calendar.Quarter.Compat as Time
+import qualified Data.Time.Clock.Compat            as Time
+import qualified Data.Time.Clock.System.Compat     as Time
+import qualified Data.Time.Clock.TAI.Compat        as Time
+import qualified Data.Time.LocalTime.Compat        as Time
 
+#if MIN_VERSION_base(4,9,0)
+import qualified Data.Array.Byte as AB
+#endif
+
 main :: IO ()
 main = defaultMain tests
 
@@ -48,8 +57,15 @@
     , roundtripProperty (undefined :: Time.TimeOfDay)
     , roundtripProperty (undefined :: Time.TimeZone)
     , roundtripProperty (undefined :: Time.UTCTime)
+    , roundtripProperty (undefined :: Time.QuarterOfYear)
+    , roundtripProperty (undefined :: Time.Quarter)
+    , roundtripProperty (undefined :: Time.Month)
     -- case-insensitive & text
+#if __GLASGOW_HASKELL__ <807
+    -- https://github.com/haskell/text/issues/227
     , roundtripProperty (undefined :: (CI Text))
+#endif
+    , roundtripProperty (undefined :: (CI ByteString))
     -- semigroups / monoids
     , roundtripProperty (undefined :: (Sum Int))
     -- tagged
@@ -59,6 +75,10 @@
     -- vector
     , roundtripProperty (undefined :: Vector Char)
     , roundtripProperty (undefined :: VU.Vector Char)
+    , roundtripProperty (undefined :: Prim.ByteArray)
+#if MIN_VERSION_base(4,9,0)
+    , roundtripProperty (undefined :: AB.ByteArray)
+#endif
     ]
 
 roundtrip :: (Eq a, Show a, Binary a) => a -> a -> Property
