diff --git a/Control/Monad/Trans/OuterMaybe.hs b/Control/Monad/Trans/OuterMaybe.hs
--- a/Control/Monad/Trans/OuterMaybe.hs
+++ b/Control/Monad/Trans/OuterMaybe.hs
@@ -3,7 +3,7 @@
 -- Copyright   : (c) Justus Sagemüller 2016
 -- License     : GPL v3
 -- 
--- Maintainer  : (@) sagemueller $ geo.uni-koeln.de
+-- Maintainer  : (@) jsag $ hvl.no
 -- Stability   : experimental
 -- Portability : portable
 -- 
diff --git a/Data/Embedding.hs b/Data/Embedding.hs
--- a/Data/Embedding.hs
+++ b/Data/Embedding.hs
@@ -3,7 +3,7 @@
 -- Copyright   : (c) Justus Sagemüller 2015
 -- License     : GPL v3
 -- 
--- Maintainer  : (@) sagemueller $ geo.uni-koeln.de
+-- Maintainer  : (@) jsag $ hvl.no
 -- Stability   : experimental
 -- Portability : portable
 -- 
diff --git a/Data/Function/Affine.hs b/Data/Function/Affine.hs
--- a/Data/Function/Affine.hs
+++ b/Data/Function/Affine.hs
@@ -3,7 +3,7 @@
 -- Copyright   : (c) Justus Sagemüller 2015
 -- License     : GPL v3
 -- 
--- Maintainer  : (@) sagemueller $ geo.uni-koeln.de
+-- Maintainer  : (@) jsag $ hvl.no
 -- Stability   : experimental
 -- Portability : portable
 -- 
diff --git a/Data/Function/Differentiable.hs b/Data/Function/Differentiable.hs
--- a/Data/Function/Differentiable.hs
+++ b/Data/Function/Differentiable.hs
@@ -3,7 +3,7 @@
 -- Copyright   : (c) Justus Sagemüller 2015
 -- License     : GPL v3
 -- 
--- Maintainer  : (@) sagemueller $ geo.uni-koeln.de
+-- Maintainer  : (@) jsag $ hvl.no
 -- Stability   : experimental
 -- Portability : portable
 -- 
diff --git a/Data/Manifold.hs b/Data/Manifold.hs
--- a/Data/Manifold.hs
+++ b/Data/Manifold.hs
@@ -3,7 +3,7 @@
 -- Copyright   : (c) Justus Sagemüller 2013
 -- License     : GPL v3
 -- 
--- Maintainer  : (@) sagemueller $ geo.uni-koeln.de
+-- Maintainer  : (@) jsag $ hvl.no
 -- Stability   : experimental
 -- Portability : portable
 -- 
diff --git a/Data/Manifold/Atlas.hs b/Data/Manifold/Atlas.hs
--- a/Data/Manifold/Atlas.hs
+++ b/Data/Manifold/Atlas.hs
@@ -3,7 +3,7 @@
 -- Copyright   : (c) Justus Sagemüller 2015
 -- License     : GPL v3
 -- 
--- Maintainer  : (@) sagemueller $ geo.uni-koeln.de
+-- Maintainer  : (@) jsag $ hvl.no
 -- Stability   : experimental
 -- Portability : portable
 -- 
diff --git a/Data/Manifold/Cone.hs b/Data/Manifold/Cone.hs
--- a/Data/Manifold/Cone.hs
+++ b/Data/Manifold/Cone.hs
@@ -3,7 +3,7 @@
 -- Copyright   : (c) Justus Sagemüller 2015
 -- License     : GPL v3
 -- 
--- Maintainer  : (@) sagemueller $ geo.uni-koeln.de
+-- Maintainer  : (@) jsag $ hvl.no
 -- Stability   : experimental
 -- Portability : portable
 -- 
diff --git a/Data/Manifold/DifferentialEquation.hs b/Data/Manifold/DifferentialEquation.hs
--- a/Data/Manifold/DifferentialEquation.hs
+++ b/Data/Manifold/DifferentialEquation.hs
@@ -3,7 +3,7 @@
 -- Copyright   : (c) Justus Sagemüller 2016
 -- License     : GPL v3
 -- 
