diff --git a/QIO.cabal b/QIO.cabal
--- a/QIO.cabal
+++ b/QIO.cabal
@@ -1,5 +1,5 @@
 Name:		QIO
-Version:	1.1
+Version:	1.2
 Cabal-Version:	>= 1.2
 License:	BSD3
 License-File:	LICENSE
diff --git a/QIO/VecEq.hs b/QIO/VecEq.hs
--- a/QIO/VecEq.hs
+++ b/QIO/VecEq.hs
@@ -16,7 +16,7 @@
     -- | Two Vectors can be combined
     (<+>) :: (Eq a, Num x) => v x a -> v x a -> v x a
     -- | A Vector can be multiplied by a scalar
-    (<*>) :: (Num x) => x -> v x a -> v x a
+    (<*>) :: (Num x, Eq x) => x -> v x a -> v x a
     -- | The amplitude of a given element can be accessed
     (<@>) :: (Eq a, Num x) => a -> v x a -> x
     -- | The vector can be created from a list of pairs
@@ -48,7 +48,7 @@
 -- | Scalar multiplcation is achieved by mapping the multiplication over
 -- each pair in the vector. Multiplication by 0 is a special case, and will
 -- remove all the basis states from the vector.
-vEqTimes :: (Num x) => x -> VecEqL x a -> VecEqL x a
+vEqTimes :: (Num x, Eq x) => x -> VecEqL x a -> VecEqL x a
 l `vEqTimes` (VecEqL bs) | l==0 = VecEqL []
                          | otherwise = VecEqL (map (\ (b,k) -> (b,l*k)) bs)
           
@@ -76,7 +76,7 @@
     eqBind   :: (Eq a, Eq b) => m a -> (a -> m b) -> m b 
 
 -- | Any VecEq over \v\, along with a Numeric tpye \x\ is an EqMonad.
-instance (VecEq v, Num x) => EqMonad (v x) where
+instance (VecEq v, Num x, Eq x) => EqMonad (v x) where
     eqReturn a = fromList [(a,1)]
     eqBind va f = case toList va of
                    ([]) -> vzero
