diff --git a/Data/Octree/Internal.hs b/Data/Octree/Internal.hs
--- a/Data/Octree/Internal.hs
+++ b/Data/Octree/Internal.hs
@@ -2,7 +2,7 @@
 module Data.Octree.Internal(Vector3(..), dist,
                             Octree(..), lookup, nearest, withinRange, fromList, toList, insert,
                             -- internal
-                            ODir,
+                            ODir(..),
                             octreeStep, octantDistance, splitBy', joinStep, splitStep, allOctants, octantDistance',
                             cmp,
                             pickClosest
@@ -20,11 +20,11 @@
 import Test.QuickCheck.Arbitrary
 
 -- | norm of a vector
-norm ::  Vector v => v -> Scalar
-norm a = a `vdot` a
+norm ::  Vector3 -> Double
+norm a = sqrt (a `vdot` a)
 
 -- | distance between two vectors
-dist ::  Vector v => v -> v -> Scalar
+dist ::  Vector3 -> Vector3 -> Double
 dist u v = norm (u - v) 
 
 data Octree a = Node { split :: Vector3,
@@ -153,11 +153,6 @@
   where i                                        = cmp coord splitPoint
         (swd, sed, nwd, ned, swu, seu, nwu, neu) = splitBy splitPoint aList
 
-{-
--- | Internal Sums a list of vectors
-sumVector3s [(coord, _)]       = coord
-sumVector3s ((coord, _):aList) = coord + sumVector3s aList
--}
 -- | Computes a center of mass for a given list of vectors - used to find a splitPoint.
 massCenter ::  Fractional a => [(a, b)] -> a
 massCenter aList = sum (map fst aList) / count
@@ -279,7 +274,7 @@
         selectFrom' best []                                          = Just best
 
 -- | Internal method that picks from a given list a point closest to argument, 
-pickClosest ::  Vector v => v -> [(v, t)] -> Maybe (v, t)
+pickClosest ::  Vector3 -> [(Vector3, t)] -> Maybe (Vector3, t)
 pickClosest pt []     = Nothing
 pickClosest pt (a:as) = Just $ foldr (pickCloser pt) a as
 pickCloser pt va@(a, _a) vb@(b, _b) = if dist pt a <= dist pt b
diff --git a/Octree.cabal b/Octree.cabal
--- a/Octree.cabal
+++ b/Octree.cabal
@@ -1,5 +1,5 @@
 name:                Octree
-version:             0.2.1
+version:             0.2.2
 stability:           beta
 homepage:            https://github.com/mgajda/octree
 package-url:         http://hackage.haskell.org/package/octree
@@ -17,8 +17,7 @@
 
 build-type:          Simple
 cabal-version:       >=1.8
-tested-with:         GHC==7.0.4
--- Also tested with GHC-7.4rc2
+tested-with:         GHC==7.0.4, GHC==7.4.1
 
 source-repository head
   type:     git
diff --git a/tests/test_Octree.hs b/tests/test_Octree.hs
--- a/tests/test_Octree.hs
+++ b/tests/test_Octree.hs
@@ -44,13 +44,18 @@
   where triangleInequality = (octantDistance' aptA (cmp ptB origin)) <= (dist aptA ptB)
         aptA               = abs ptA
 
-prop_octantDistanceNoGreaterThanInterpointDistance ptA ptB vp = triangleInequality || sameOctant
+prop_octantDistanceNoGreaterThanInterpointDistance ptA ptB vp = triangleInequality
   where triangleInequality = (octantDistance (ptA - vp) (cmp ptB vp)) <= (dist ptA ptB)
         sameOctant         = (cmp ptA vp) == (cmp ptB vp)
 
-prop_octantDistanceNoGreaterThanInterpointDistanceZero ptA ptB = triangleInequality || sameOctant
+prop_octantDistanceNoGreaterThanInterpointDistanceZero ptA ptB = triangleInequality
   where triangleInequality = (octantDistance ptA (cmp ptB origin)) <= (dist ptA ptB)
         sameOctant         = (cmp ptA origin) == (cmp ptB origin)
+
+prop_octantDistanceNoGreaterThanInterpointDistanceZero0 ptA ptB = triangleInequality
+  where triangleInequality = (octantDistance aptA (cmp ptB origin)) <= (dist aptA ptB)
+        sameOctant         = (cmp aptA origin) == (cmp ptB origin)
+        aptA               = abs ptA
 
 prop_octantDistanceNoGreaterThanCentroidDistance pt vp = all testFun allOctants
   where testFun odir = (octantDistance (pt - vp) odir) <= dist pt vp
