diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,8 @@
+Changes in 0.6.2.0
+
+  * GHC 9.10 compatibility
+
+
 Changes in 0.6.1.1
 
   * doctests are marked as non-buildable on GHC9.0 & 9.2
diff --git a/Data/Vector/HFixed.hs b/Data/Vector/HFixed.hs
--- a/Data/Vector/HFixed.hs
+++ b/Data/Vector/HFixed.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP                   #-}
 {-# LANGUAGE ConstraintKinds       #-}
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleContexts      #-}
@@ -5,7 +6,6 @@
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Rank2Types            #-}
 {-# LANGUAGE ScopedTypeVariables   #-}
-{-# LANGUAGE ScopedTypeVariables   #-}
 {-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 {-# LANGUAGE TypeOperators         #-}
@@ -125,6 +125,9 @@
 import Prelude ( Functor(..),Eq(..),Ord,Bool,Ordering
                , id,(.),($),seq)
 import qualified Prelude
+#if MIN_VERSION_base(4,17,0)
+import Prelude (type(~))
+#endif
 
 import           Data.Vector.HFixed.Class hiding (cons,consF)
 import           Data.Vector.Fixed.Cont       (Peano)
@@ -276,15 +279,17 @@
 -- ...
 --     • Cannot find type:
 --       Int
---     • In the expression: tyLookup ('c', "str") :: Int
---       In an equation for ‘it’: it = tyLookup ('c', "str") :: Int
+-- ... • In the expression: tyLookup ('c', "str") :: Int
+-- ...   In an equation for ‘it’: it = tyLookup ('c', "str") :: Int
+-- ...
 --
 -- >>> tyLookup ('c','c') :: Char
 -- ...
 --     • Duplicate type found:
 --       Char
---     • In the expression: tyLookup ('c', 'c') :: Char
---       In an equation for ‘it’: it = tyLookup ('c', 'c') :: Char
+-- ... • In the expression: tyLookup ('c', 'c') :: Char
+-- ...   In an equation for ‘it’: it = tyLookup ('c', 'c') :: Char
+-- ...
 tyLookup :: (HVector v, TyLookup a (Elems v)) => v -> a
 tyLookup = C.tyLookup . C.cvec
 {-# INLINE tyLookup #-}
diff --git a/Data/Vector/HFixed/Class.hs b/Data/Vector/HFixed/Class.hs
--- a/Data/Vector/HFixed/Class.hs
+++ b/Data/Vector/HFixed/Class.hs
@@ -71,6 +71,7 @@
 import Data.Complex          (Complex(..))
 import Data.Functor.Identity (Identity(..))
 import Data.Type.Equality    (type (==))
+import Data.Kind             (Type)
 
 import           Data.Vector.Fixed.Cont   (Peano,PeanoNum(..),ArityPeano)
 import qualified Data.Vector.Fixed                as F
@@ -95,7 +96,7 @@
 
 -- | Type family for N-ary function. Types of function parameters are
 --   encoded as the list of types.
-type family Fn (f :: α -> *) (as :: [α]) b where
+type family Fn (f :: α -> Type) (as :: [α]) b where
   Fn f '[]      b = b
   Fn f (a : as) b = f a -> Fn f as b
 
@@ -227,7 +228,7 @@
 --
 -- Default implementation which uses 'Generic' is provided.
 class Arity (Elems v) => HVector v where
-  type Elems v :: [*]
+  type Elems v :: [Type]
   type Elems v = GElems (Rep v)
   -- | Function for constructing vector
   construct :: Fun (Elems v) v
@@ -250,7 +251,7 @@
 -- | Type class for partially homogeneous vector where every element
 --   in the vector have same type constructor. Vector itself is
 --   parametrized by that constructor
-class Arity (ElemsF v) => HVectorF (v :: (α -> *) -> *) where
+class Arity (ElemsF v) => HVectorF (v :: (α -> Type) -> Type) where
   -- | Elements of the vector without type constructors
   type ElemsF v :: [α]
   inspectF   :: v f -> TFun f (ElemsF v) a -> a
@@ -303,6 +304,7 @@
 
 
 instance ( HomArity (Peano n) a
+         , Arity (HomList (Peano n) a)
          , KnownNat n
          , Peano (n + 1) ~ 'S (Peano n)
          ) => HVector (B.Vec n a) where
@@ -314,6 +316,7 @@
 
 instance ( U.Unbox n a
          , HomArity (Peano n) a
+         , Arity (HomList (Peano n) a)
          , KnownNat n
          , Peano (n + 1) ~ 'S (Peano n)
          ) => HVector (U.Vec n a) where
@@ -325,6 +328,7 @@
 
 instance ( S.Storable a
          , HomArity (Peano n) a
+         , Arity (HomList (Peano n) a)
          , KnownNat n
          , Peano (n + 1) ~ 'S (Peano n)
          ) => HVector (S.Vec n a) where
@@ -336,6 +340,7 @@
 
 instance ( P.Prim a
          , HomArity (Peano n) a
+         , Arity (HomList (Peano n) a)
          , KnownNat n
          , Peano (n + 1) ~ 'S (Peano n)
          ) => HVector (P.Vec n a) where
@@ -370,7 +375,7 @@
 type ContVec xs = ContVecF xs Identity
 
 -- | CPS-encoded partially heterogeneous vector.
-newtype ContVecF (xs :: [α]) (f :: α -> *) =
+newtype ContVecF (xs :: [α]) (f :: α -> Type) =
   ContVecF { runContVecF :: forall r. TFun f xs r -> r }
 
 instance Arity xs => HVectorF (ContVecF xs) where
@@ -544,11 +549,11 @@
 ----------------------------------------------------------------
 
 -- | Indexing of vectors
-class ArityPeano n => Index (n :: PeanoNum) (xs :: [*]) where
+class ArityPeano n => Index (n :: PeanoNum) (xs :: [Type]) where
   -- | Type at position n
-  type ValueAt n xs :: *
+  type ValueAt n xs :: Type
   -- | List of types with n'th element replaced by /a/.
-  type NewElems n xs a :: [*]
+  type NewElems n xs a :: [Type]
   -- | Getter function for vectors
   getF :: proxy n -> Fun xs (ValueAt n xs)
   -- | Putter function. It applies value @x@ to @n@th parameter of
@@ -943,8 +948,8 @@
 -- Generics
 ----------------------------------------------------------------
 
-class GHVector (v :: * -> *) where
-  type GElems v :: [*]
+class GHVector (v :: Type -> Type) where
+  type GElems v :: [Type]
   gconstruct :: Fun (GElems v) (v p)
   ginspect   :: v p -> Fun (GElems v) r -> r
 
diff --git a/Data/Vector/HFixed/Cont.hs b/Data/Vector/HFixed/Cont.hs
--- a/Data/Vector/HFixed/Cont.hs
+++ b/Data/Vector/HFixed/Cont.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP                   #-}
 {-# LANGUAGE ConstraintKinds       #-}
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleContexts      #-}
@@ -76,9 +77,12 @@
 import Data.Monoid           (Monoid(..),(<>))
 import Data.Functor.Compose  (Compose(..))
 import Data.Functor.Identity (Identity(..))
+import Data.Kind             (Type)
 import qualified Data.Vector.Fixed.Cont as F
 import Prelude               (Functor(..),id,(.),($))
-
+#if MIN_VERSION_base(4,17,0)
+import Prelude (type(~))
+#endif
 import Data.Vector.HFixed.Class
 
 
@@ -231,7 +235,7 @@
 ----------------------------------------------------------------
 
 -- | List like heterogeneous vector.
-data VecList :: [*] -> * where
+data VecList :: [Type] -> Type where
   Nil  :: VecList '[]
   Cons :: x -> VecList xs -> VecList (x : xs)
 
@@ -252,7 +256,7 @@
 
 
 -- | List-like vector
-data VecListF (xs :: [α]) (f :: α -> *) where
+data VecListF (xs :: [α]) (f :: α -> Type) where
   NilF  :: VecListF '[] f
   ConsF :: f x -> VecListF xs f -> VecListF (x : xs) f
 
diff --git a/Data/Vector/HFixed/HVec.hs b/Data/Vector/HFixed/HVec.hs
--- a/Data/Vector/HFixed/HVec.hs
+++ b/Data/Vector/HFixed/HVec.hs
@@ -19,9 +19,12 @@
 import Data.Functor.Identity   (Identity(..))
 import Data.Functor.Classes
 import Control.DeepSeq         (NFData(..))
+#if !MIN_VERSION_base(4,13,0)
 import Data.Semigroup          (Semigroup(..))
+#endif
 import Data.Monoid             (All(..))
 import Data.List               (intersperse,intercalate)
+import Data.Kind               (Type)
 import Data.Primitive.SmallArray ( SmallArray, SmallMutableArray, newSmallArray
                                  , writeSmallArray, indexSmallArray
                                  , unsafeFreezeSmallArray)
@@ -38,7 +41,7 @@
 ----------------------------------------------------------------
 
 -- | Heterogeneous vector parametrized by common type constructor.
-newtype HVecF (xs :: [*]) (f :: * -> *) = HVecF (SmallArray Any)
+newtype HVecF (xs :: [Type]) (f :: Type -> Type) = HVecF (SmallArray Any)
 
 instance Arity xs => HVectorF (HVecF xs) where
   type ElemsF (HVecF xs) = xs
@@ -56,8 +59,8 @@
     len = arity (Proxy @xs)
   {-# INLINE constructF #-}
 
-data T_insp (xs :: [*]) = T_insp Int (SmallArray Any)
-data T_con  (xs :: [*]) = T_con  Int (Box Any)
+data T_insp (xs :: [Type]) = T_insp Int (SmallArray Any)
+data T_con  (xs :: [Type]) = T_con  Int (Box Any)
 
 -- Helper data type for creating of array
 newtype Box a = Box (forall s. SmallMutableArray s a -> ST s ())
@@ -93,7 +96,7 @@
 ----------------------------------------------------------------
 
 -- | Generic heterogeneous vector
-newtype HVec (xs :: [*]) = HVec (HVecF xs Identity)
+newtype HVec (xs :: [Type]) = HVec (HVecF xs Identity)
 
 instance Arity xs => HVector (HVec xs) where
   type Elems (HVec xs) = xs
@@ -116,17 +119,13 @@
   compare = H.compare
   {-# INLINE compare #-}
 
-instance (ArityC Monoid xs
+instance ( ArityC Monoid xs
 -- NOTE: Sadly we cannot infer `ArityC Semigroup' xs from `ArityC Monoid xs'
 --       Thus we have to specify both
-#if MIN_VERSION_base(4,11,0)
          , ArityC Semigroup xs
-#endif
          ) => Monoid (HVec xs) where
   mempty  = H.replicate (Proxy @Monoid) mempty
-  mappend = H.zipWith   (Proxy @Monoid) mappend
   {-# INLINE mempty  #-}
-  {-# INLINE mappend #-}
 
 instance (ArityC Semigroup xs) => Semigroup (HVec xs) where
   (<>) = H.zipWith   (Proxy @Semigroup) (<>)
diff --git a/fixed-vector-hetero.cabal b/fixed-vector-hetero.cabal
--- a/fixed-vector-hetero.cabal
+++ b/fixed-vector-hetero.cabal
@@ -1,5 +1,5 @@
 Name:           fixed-vector-hetero
-Version:        0.6.1.1
+Version:        0.6.2.0
 Synopsis:       Library for working with product types generically
 Description:
   Library allow to work with arbitrary product types in generic
@@ -18,14 +18,16 @@
   ChangeLog.md
 
 tested-with:
-    GHC ==8.0.2
-     || ==8.2.2
-     || ==8.4.4
+    GHC ==8.4.4
      || ==8.6.5
      || ==8.8.4
      || ==8.10.7
      || ==9.0.1
-     || ==9.2.1
+     || ==9.2.8
+     || ==9.4.8
+     || ==9.6.6
+     || ==9.8.2
+     || ==9.10.1
 
 
 source-repository head
@@ -37,9 +39,9 @@
   -- tuples
   Ghc-options:          -Wall -freduction-depth=50
   default-language: Haskell2010
-  Build-Depends: base          >=4.9 && <5
+  Build-Depends: base          >=4.11 && <5
                , deepseq
-               , fixed-vector  >= 1.0.0.0
+               , fixed-vector  >= 1.0.0.0 && <1.3
                , primitive     >= 0.6.2
   Exposed-modules:      
     Data.Vector.HFixed
@@ -55,16 +57,13 @@
   -- GHC 9.0 panic while running doctests
   if impl(ghc >= 9.0) && impl(ghc < 9.1)
     buildable: False
-  -- GHC 9.2 too
-  if impl(ghc >= 9.2) && impl(ghc < 9.3)
-    buildable: False
   type:             exitcode-stdio-1.0
   main-is:          doctests.hs
   hs-source-dirs:   test
   default-language: Haskell2010
   build-depends:
         base                >=4.9  && <5
-      , doctest             >=0.15 && <0.20
+      , doctest             >=0.15 && <0.24
       , fixed-vector        >=1.0
       , fixed-vector-hetero -any
 
