diff --git a/Data/Vector/HFixed.hs b/Data/Vector/HFixed.hs
--- a/Data/Vector/HFixed.hs
+++ b/Data/Vector/HFixed.hs
@@ -601,7 +601,7 @@
 --
 -- >>> replicateNatF Nothing :: HVecF '[Char,Int] Maybe
 -- [Nothing,Nothing]
-replicateNatF :: (HVectorF v, Arity (ElemsF v))
+replicateNatF :: (HVectorF v)
            => (forall a. f a) -> v f
 {-# INLINE replicateNatF #-}
 replicateNatF x = C.vectorF $ C.replicateNatF x
@@ -665,20 +665,18 @@
 
 -- | Convert heterogeneous vector to homogeneous
 monomorphize :: ( HVector v
-                , Peano n ~ Len (Elems v)
                 , ArityC c (Elems v))
              => Proxy c -> (forall a. c a => a -> x)
-             -> v -> F.ContVec n x
+             -> v -> F.ContVec (Len (Elems v)) x
 {-# INLINE monomorphize #-}
 monomorphize c f = C.monomorphizeF c (f . runIdentity) . C.cvec
 
 -- | Convert heterogeneous vector to homogeneous
 monomorphizeF :: ( HVectorF v
-                 , Peano n ~ Len (ElemsF v)
                  , ArityC c (ElemsF v)
                  )
              => Proxy c -> (forall a. c a => f a -> x)
-             -> v f -> F.ContVec n x
+             -> v f -> F.ContVec (Len (ElemsF v)) x
 {-# INLINE monomorphizeF #-}
 monomorphizeF c f = C.monomorphizeF c f . C.cvecF
 
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
@@ -289,24 +289,22 @@
   {-# INLINE toHomogeneous   #-}
 
 -- | Default implementation of 'inspect' for homogeneous vector.
-homInspect :: (F.Vector v a, HomArity (Peano (F.Dim v)) a)
-           => v a -> Fun (HomList (Peano (F.Dim v)) a) r -> r
+homInspect :: (F.Vector v a, HomArity (F.Dim v) a)
+           => v a -> Fun (HomList (F.Dim v) a) r -> r
 homInspect v f = F.inspect v (toHomogeneous f)
 {-# INLINE homInspect #-}
 
 -- | Default implementation of 'construct' for homogeneous vector.
 homConstruct :: forall v a.
-                (F.Vector v a, HomArity (Peano (F.Dim v)) a)
-             => Fun (HomList (Peano (F.Dim v)) a) (v a)
-homConstruct = toHeterogeneous (F.construct :: F.Fun (Peano (F.Dim v)) a (v a))
+                (F.Vector v a, HomArity (F.Dim v) a)
+             => Fun (HomList (F.Dim v) a) (v a)
+homConstruct = toHeterogeneous (F.construct :: F.Fun (F.Dim v) a (v a))
 {-# INLINE homConstruct #-}
 
 
 
 instance ( HomArity (Peano n) a
          , Arity (HomList (Peano n) a)
-         , KnownNat n
-         , Peano (n + 1) ~ 'S (Peano n)
          ) => HVector (B.Vec n a) where
   type Elems (B.Vec n a) = HomList (Peano n) a
   inspect   = homInspect
@@ -317,8 +315,6 @@
 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
   type Elems (U.Vec n a) = HomList (Peano n) a
   inspect   = homInspect
@@ -329,8 +325,6 @@
 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
   type Elems (S.Vec n a) = HomList (Peano n) a
   inspect   = homInspect
@@ -341,8 +335,6 @@
 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
   type Elems (P.Vec n a) = HomList (Peano n) a
   inspect   = homInspect
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
@@ -362,21 +362,17 @@
           (Const b0)
 
 -- | Convert heterogeneous vector to homogeneous
-monomorphizeF :: forall c xs a f n. ( ArityC c xs
-                                    , F.Peano n ~ Len xs
-                                    )
+monomorphizeF :: forall c xs a f. ( ArityC c xs )
               => Proxy c -> (forall x. c x => f x -> a)
-              -> ContVecF xs f -> F.ContVec n a
+              -> ContVecF xs f -> F.ContVec (Len xs) a
 {-# INLINE monomorphizeF #-}
 monomorphizeF cls f v
   = inspectF v
   $ accumC cls (\(T_mono cont) a -> T_mono (cont . F.consPeano (f a)))
-               (\(T_mono cont)   -> fini (cont (F.CVecPeano F.unFun)))
+               (\(T_mono cont)   -> cont (F.ContVec F.unFun))
                (T_mono id :: T_mono a xs xs)
-  where
-    fini (F.CVecPeano cont) = F.ContVec cont
 
-data T_mono a all xs = T_mono (F.CVecPeano (Len xs) a -> F.CVecPeano (Len all) a)
+data T_mono a all xs = T_mono (F.ContVec (Len xs) a -> F.ContVec (Len all) a)
 
 
 -- | Unfold vector.
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.2.0
+Version:        0.7.0.0
 Synopsis:       Library for working with product types generically
 Description:
   Library allow to work with arbitrary product types in generic
@@ -18,16 +18,14 @@
   ChangeLog.md
 
 tested-with:
-    GHC ==8.4.4
-     || ==8.6.5
-     || ==8.8.4
-     || ==8.10.7
+    GHC ==8.10.7
      || ==9.0.1
      || ==9.2.8
      || ==9.4.8
      || ==9.6.6
      || ==9.8.2
-     || ==9.10.1
+     || ==9.10.2
+     || ==9.12.2
 
 
 source-repository head
@@ -39,9 +37,9 @@
   -- tuples
   Ghc-options:          -Wall -freduction-depth=50
   default-language: Haskell2010
-  Build-Depends: base          >=4.11 && <5
+  Build-Depends: base          >=4.14 && <5
                , deepseq
-               , fixed-vector  >= 1.0.0.0 && <1.3
+               , fixed-vector  >= 2.0.0.0 && <3
                , primitive     >= 0.6.2
   Exposed-modules:      
     Data.Vector.HFixed
