diff --git a/nettle-frp.cabal b/nettle-frp.cabal
--- a/nettle-frp.cabal
+++ b/nettle-frp.cabal
@@ -1,5 +1,5 @@
 Name:           nettle-frp
-Version:        0.1
+Version:        0.1.1
 Synopsis:       FRP for controlling networks of OpenFlow switches.
 Cabal-Version:  >=1.2
 Build-Type:     Simple
@@ -57,7 +57,7 @@
 
   build-depends:
     base >= 4 && < 5
-    , nettle-openflow
+    , nettle-openflow < 0.2
     , mtl
     , bytestring
     , containers
@@ -65,5 +65,5 @@
     , binary
     , time
     , network
-    , haskell98
     , network-data
+    , random
diff --git a/src/Nettle/FRPControl/AFRP.hs b/src/Nettle/FRPControl/AFRP.hs
--- a/src/Nettle/FRPControl/AFRP.hs
+++ b/src/Nettle/FRPControl/AFRP.hs
@@ -209,8 +209,8 @@
     , initDelay         -- :: initDelay :: [a] -> SF a a 
 ) where
 
-import Monad (unless)
-import Random (RandomGen(..), Random(..), randoms, randomRs)
+import Control.Monad (unless)
+import System.Random (RandomGen(..), Random(..), randoms, randomRs)
 
 import Control.Category (Category)
 import qualified Control.Category as Cat
diff --git a/src/Nettle/FRPControl/AFRPVectorSpace.hs b/src/Nettle/FRPControl/AFRPVectorSpace.hs
--- a/src/Nettle/FRPControl/AFRPVectorSpace.hs
+++ b/src/Nettle/FRPControl/AFRPVectorSpace.hs
@@ -29,7 +29,7 @@
 -- be Fractional (roughly a Field) rather than Floating.
 
 -- Minimal instance: zeroVector, (*^), (^+^), dot
-class Floating a => VectorSpace v a | v -> a where
+class (Eq a, Floating a) => VectorSpace v a | v -> a where
     zeroVector   :: v
     (*^)         :: a -> v -> v
     (^/)         :: v -> a -> v
@@ -92,7 +92,7 @@
 -- Vector space instances for small tuples of Floating
 ------------------------------------------------------------------------------
 
-instance Floating a => VectorSpace (a,a) a where
+instance (Eq a,Floating a) => VectorSpace (a,a) a where
     zeroVector = (0,0)
 
     a *^ (x,y) = (a * x, a * y)
@@ -108,7 +108,7 @@
     (x1,y1) `dot` (x2,y2) = x1 * x2 + y1 * y2
 
 
-instance Floating a => VectorSpace (a,a,a) a where
+instance (Eq a, Floating a) => VectorSpace (a,a,a) a where
     zeroVector = (0,0,0)
 
     a *^ (x,y,z) = (a * x, a * y, a * z)
@@ -124,7 +124,7 @@
     (x1,y1,z1) `dot` (x2,y2,z2) = x1 * x2 + y1 * y2 + z1 * z2
 
 
-instance Floating a => VectorSpace (a,a,a,a) a where
+instance (Eq a, Floating a) => VectorSpace (a,a,a,a) a where
     zeroVector = (0,0,0,0)
 
     a *^ (x,y,z,u) = (a * x, a * y, a * z, a * u)
@@ -140,7 +140,7 @@
     (x1,y1,z1,u1) `dot` (x2,y2,z2,u2) = x1 * x2 + y1 * y2 + z1 * z2 + u1 * u2
 
 
-instance Floating a => VectorSpace (a,a,a,a,a) a where
+instance (Eq a, Floating a) => VectorSpace (a,a,a,a,a) a where
     zeroVector = (0,0,0,0,0)
 
     a *^ (x,y,z,u,v) = (a * x, a * y, a * z, a * u, a * v)
