diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Changelog for [`clash-prelude` package](http://hackage.haskell.org/package/clash-prelude)
 
+## 0.10.9 *June 9th 2016*
+* Fixes bugs:
+  * `Eq` instance of `Vec` sometimes not synthesisable
+
 ## 0.10.8 *June 7th 2016*
 * New features:
   * Instances of `Data` for numeric types.
diff --git a/clash-prelude.cabal b/clash-prelude.cabal
--- a/clash-prelude.cabal
+++ b/clash-prelude.cabal
@@ -1,5 +1,5 @@
 Name:                 clash-prelude
-Version:              0.10.8
+Version:              0.10.9
 Synopsis:             CAES Language for Synchronous Hardware - Prelude library
 Description:
   CλaSH (pronounced ‘clash’) is a functional hardware description language that
@@ -152,18 +152,18 @@
                       TypeOperators
                       UndecidableInstances
 
-  Build-depends:      array                     >= 0.5.1.0,
+  Build-depends:      array                     >= 0.5.1.0 && < 0.6,
                       base                      >= 4.8.0.0 && < 5,
-                      data-default              >= 0.5.3,
-                      integer-gmp               >= 0.5.1.0,
-                      ghc-prim                  >= 0.3.1.0,
-                      ghc-typelits-extra        >= 0.1,
-                      ghc-typelits-natnormalise >= 0.4.1,
-                      lens                      >= 4.9,
-                      QuickCheck                >= 2.7 && <2.9,
-                      reflection                >= 2,
-                      singletons                >= 1.0 && <3.0,
-                      template-haskell          >= 2.9.0.0
+                      data-default              >= 0.5.3   && < 0.7,
+                      integer-gmp               >= 0.5.1.0 && < 1.1,
+                      ghc-prim                  >= 0.3.1.0 && < 0.6,
+                      ghc-typelits-extra        >= 0.1     && < 0.2,
+                      ghc-typelits-natnormalise >= 0.4.1   && < 0.5,
+                      lens                      >= 4.9     && < 4.15,
+                      QuickCheck                >= 2.7     && < 2.9,
+                      reflection                >= 2       && < 2.2,
+                      singletons                >= 1.0     && < 3.0,
+                      template-haskell          >= 2.9.0.0 && < 2.12
 
   if impl(ghc<7.11)
     -- Newer GHCs have -XDeriveLift
diff --git a/src/CLaSH/Sized/Vector.hs b/src/CLaSH/Sized/Vector.hs
--- a/src/CLaSH/Sized/Vector.hs
+++ b/src/CLaSH/Sized/Vector.hs
@@ -218,9 +218,10 @@
       punc (x `Cons` Nil) = show x
       punc (x `Cons` xs)  = show x P.++ "," P.++ punc xs
 
-instance Eq a => Eq (Vec n a) where
-  (==) Nil _  = True
-  (==) v1  v2 = fold (&&) (unsafeCoerce (zipWith (==) v1 v2))
+instance (KnownNat n, Eq a) => Eq (Vec n a) where
+  (==) v1 v2
+    | length v1 == 0 = True
+    | otherwise      = fold (&&) (unsafeCoerce (zipWith (==) v1 v2))
   -- FIXME: the `unsafeCoerce` is a hack because the CLaSH compiler cannot deal
   -- with the existential length of the 'xs' in "Cons x xs".
   --
@@ -231,7 +232,7 @@
   --
   -- But the CLaSH compiler currently fails on that definition.
 
-instance Ord a => Ord (Vec n a) where
+instance (KnownNat n, Ord a) => Ord (Vec n a) where
   compare x y = foldr f EQ $ zipWith compare x y
     where f EQ   keepGoing = keepGoing
           f done _         = done
@@ -1578,10 +1579,7 @@
 --                             else (b,a)
 -- @
 --
--- Will not terminate because 'zipWith' is too strict in its second argument:
---
--- >>> sortV (4 :> 1 :> 2 :> 3 :> Nil)
--- <*** Exception: <<loop>>
+-- Will not terminate because 'zipWith' is too strict in its second argument.
 --
 -- In this case, adding 'lazyV' on 'zipWith's second argument:
 --
diff --git a/src/CLaSH/Tutorial.hs b/src/CLaSH/Tutorial.hs
--- a/src/CLaSH/Tutorial.hs
+++ b/src/CLaSH/Tutorial.hs
@@ -1672,10 +1672,7 @@
                                 else (b,a)
     @
 
-    Will not terminate because 'zipWith' is too strict in its second argument:
-
-    >>> sortV (4 :> 1 :> 2 :> 3 :> Nil)
-    <*** Exception: <<loop>>
+    Will not terminate because 'zipWith' is too strict in its second argument.
 
     In this case, adding 'lazyV' on 'zipWith's second argument:
 