--- Maintainer  : (@) sagemueller $ geo.uni-koeln.de
+-- Maintainer  : (@) jsag $ hvl.no
 -- Stability   : experimental
 -- Portability : portable
 -- 
diff --git a/Data/Manifold/FibreBundle.hs b/Data/Manifold/FibreBundle.hs
--- a/Data/Manifold/FibreBundle.hs
+++ b/Data/Manifold/FibreBundle.hs
@@ -3,7 +3,7 @@
 -- Copyright   : (c) Justus Sagemüller 2018
 -- License     : GPL v3
 -- 
--- Maintainer  : (@) sagemueller $ geo.uni-koeln.de
+-- Maintainer  : (@) jsag $ hvl.no
 -- Stability   : experimental
 -- Portability : portable
 -- 
diff --git a/Data/Manifold/Function/Quadratic.hs b/Data/Manifold/Function/Quadratic.hs
--- a/Data/Manifold/Function/Quadratic.hs
+++ b/Data/Manifold/Function/Quadratic.hs
@@ -3,13 +3,14 @@
 -- Copyright   : (c) Justus Sagemüller 2016
 -- License     : GPL v3
 -- 
--- Maintainer  : (@) sagemueller $ geo.uni-koeln.de
+-- Maintainer  : (@) jsag $ hvl.no
 -- Stability   : experimental
 -- Portability : portable
 -- 
 
 {-# LANGUAGE TypeFamilies             #-}
 {-# LANGUAGE FlexibleContexts         #-}
+{-# LANGUAGE UndecidableInstances     #-}
 {-# LANGUAGE LiberalTypeSynonyms      #-}
 {-# LANGUAGE GADTs                    #-}
 {-# LANGUAGE TypeOperators            #-}
diff --git a/Data/Manifold/Griddable.hs b/Data/Manifold/Griddable.hs
--- a/Data/Manifold/Griddable.hs
+++ b/Data/Manifold/Griddable.hs
@@ -3,7 +3,7 @@
 -- Copyright   : (c) Justus Sagemüller 2015
 -- License     : GPL v3
 -- 
--- Maintainer  : (@) sagemueller $ geo.uni-koeln.de
+-- Maintainer  : (@) jsag $ hvl.no
 -- Stability   : experimental
 -- Portability : portable
 -- 
diff --git a/Data/Manifold/PseudoAffine.hs b/Data/Manifold/PseudoAffine.hs
--- a/Data/Manifold/PseudoAffine.hs
+++ b/Data/Manifold/PseudoAffine.hs
@@ -3,7 +3,7 @@
 -- Copyright   : (c) Justus Sagemüller 2015
 -- License     : GPL v3
 -- 
--- Maintainer  : (@) sagemueller $ geo.uni-koeln.de
+-- Maintainer  : (@) jsag $ hvl.no
 -- Stability   : experimental
 -- Portability : portable
 -- 
diff --git a/Data/Manifold/Riemannian.hs b/Data/Manifold/Riemannian.hs
--- a/Data/Manifold/Riemannian.hs
+++ b/Data/Manifold/Riemannian.hs
@@ -3,7 +3,7 @@
 -- Copyright   : (c) Justus Sagemüller 2015
 -- License     : GPL v3
 -- 
--- Maintainer  : (@) sagemueller $ geo.uni-koeln.de
+-- Maintainer  : (@) jsag $ hvl.no
 -- Stability   : experimental
 -- Portability : portable
 -- 
diff --git a/Data/Manifold/TreeCover.hs b/Data/Manifold/TreeCover.hs
--- a/Data/Manifold/TreeCover.hs
+++ b/Data/Manifold/TreeCover.hs
@@ -3,7 +3,7 @@
 -- Copyright   : (c) Justus Sagemüller 2015
 -- License     : GPL v3
 -- 
--- Maintainer  : (@) sagemueller $ geo.uni-koeln.de
+-- Maintainer  : (@) jsag $ hvl.no
 -- Stability   : experimental
 -- Portability : portable
 -- 
diff --git a/Data/Manifold/Types.hs b/Data/Manifold/Types.hs
--- a/Data/Manifold/Types.hs
+++ b/Data/Manifold/Types.hs
@@ -3,7 +3,7 @@
 -- Copyright   : (c) Justus Sagemüller 2015
 -- License     : GPL v3
 -- 
--- Maintainer  : (@) sagemueller $ geo.uni-koeln.de
+-- Maintainer  : (@) jsag $ hvl.no
 -- Stability   : experimental
 -- Portability : portable
 -- 
@@ -182,6 +182,7 @@
   toFlatTensor = LinearFunction $ Tensor . Arr.convert . getStiefel1Tangent
   fromFlatTensor = LinearFunction $ Stiefel1Needle . Arr.convert . getTensorProduct
   addTensors (Tensor a) (Tensor b) = Tensor $ Arr.zipWith (^+^) a b
+  subtractTensors (Tensor a) (Tensor b) = Tensor $ Arr.zipWith (^-^) a b
   scaleTensor = bilinearFunction $ \μ (Tensor a) -> Tensor $ Arr.map (μ*^) a
   negateTensor = LinearFunction $ \(Tensor a) -> Tensor $ Arr.map negateV a
   tensorProduct = bilinearFunction $ \(Stiefel1Needle n) w
diff --git a/Data/Manifold/Types/Primitive.hs b/Data/Manifold/Types/Primitive.hs
--- a/Data/Manifold/Types/Primitive.hs
+++ b/Data/Manifold/Types/Primitive.hs
@@ -3,7 +3,7 @@
 -- Copyright   : (c) Justus Sagemüller 2015
 -- License     : GPL v3
 -- 
--- Maintainer  : (@) sagemueller $ geo.uni-koeln.de
+-- Maintainer  : (@) jsag $ hvl.no
 -- Stability   : experimental
 -- Portability : portable
 -- 
diff --git a/Data/Manifold/Types/Stiefel.hs b/Data/Manifold/Types/Stiefel.hs
--- a/Data/Manifold/Types/Stiefel.hs
+++ b/Data/Manifold/Types/Stiefel.hs
@@ -3,7 +3,7 @@
 -- Copyright   : (c) Justus Sagemüller 2015
 -- License     : GPL v3
 -- 
--- Maintainer  : (@) sagemueller $ geo.uni-koeln.de
+-- Maintainer  : (@) jsag $ hvl.no
 -- Stability   : experimental
 -- Portability : portable
 -- 
diff --git a/Data/Manifold/Web.hs b/Data/Manifold/Web.hs
--- a/Data/Manifold/Web.hs
+++ b/Data/Manifold/Web.hs
@@ -3,7 +3,7 @@
 -- Copyright   : (c) Justus Sagemüller 2016
 -- License     : GPL v3
 -- 
--- Maintainer  : (@) sagemueller $ geo.uni-koeln.de
+-- Maintainer  : (@) jsag $ hvl.no
 -- Stability   : experimental
 -- Portability : portable
 -- 
diff --git a/Data/Manifold/Web/Internal.hs b/Data/Manifold/Web/Internal.hs
--- a/Data/Manifold/Web/Internal.hs
+++ b/Data/Manifold/Web/Internal.hs
@@ -3,7 +3,7 @@
 -- Copyright   : (c) Justus Sagemüller 2017
 -- License     : GPL v3
 -- 
--- Maintainer  : (@) sagemueller $ geo.uni-koeln.de
+-- Maintainer  : (@) jsag $ hvl.no
 -- Stability   : experimental
 -- Portability : portable
 -- 
diff --git a/Data/SetLike/Intersection.hs b/Data/SetLike/Intersection.hs
--- a/Data/SetLike/Intersection.hs
+++ b/Data/SetLike/Intersection.hs
@@ -4,7 +4,7 @@
 -- Copyright   : (c) Justus Sagemüller 2016
 -- License     : GPL v3
 -- 
--- Maintainer  : (@) sagemueller $ geo.uni-koeln.de
+-- Maintainer  : (@) jsag $ hvl.no
 -- Stability   : experimental
 -- Portability : portable
 -- 
diff --git a/Math/Manifold/Embedding/Simple/Class.hs b/Math/Manifold/Embedding/Simple/Class.hs
--- a/Math/Manifold/Embedding/Simple/Class.hs
+++ b/Math/Manifold/Embedding/Simple/Class.hs
@@ -3,7 +3,7 @@
 -- Copyright   : (c) Justus Sagemüller 2018
 -- License     : GPL v3
 -- 
--- Maintainer  : (@) sagemueller $ geo.uni-koeln.de
+-- Maintainer  : (@) jsag $ hvl.no
 -- Stability   : experimental
 -- Portability : portable
 -- 
diff --git a/manifolds.cabal b/manifolds.cabal
--- a/manifolds.cabal
+++ b/manifolds.cabal
@@ -1,5 +1,5 @@
 Name:                manifolds
-Version:             0.5.0.3
+Version:             0.5.0.4
 Category:            Math
 Synopsis:            Coordinate-free hypersurfaces
 Description:         Manifolds, a generalisation of the notion of &#x201c;smooth curves&#x201d; or surfaces,
@@ -26,7 +26,7 @@
 License-file:        COPYING
 Author:              Justus Sagemüller
 Homepage:            https://github.com/leftaroundabout/manifolds
-Maintainer:          (@) sagemueller $ geo.uni-koeln.de
+Maintainer:          (@) jsag $ hvl.no
 Build-Type:          Simple
 Cabal-Version:       >=1.18
 Extra-Doc-Files:     images/examples/*.png,
@@ -40,14 +40,14 @@
 
 Library
   Build-Depends:     base>=4.5 && < 6
-                     , manifolds-core == 0.5.0.3
+                     , manifolds-core == 0.5.0.4
                      , transformers
                      , vector-space>=0.8
                      , free-vector-spaces>=0.1.5
                      , linear
                      , MemoTrie
                      , vector
-                     , linearmap-category >= 0.3.4 && < 0.4
+                     , linearmap-category >= 0.3.4 && < 0.5
                      , spatial-rotations >= 0.1 && < 0.2
                      , containers
                      , array
@@ -63,7 +63,7 @@
                      , placeholders
                      , lens
                      , call-stack
-                     , constrained-categories >= 0.3.1 && < 0.4
+                     , constrained-categories >= 0.3.1 && < 0.5
                      , pragmatic-show
                      , QuickCheck >=2.8 && <3
   other-extensions:  FlexibleInstances
diff --git a/test/tasty/test.hs b/test/tasty/test.hs
--- a/test/tasty/test.hs
+++ b/test/tasty/test.hs
@@ -3,7 +3,7 @@
 -- Copyright   : (c) Justus Sagemüller 2017
 -- License     : GPL v3
 -- 
--- Maintainer  : (@) sagemueller $ geo.uni-koeln.de
+-- Maintainer  : (@) jsag $ hvl.no
 -- Stability   : experimental
 -- Portability : portable
 -- 
@@ -42,7 +42,7 @@
 import Data.Typeable
 
 import Data.Foldable (toList)
-import Data.List (nub)
+import Data.List (nub, sort)
 import qualified Data.Graph as Graph
 import qualified Data.Set as Set
 import Control.Arrow
@@ -629,10 +629,10 @@
                           , info^.webBoundingPlane ) ) web)
                @?= [([1], Just 1), ([0,2], Nothing), ([1], Just $ -1)]
     , testCase "Linear 1D “web”"
-        $ toList (directNeighbours (fromWebNodes euclideanMetric
+        $ map sort (toList $ directNeighbours (fromWebNodes euclideanMetric
                                        [(x, ()) | x<-[0, 0.1 .. 2]] :: PointsWeb ℝ () ))
           @?= [ [1,9], [0,2], [1,3], [2,4], [3], [6,12], [5,7], [6,8], [7,9], [0,8], [11,15]
-              , [10,12],[11,5],[14,20],[13,15],[10,14],[17],[16,18],[17,19],[18,20],[13,19]
+              , [10,12],[5,11],[14,20],[13,15],[10,14],[17],[16,18],[17,19],[18,20],[13,19]
               ]
     , testCase "Small linear 1D web with nonuniform spacing"
         $ toList (directNeighbours (fromWebNodes euclideanMetric
@@ -1002,7 +1002,7 @@
 
 
 sphereParallelTransportTest :: S² -> S² -> [ℝ³] -> [ℝ³] -> Assertion
-sphereParallelTransportTest p q [] [] = assert True
+sphereParallelTransportTest p q [] [] = mempty
 sphereParallelTransportTest p q (v:vs) (w:ws)
      = (parallelTransport p (q.-~!p) vSph @?≈ wSph)
         >> sphereParallelTransportTest p q vs ws
