Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(revision 8548)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(revision 8549)
@@ -474,6 +474,6 @@
                     // nothing here
                 } else if (mode == Mode.translate) {
-                    EastNorth movement1 = initialN1en.sub(newN1en);
-                    EastNorth movement2 = initialN2en.sub(newN2en);
+                    EastNorth movement1 = newN1en.subtract(initialN1en);
+                    EastNorth movement2 = newN2en.subtract(initialN2en);
                     // move nodes to new position
                     if (moveCommand == null || moveCommand2 == null) {
@@ -734,5 +734,5 @@
 
         EastNorth initialMouseEn = Main.map.mapView.getEastNorth(initialMousePos.x, initialMousePos.y);
-        EastNorth mouseMovement = initialMouseEn.sub(mouseEn);
+        EastNorth mouseMovement = mouseEn.subtract(initialMouseEn);
 
         double bestDistance = Double.POSITIVE_INFINITY;
@@ -782,5 +782,5 @@
         else
             //return distance form base to target position
-            return intersectionPoint.sub(targetPos);
+            return targetPos.subtract(intersectionPoint);
     }
 
Index: /trunk/src/org/openstreetmap/josm/command/MoveCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/MoveCommand.java	(revision 8548)
+++ /trunk/src/org/openstreetmap/josm/command/MoveCommand.java	(revision 8549)
@@ -69,5 +69,5 @@
      */
     public MoveCommand(Node node, LatLon position) {
-        this(Collections.singleton((OsmPrimitive) node), node.getEastNorth().sub(Projections.project(position)));
+        this(Collections.singleton((OsmPrimitive) node), Projections.project(position).subtract(node.getEastNorth()));
     }
 
Index: /trunk/src/org/openstreetmap/josm/data/coor/EastNorth.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/coor/EastNorth.java	(revision 8548)
+++ /trunk/src/org/openstreetmap/josm/data/coor/EastNorth.java	(revision 8549)
@@ -25,10 +25,42 @@
     }
 
-    public EastNorth add(double dx, double dy) {
-        return new EastNorth(x+dx, y+dy);
+    /**
+     * Adds an offset to this {@link EastNorth} instance and returns the result.
+     * @param dEast The offset to add in east direction.
+     * @param dNorth The offset to add in north direction.
+     * @return The result.
+     */
+    public EastNorth add(double dEast, double dNorth) {
+        return new EastNorth(east()+dEast, north()+dNorth);
     }
 
+    /**
+     * Adds the coordinates of an other EastNorth instance to this one.
+     * @param other The other instance.
+     * @return The new EastNorth position.
+     */
     public EastNorth add(EastNorth other) {
         return new EastNorth(x+other.x, y+other.y);
+    }
+
+    /**
+     * Subtracts the coordinates of this EastNorth instance from the other one.
+     * <p>
+     * This produces result = en2 - this.
+     * @param en2 The instance to subtract this one from.
+     * @return The new EastNorth position.
+     */
+    @Deprecated
+    public EastNorth sub(EastNorth en2) {
+        return en2.subtract(this);
+    }
+
+    /**
+     * Subtracts an east/north value from this point.
+     * @param other The other value to subtract from this.
+     * @return A point with the new coordinates.
+     */
+    public EastNorth subtract(EastNorth other) {
+        return new EastNorth(x-other.x, y-other.y);
     }
 
@@ -37,4 +69,10 @@
     }
 
+    /**
+     * Does a linear interpolation between two EastNorth instances.
+     * @param en2 The other EstNort instance.
+     * @param proportion The proportion the other instance influences the result.
+     * @return The new {@link EastNorth} position.
+     */
     public EastNorth interpolate(EastNorth en2, double proportion) {
         return new EastNorth(this.x + proportion * (en2.x - this.x),
@@ -42,4 +80,9 @@
     }
 
+    /**
+     * Gets the center between two {@link EastNorth} instances.
+     * @param en2 The other instance.
+     * @return The center between this and the other instance.
+     */
     public EastNorth getCenter(EastNorth en2) {
         return new EastNorth((this.x + en2.x)/2.0, (this.y + en2.y)/2.0);
@@ -101,8 +144,4 @@
     }
 
-    public EastNorth sub(EastNorth en) {
-        return new EastNorth(en.east() - east(), en.north() - north());
-    }
-
     /**
      * Returns an EastNorth representing the this EastNorth rotated around
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationSortUtils.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationSortUtils.java	(revision 8548)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationSortUtils.java	(revision 8549)
@@ -41,6 +41,6 @@
             EastNorth en3 = w.getNode(2).getEastNorth();
             if (en1 != null && en2 != null && en3 != null) {
-                en1 = en1.sub(en2);
-                en2 = en2.sub(en3);
+                en1 = en2.subtract(en1);
+                en2 = en3.subtract(en2);
                 return en1.north() * en2.east() - en2.north() * en1.east() > 0 ? ROUNDABOUT_LEFT : ROUNDABOUT_RIGHT;
             }
Index: /trunk/test/unit/org/openstreetmap/josm/tools/GeometryTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/tools/GeometryTest.java	(revision 8548)
+++ /trunk/test/unit/org/openstreetmap/josm/tools/GeometryTest.java	(revision 8549)
@@ -3,7 +3,6 @@
 
 import org.junit.Assert;
+import org.junit.BeforeClass;
 import org.junit.Test;
-import org.junit.BeforeClass;
-
 import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.data.coor.EastNorth;
@@ -30,12 +29,12 @@
 
         EastNorth intersectionPoint = Geometry.getLineLineIntersection(p1, p2, p3, p4);
-        
-        EastNorth d1 = intersectionPoint.sub(p3);
-        EastNorth d2 = p2.sub(p1);
+
+        EastNorth d1 = p3.subtract(intersectionPoint);
+        EastNorth d2 = p1.subtract(p2);
         Double crossProduct = d1.east()*d2.north() - d1.north()*d2.east();
         Double scalarProduct = d1.east()*d2.east() + d1.north()*d2.north();
         Double len1 = d1.length();
         Double len2 = d2.length();
-        
+
         Double angle1 = Geometry.getCornerAngle(p1, p2, intersectionPoint);
         Double angle2 = Geometry.getCornerAngle(p3, p4, intersectionPoint);
