diff --git a/Data/Hardware/Internal.hs b/Data/Hardware/Internal.hs
--- a/Data/Hardware/Internal.hs
+++ b/Data/Hardware/Internal.hs
@@ -222,6 +222,7 @@
 instance Value Length => Fractional Length
   where
     fromRational r = Length $ round (r / value (Length 1))
+    (/) = error "(/) not defined for Length"
 
 
 
@@ -454,7 +455,7 @@
 
 
 
-nearestPoints :: (Num i, Ord a) => i -> (i -> a) -> a -> ((i,a),(i,a))
+nearestPoints :: (Num i, Eq i, Ord a) => i -> (i -> a) -> a -> ((i,a),(i,a))
 nearestPoints n axis a
     | a >= a2   = ((i2,a2), (i1,a1))
     | otherwise = nearest i2 a2
@@ -511,7 +512,7 @@
 
 
 findPoints
-    :: (Num i, Ord x, Ord y)
+    :: (Num i, Eq i, Ord x, Ord y)
     => Table2D i x y q -> x -> y -> ((x,y), (x,y), (q,q,q,q))
 
 findPoints (Table2D xLen yLen xAxis yAxis vals) x y =
@@ -532,6 +533,7 @@
 
 bilinInterpolate
     :: ( Num i
+       , Eq i
        , Ord x
        , Ord y
        , Fractional x
diff --git a/Data/Logical/Knot.hs b/Data/Logical/Knot.hs
--- a/Data/Logical/Knot.hs
+++ b/Data/Logical/Knot.hs
@@ -14,6 +14,7 @@
 
 
 import Data.Map (Map,fromList,fromListWith,(!),findWithDefault)
+import Control.Applicative
 import Control.Monad.Reader
 import Control.Monad.Writer
 
@@ -24,11 +25,11 @@
 
 newtype Knot i x a =
           Knot (ReaderT (Solution i x) (Writer [Constraint i x]) a)
-        deriving (Monad, MonadFix)
+        deriving (Functor, Applicative, Monad, MonadFix)
 
 newtype KnotT i x m a =
           KnotT (ReaderT (Solution i x) (WriterT [Constraint i x] m) a)
-        deriving (Monad, MonadFix)
+        deriving (Functor, Applicative, Monad, MonadFix)
 
 
 
diff --git a/Data/Logical/Let.hs b/Data/Logical/Let.hs
--- a/Data/Logical/Let.hs
+++ b/Data/Logical/Let.hs
@@ -13,6 +13,7 @@
 
 
 import Data.Map (Map)
+import Control.Applicative
 import Control.Monad.Reader
 import Control.Monad.State
 import Control.Monad.Writer
@@ -24,10 +25,10 @@
 type VarId = Integer
 
 newtype Let x a = Let (StateT VarId (Knot VarId x) a)
-        deriving (Monad, MonadFix, MonadKnot VarId x)
+        deriving (Functor, Applicative, Monad, MonadFix, MonadKnot VarId x)
 
 newtype LetT x m a = LetT (StateT VarId (KnotT VarId x m) a)
-        deriving (Monad, MonadFix, MonadKnot VarId x)
+        deriving (Functor, Applicative, Monad, MonadFix, MonadKnot VarId x)
 
 data Var x = Var VarId x
 
diff --git a/Lava/Model.hs b/Lava/Model.hs
--- a/Lava/Model.hs
+++ b/Lava/Model.hs
@@ -4,6 +4,7 @@
 
 
 
+import Control.Applicative
 import Control.Arrow ((***))
 import Control.Monad.Writer
 import Control.Monad.State
@@ -146,7 +147,7 @@
 
 newtype Lava lib a = Lava
           { unLava :: WriterT [Declaration lib] (State (PrimInpId,CellId)) a }
-        deriving (Monad, MonadFix)
+        deriving (Functor, Applicative, Monad, MonadFix)
 
 
 
diff --git a/Layout/Internal.hs b/Layout/Internal.hs
--- a/Layout/Internal.hs
+++ b/Layout/Internal.hs
@@ -25,6 +25,7 @@
 
 
 
+import Control.Applicative
 import Control.Monad.Reader
 import Control.Monad.Writer
 
@@ -36,11 +37,11 @@
 
 newtype Layout s b a = Layout
           (ReaderT Placement (Writer [Floorplan s b]) a)
-        deriving (Monad, MonadFix)
+        deriving (Functor, Applicative, Monad, MonadFix)
 
 newtype LayoutT s b m a = LayoutT
           (ReaderT Placement (WriterT [Floorplan s b] m) a)
-        deriving (Monad, MonadFix)
+        deriving (Functor, Applicative, Monad, MonadFix)
 
 
 
diff --git a/Wired.cabal b/Wired.cabal
--- a/Wired.cabal
+++ b/Wired.cabal
@@ -1,6 +1,6 @@
 name:      Wired
-version:   0.2.2
-homepage:  http://www.cs.chalmers.se/~emax/wired/
+version:   0.3
+homepage:  http://www.cse.chalmers.se/~emax/wired/
 synopsis:  Wire-aware hardware description
 
 description:
@@ -33,7 +33,7 @@
   cell library compilation, and sequential circuits are not yet fully supported.
   Also, there is virtually no documentation. The best place to look for guidance
   is in the @Examples@ directory. The following thesis
-  <http://www.cs.chalmers.se/~emax/documents/PhD_thesis.pdf> gives more
+  <http://www.cse.chalmers.se/~emax/documents/PhD_thesis.pdf> gives more
   information about the background and some explanation of programming
   techniques used in Wired. It should also be said that the library is still
   quite unstable and has not yet been tested in any larger scale.
@@ -59,7 +59,7 @@
 copyright:      (c) 2008. Emil Axelsson <emax@chalmers.se>
 author:         Emil Axelsson <emax@chalmers.se>
 maintainer:     Emil Axelsson <emax@chalmers.se>
-cabal-version:  >= 1.4
+cabal-version:  >= 1.6
 build-type:     Simple
 
 data-files:
@@ -69,6 +69,10 @@
   Examples/Sklansky.hs
   Examples/Mult.hs
 
+source-repository head
+  type:      darcs
+  location:  http://projects.haskell.org/Wired/
+
 library
   exposed-modules:
     Data.Logical.Knot
@@ -102,7 +106,7 @@
   c-sources:
     Libs/Nangate45/timing.c
 
-  build-Depends: base >= 3 && < 4, chalmers-lava2000 >= 1.1 && < 2, containers >= 0.2 && < 1, mtl >= 1.1 && < 2, QuickCheck >= 1 && < 2
+  build-Depends: base < 10, chalmers-lava2000 >= 1.1 && < 2, containers, mtl, QuickCheck
 
   extensions:
     FlexibleContexts
