Index: applications/editors/josm/plugins/ColumbusCSV/build.xml
===================================================================
--- applications/editors/josm/plugins/ColumbusCSV/build.xml	(revision 35977)
+++ applications/editors/josm/plugins/ColumbusCSV/build.xml	(revision 35978)
@@ -4,5 +4,5 @@
     <property name="commit.message" value="Commit message"/>
     <!-- Enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="17715"/>
+    <property name="plugin.main.version" value="18494"/>
     
     <!-- Plugin meta data -->
Index: applications/editors/josm/plugins/ColumbusCSV/src/org/openstreetmap/josm/plugins/columbusCSV/WayPointHelper.java
===================================================================
--- applications/editors/josm/plugins/ColumbusCSV/src/org/openstreetmap/josm/plugins/columbusCSV/WayPointHelper.java	(revision 35977)
+++ applications/editors/josm/plugins/ColumbusCSV/src/org/openstreetmap/josm/plugins/columbusCSV/WayPointHelper.java	(revision 35978)
@@ -59,11 +59,11 @@
     
     public static double getLonDist(WayPoint w1, WayPoint w2) {
-        LatLon ll = new LatLon(w1.getCoor().lat(), w2.getCoor().lon());
-        return w1.getCoor().greatCircleDistance(ll);
+        LatLon ll = new LatLon(w1.lat(), w2.lon());
+        return w1.greatCircleDistance(ll);
     }
     
     public static double getLatDist(WayPoint w1, WayPoint w2) {
-        LatLon ll = new LatLon(w2.getCoor().lat(), w1.getCoor().lon());
-        return w1.getCoor().greatCircleDistance(ll);
+        LatLon ll = new LatLon(w2.lat(), w1.lon());
+        return w1.greatCircleDistance(ll);
     }
     
Index: applications/editors/josm/plugins/CommandLine/build.xml
===================================================================
--- applications/editors/josm/plugins/CommandLine/build.xml	(revision 35977)
+++ applications/editors/josm/plugins/CommandLine/build.xml	(revision 35978)
@@ -4,5 +4,5 @@
     <property name="commit.message" value="JOSM/CommandLine: fix exception after JOSM update"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="17749"/>
+    <property name="plugin.main.version" value="18494"/>
 
     <!-- Configure these properties (replace "..." accordingly).
Index: applications/editors/josm/plugins/CommandLine/src/org/openstreetmap/josm/plugins/commandline/LengthAction.java
===================================================================
--- applications/editors/josm/plugins/CommandLine/src/org/openstreetmap/josm/plugins/commandline/LengthAction.java	(revision 35977)
+++ applications/editors/josm/plugins/CommandLine/src/org/openstreetmap/josm/plugins/commandline/LengthAction.java	(revision 35978)
@@ -20,4 +20,5 @@
 import org.openstreetmap.josm.actions.mapmode.MapMode;
 import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.data.coor.ILatLon;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.Node;
@@ -149,5 +150,5 @@
 
     private void drawingFinish() {
-        parentPlugin.loadParameter(String.valueOf(startCoor.greatCircleDistance(endCoor)), true);
+        parentPlugin.loadParameter(String.valueOf(startCoor.greatCircleDistance((ILatLon) endCoor)), true);
         drawStartPos = null;
         drawing = false;
@@ -191,5 +192,5 @@
         endCoor = map.mapView.getLatLon(drawEndPos.x, drawEndPos.y);
         if (drawing) {
-            map.statusLine.setDist(startCoor.greatCircleDistance(endCoor));
+            map.statusLine.setDist(startCoor.greatCircleDistance((ILatLon) endCoor));
             map.mapView.repaint();
         }
Index: applications/editors/josm/plugins/ElevationProfile/build.xml
===================================================================
--- applications/editors/josm/plugins/ElevationProfile/build.xml	(revision 35977)
+++ applications/editors/josm/plugins/ElevationProfile/build.xml	(revision 35978)
@@ -4,5 +4,5 @@
     <property name="commit.message" value="[josm_elevationprofile]"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="15502"/>
+    <property name="plugin.main.version" value="18494"/>
     
     <!-- Configure these properties (replace "..." accordingly).
Index: applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/ElevationHelper.java
===================================================================
--- applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/ElevationHelper.java	(revision 35977)
+++ applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/ElevationHelper.java	(revision 35978)
@@ -109,5 +109,5 @@
 
         // get distance in meters and divide it by 100 in advance
-        double distInMeter = w1.greatCircleDistance(w2) / 100.0;
+        double distInMeter = w1.greatCircleDistance((ILatLon) w2) / 100.0;
 
         // get elevation (difference)
Index: applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/grid/EleVertex.java
===================================================================
--- applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/grid/EleVertex.java	(revision 35977)
+++ applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/grid/EleVertex.java	(revision 35978)
@@ -6,4 +6,5 @@
 import java.util.List;
 
+import org.openstreetmap.josm.data.coor.ILatLon;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.plugins.elevation.ElevationHelper;
@@ -41,7 +42,7 @@
 
         // compute the (approx.!) area of the vertex using heron's formula
-        double a = p1.greatCircleDistance(p2);
-        double b = p2.greatCircleDistance(p3);
-        double c = p1.greatCircleDistance(p3);
+        double a = p1.greatCircleDistance((ILatLon) p2);
+        double b = p2.greatCircleDistance((ILatLon) p3);
+        double c = p1.greatCircleDistance((ILatLon) p3);
 
         double s = (a + b + c) / 2D;
@@ -55,8 +56,8 @@
         int k = 0;
         for (int i = 0; i < points.length; i++) {
-            EleCoordinate c1 = points[i];
+            ILatLon c1 = points[i];
 
             for (int j = i + 1; j < points.length; j++) {
-                EleCoordinate c2 = points[j];
+                ILatLon c2 = points[j];
                 edges[k++] = new TriangleEdge(i, j, c1.greatCircleDistance(c2));
             }
@@ -119,5 +120,5 @@
 
         double z = (c1.getEle() + c2.getEle()) / 2.0;
-        if (c1.greatCircleDistance(c2) > MIN_DIST) {
+        if (c1.greatCircleDistance((ILatLon) c2) > MIN_DIST) {
             double hgtZ = ElevationHelper.getSrtmElevation(new LatLon(y, x));
 
Index: applications/editors/josm/plugins/FastDraw/build.xml
===================================================================
--- applications/editors/josm/plugins/FastDraw/build.xml	(revision 35977)
+++ applications/editors/josm/plugins/FastDraw/build.xml	(revision 35978)
@@ -4,5 +4,5 @@
     <property name="commit.message" value="[josm_fastdraw] Fix incorrect settings saving-2"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="18173"/>
+    <property name="plugin.main.version" value="18494"/>
     
     <!-- Configure these properties (replace "..." accordingly).
Index: applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/DrawnPolyLine.java
===================================================================
--- applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/DrawnPolyLine.java	(revision 35977)
+++ applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/DrawnPolyLine.java	(revision 35978)
@@ -10,4 +10,5 @@
 import java.util.Set;
 
+import org.openstreetmap.josm.data.coor.ILatLon;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.gui.MapView;
@@ -38,5 +39,5 @@
         List<LatLon> pts = getPoints();
         Iterator<LatLon> it1, it2;
-        LatLon pp1, pp2;
+        ILatLon pp1, pp2;
         if (pts.size() < 2) return 0;
         it1 = pts.listIterator(0);
@@ -368,5 +369,5 @@
         if (k > n) k = n;
 
-        LatLon pp1, pp2 = null;
+        ILatLon pp1, pp2 = null;
         Iterator<LatLon> it1, it2;
         it1 = pts.listIterator(0);
Index: applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FastDrawingMode.java
===================================================================
--- applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FastDrawingMode.java	(revision 35977)
+++ applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FastDrawingMode.java	(revision 35978)
@@ -560,5 +560,5 @@
             // there may be a node with the same coords!
 
-            if (nd != null && p.greatCircleDistance(nd.getCoor()) > 0.01) nd = null;
+            if (nd != null && p.greatCircleDistance(nd) > 0.01) nd = null;
             if (nd == null) {
                 if (i > 0 && p.equals(first)) {
Index: applications/editors/josm/plugins/FixAddresses/build.xml
===================================================================
--- applications/editors/josm/plugins/FixAddresses/build.xml	(revision 35977)
+++ applications/editors/josm/plugins/FixAddresses/build.xml	(revision 35978)
@@ -4,5 +4,5 @@
     <property name="commit.message" value="[josm_fixadresses]: Fixes #josm8336"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="14153"/>
+    <property name="plugin.main.version" value="18494"/>
 	
     <!-- Configure these properties (replace "..." accordingly).
Index: applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/GuessedValueHandler.java
===================================================================
--- applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/GuessedValueHandler.java	(revision 35977)
+++ applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/GuessedValueHandler.java	(revision 35978)
@@ -162,5 +162,5 @@
 
         if (n.hasKey(tag)) {
-            double dist = n.getCoor().greatCircleDistance(aNode.getCoor());
+            double dist = n.greatCircleDistance(aNode.getCoor());
             if (dist < minDist && dist < maxDist) {
                 minDist = dist;
Index: applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/OsmUtils.java
===================================================================
--- applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/OsmUtils.java	(revision 35977)
+++ applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/OsmUtils.java	(revision 35978)
@@ -6,4 +6,5 @@
 
 import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.data.coor.ILatLon;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.Node;
@@ -45,6 +46,6 @@
 
         for (Pair<Node, Node> pair : x) {
-            LatLon ap = pair.a.getCoor();
-            LatLon bp = pair.b.getCoor();
+            ILatLon ap = pair.a;
+            ILatLon bp = pair.b;
 
             double dist = findMinimum(ap, bp, coor);
@@ -64,5 +65,5 @@
      * @return the double the minimum distance in m of the way and the node
      */
-    private static double findMinimum(LatLon a, LatLon b, LatLon c) {
+    private static double findMinimum(ILatLon a, ILatLon b, ILatLon c) {
         CheckParameterUtil.ensureParameterNotNull(c, "c");
         CheckParameterUtil.ensureParameterNotNull(b, "b");
Index: applications/editors/josm/plugins/MicrosoftStreetside/gradle.properties
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/gradle.properties	(revision 35977)
+++ applications/editors/josm/plugins/MicrosoftStreetside/gradle.properties	(revision 35978)
@@ -8,10 +8,10 @@
 # Minimum required JOSM version to run this plugin, choose the lowest version possible that is compatible.
 # You can check if the plugin compiles against this version by executing `./gradlew compileJava_minJosm`.
-plugin.main.version=18004
+plugin.main.version=18494
 #plugin.version=
 # Version of JOSM against which the plugin is compiled
 # Please check, if the specified version is available for download from https://josm.openstreetmap.de/download/ .
 # If not, choose the next higher number that is available, or the gradle build will break.
-plugin.compile.version=18004
+plugin.compile.version=18494
 plugin.requires=apache-commons;apache-http;utilsplugin2;javafx
 
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/StreetsideLayer.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/StreetsideLayer.java	(revision 35977)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/StreetsideLayer.java	(revision 35978)
@@ -23,4 +23,5 @@
 import org.apache.log4j.Logger;
 import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.data.coor.ILatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.event.DataChangedEvent;
@@ -462,5 +463,5 @@
       .filter(img -> // Filters out images too far away from target
         img != null &&
-        img.getMovingLatLon().greatCircleDistance(target.getMovingLatLon())
+        img.getMovingLatLon().greatCircleDistance((ILatLon) target.getMovingLatLon())
           < StreetsideProperties.SEQUENCE_MAX_JUMP_DISTANCE.get()
        )
@@ -501,6 +502,6 @@
     public int compare(StreetsideAbstractImage img1, StreetsideAbstractImage img2) {
       return (int) Math.signum(
-        img1.getMovingLatLon().greatCircleDistance(target.getMovingLatLon()) -
-        img2.getMovingLatLon().greatCircleDistance(target.getMovingLatLon())
+        img1.getMovingLatLon().greatCircleDistance((ILatLon) target.getMovingLatLon()) -
+        img2.getMovingLatLon().greatCircleDistance((ILatLon) target.getMovingLatLon())
       );
     }
Index: applications/editors/josm/plugins/NanoLog/build.xml
===================================================================
--- applications/editors/josm/plugins/NanoLog/build.xml	(revision 35977)
+++ applications/editors/josm/plugins/NanoLog/build.xml	(revision 35978)
@@ -5,5 +5,5 @@
     <property name="commit.message" value="NanoLog"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="15502"/>
+    <property name="plugin.main.version" value="18494"/>
     <property name="plugin.author" value="Ilya Zverev"/>
     <property name="plugin.class" value="nanolog.NanoLogPlugin"/>
Index: applications/editors/josm/plugins/NanoLog/src/nanolog/Correlator.java
===================================================================
--- applications/editors/josm/plugins/NanoLog/src/nanolog/Correlator.java	(revision 35977)
+++ applications/editors/josm/plugins/NanoLog/src/nanolog/Correlator.java	(revision 35978)
@@ -131,5 +131,5 @@
         Integer direction = null;
         if (prevWp != null) {
-            direction = Long.valueOf(Math.round(180.0 / Math.PI * -prevWp.getCoor().bearing(curWp.getCoor()))).intValue();
+            direction = Long.valueOf(Math.round(180.0 / Math.PI * -prevWp.bearing(curWp))).intValue();
         }
 
Index: applications/editors/josm/plugins/addrinterpolation/build.xml
===================================================================
--- applications/editors/josm/plugins/addrinterpolation/build.xml	(revision 35977)
+++ applications/editors/josm/plugins/addrinterpolation/build.xml	(revision 35978)
@@ -4,5 +4,5 @@
     <property name="commit.message" value="Impoved Icon"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="14153"/>
+    <property name="plugin.main.version" value="18494"/>
     
     <!-- Configure these properties (replace "..." accordingly).
Index: applications/editors/josm/plugins/addrinterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/AddrInterpolationDialog.java
===================================================================
--- applications/editors/josm/plugins/addrinterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/AddrInterpolationDialog.java	(revision 35977)
+++ applications/editors/josm/plugins/addrinterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/AddrInterpolationDialog.java	(revision 35978)
@@ -826,5 +826,5 @@
         for (int segment = 0; segment < nSegments; segment++) {
             Node toNode = addrInterpolationWay.getNode(startNodeIndex + 1 + segment);
-            segmentLengths[segment] = fromNode.getCoor().greatCircleDistance(toNode.getCoor());
+            segmentLengths[segment] = fromNode.greatCircleDistance(toNode);
             totalLength += segmentLengths[segment];
 
Index: applications/editors/josm/plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/AngleSnap.java
===================================================================
--- applications/editors/josm/plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/AngleSnap.java	(revision 35977)
+++ applications/editors/josm/plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/AngleSnap.java	(revision 35978)
@@ -25,6 +25,6 @@
     public final Double addSnap(Node[] nodes) {
         if (nodes.length == 2) {
-            EastNorth p1 = latlon2eastNorth(nodes[0].getCoor());
-            EastNorth p2 = latlon2eastNorth(nodes[1].getCoor());
+            EastNorth p1 = latlon2eastNorth(nodes[0]);
+            EastNorth p2 = latlon2eastNorth(nodes[1]);
             double heading = p1.heading(p2);
             addSnap(heading);
@@ -38,6 +38,6 @@
     public final void addSnap(Way way) {
         for (Pair<Node, Node> pair : way.getNodePairs(false)) {
-            EastNorth a = latlon2eastNorth(pair.a.getCoor());
-            EastNorth b = latlon2eastNorth(pair.b.getCoor());
+            EastNorth a = latlon2eastNorth(pair.a);
+            EastNorth b = latlon2eastNorth(pair.b);
             double heading = a.heading(b);
             addSnap(heading);
Index: applications/editors/josm/plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/BuildingsToolsPlugin.java
===================================================================
--- applications/editors/josm/plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/BuildingsToolsPlugin.java	(revision 35977)
+++ applications/editors/josm/plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/BuildingsToolsPlugin.java	(revision 35978)
@@ -5,4 +5,5 @@
 
 import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.data.coor.ILatLon;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.projection.Projection;
@@ -18,5 +19,5 @@
     public static final Projection MERCATOR = Projections.getProjectionByCode("EPSG:3857"); // Mercator
 
-    public static EastNorth latlon2eastNorth(LatLon p) {
+    public static EastNorth latlon2eastNorth(ILatLon p) {
         return MERCATOR.latlon2eastNorth(p);
     }
Index: applications/editors/josm/plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/DrawBuildingAction.java
===================================================================
--- applications/editors/josm/plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/DrawBuildingAction.java	(revision 35977)
+++ applications/editors/josm/plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/DrawBuildingAction.java	(revision 35978)
@@ -210,10 +210,10 @@
             Node n = MainApplication.getMap().mapView.getNearestNode(mousePos, OsmPrimitive::isUsable);
             if (n != null)
-                return latlon2eastNorth(n.getCoor());
+                return latlon2eastNorth(n);
             IWaySegment<Node, Way> ws = MainApplication.getMap().mapView.getNearestWaySegment(mousePos,
                     OsmPrimitive::isSelectable);
             if (ws != null && ws.getWay().get("building") != null) {
-                EastNorth p1 = latlon2eastNorth(ws.getFirstNode().getCoor());
-                EastNorth p2 = latlon2eastNorth(ws.getSecondNode().getCoor());
+                EastNorth p1 = latlon2eastNorth(ws.getFirstNode());
+                EastNorth p2 = latlon2eastNorth(ws.getSecondNode());
                 EastNorth enX = Geometry.closestPointToSegment(p1, p2,
                         latlon2eastNorth(MainApplication.getMap().mapView.getLatLon(mousePos.x, mousePos.y)));
Index: applications/editors/josm/plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/ToolSettings.java
===================================================================
--- applications/editors/josm/plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/ToolSettings.java	(revision 35977)
+++ applications/editors/josm/plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/ToolSettings.java	(revision 35978)
@@ -98,5 +98,5 @@
         } else {
             ToolSettings.shape = Shape.RECTANGLE;
-            return (Shape.RECTANGLE);
+            return Shape.RECTANGLE;
         }
     }
Index: applications/editors/josm/plugins/geochat/build.xml
===================================================================
--- applications/editors/josm/plugins/geochat/build.xml	(revision 35977)
+++ applications/editors/josm/plugins/geochat/build.xml	(revision 35978)
@@ -5,5 +5,5 @@
     <property name="commit.message" value="[josm_geochat] copypaste from keyboard, font size advanced parameters"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="15389"/>
+    <property name="plugin.main.version" value="18494"/>
 
     <property name="plugin.author" value="Ilya Zverev"/>
Index: applications/editors/josm/plugins/geochat/src/geochat/ChatServerConnection.java
===================================================================
--- applications/editors/josm/plugins/geochat/src/geochat/ChatServerConnection.java	(revision 35977)
+++ applications/editors/josm/plugins/geochat/src/geochat/ChatServerConnection.java	(revision 35978)
@@ -19,4 +19,5 @@
 import javax.json.JsonObject;
 
+import org.openstreetmap.josm.data.coor.ILatLon;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.coor.conversion.DecimalDegreesCoordinateFormat;
@@ -349,5 +350,5 @@
             final boolean needReset;
             final boolean needFullReset = lastUserId != userId;
-            if (needFullReset || (lastPosition != null && pos.greatCircleDistance(lastPosition) > MAX_JUMP)) {
+            if (needFullReset || (lastPosition != null && pos.greatCircleDistance((ILatLon) lastPosition) > MAX_JUMP)) {
                 // reset messages
                 lastId = 0;
Index: applications/editors/josm/plugins/imagery_offset_db/build.xml
===================================================================
--- applications/editors/josm/plugins/imagery_offset_db/build.xml	(revision 35977)
+++ applications/editors/josm/plugins/imagery_offset_db/build.xml	(revision 35978)
@@ -5,5 +5,5 @@
     <property name="commit.message" value="Imagery Offset Database"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="14221"/>
+    <property name="plugin.main.version" value="18494"/>
     <property name="plugin.canloadatruntime" value="true"/>
 
Index: applications/editors/josm/plugins/imagery_offset_db/src/org/openstreetmap/josm/plugins/imagery_offset_db/ImageryOffsetWatcher.java
===================================================================
--- applications/editors/josm/plugins/imagery_offset_db/src/org/openstreetmap/josm/plugins/imagery_offset_db/ImageryOffsetWatcher.java	(revision 35977)
+++ applications/editors/josm/plugins/imagery_offset_db/src/org/openstreetmap/josm/plugins/imagery_offset_db/ImageryOffsetWatcher.java	(revision 35978)
@@ -11,4 +11,5 @@
 import java.util.TreeMap;
 
+import org.openstreetmap.josm.data.coor.ILatLon;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.imagery.OffsetBookmark;
@@ -151,5 +152,5 @@
                 setOffsetGood(true);
             } else {
-                setOffsetGood(data.lastChecked != null && center.greatCircleDistance(data.lastChecked) <= maxDistance * 1000);
+                setOffsetGood(data.lastChecked != null && center.greatCircleDistance((ILatLon) data.lastChecked) <= maxDistance * 1000);
             }
         }
@@ -264,5 +265,5 @@
                     continue;
                 }
-                LatLon lastPos = new LatLon(dparts[0], dparts[1]);
+                ILatLon lastPos = new LatLon(dparts[0], dparts[1]);
                 if (lastPos.greatCircleDistance(ImageryOffsetTools.getMapCenter()) < Math.max(maxDistance, 3.0) * 1000) {
                     // apply offset
Index: applications/editors/josm/plugins/imagery_offset_db/src/org/openstreetmap/josm/plugins/imagery_offset_db/OffsetDialogButton.java
===================================================================
--- applications/editors/josm/plugins/imagery_offset_db/src/org/openstreetmap/josm/plugins/imagery_offset_db/OffsetDialogButton.java	(revision 35977)
+++ applications/editors/josm/plugins/imagery_offset_db/src/org/openstreetmap/josm/plugins/imagery_offset_db/OffsetDialogButton.java	(revision 35978)
@@ -26,4 +26,5 @@
 
 import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.data.coor.ILatLon;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.projection.Projection;
@@ -68,5 +69,5 @@
      */
     public void updateLocation() {
-        LatLon center = ImageryOffsetTools.getMapCenter();
+        ILatLon center = ImageryOffsetTools.getMapCenter();
         directionArrow.updateIcon(center);
         double distance = center.greatCircleDistance(offset.getPosition());
@@ -151,5 +152,5 @@
         Projection proj = ProjectionRegistry.getProjection();
         EastNorth pos = proj.latlon2eastNorth(offset.getPosition());
-        LatLon correctedCenterLL = proj.eastNorth2latlon(pos.add(-dx, -dy));
+        ILatLon correctedCenterLL = proj.eastNorth2latlon(pos.add(-dx, -dy));
         double length = correctedCenterLL.greatCircleDistance(offset.getImageryPos());
         double direction = length < 1e-2 ? 0.0 : -correctedCenterLL.bearing(offset.getImageryPos());
@@ -261,5 +262,5 @@
         }
 
-        public void updateIcon(LatLon from) {
+        public void updateIcon(ILatLon from) {
             distance = from.greatCircleDistance(to);
             direction = -to.bearing(from);
Index: applications/editors/josm/plugins/imagery_offset_db/src/org/openstreetmap/josm/plugins/imagery_offset_db/OffsetInfoAction.java
===================================================================
--- applications/editors/josm/plugins/imagery_offset_db/src/org/openstreetmap/josm/plugins/imagery_offset_db/OffsetInfoAction.java	(revision 35977)
+++ applications/editors/josm/plugins/imagery_offset_db/src/org/openstreetmap/josm/plugins/imagery_offset_db/OffsetInfoAction.java	(revision 35978)
@@ -12,4 +12,5 @@
 import javax.swing.JOptionPane;
 
+import org.openstreetmap.josm.data.coor.ILatLon;
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -80,5 +81,5 @@
         StringBuilder sb = new StringBuilder();
         if (offset instanceof ImageryOffset) {
-            double odist = ((ImageryOffset) offset).getImageryPos().greatCircleDistance(offset.getPosition());
+            double odist = ((ImageryOffset) offset).getImageryPos().greatCircleDistance((ILatLon) offset.getPosition());
             if (odist < 1e-2) odist = 0.0;
             sb.append(tr("An imagery offset of {0}", ImageryOffsetTools.formatDistance(odist))).append('\n');
@@ -88,5 +89,5 @@
         }
 
-        double dist = ImageryOffsetTools.getMapCenter().greatCircleDistance(offset.getPosition());
+        double dist = ImageryOffsetTools.getMapCenter().greatCircleDistance((ILatLon) offset.getPosition());
         sb.append(dist < 50 ? tr("Determined right here") : tr("Determined {0} away",
                 ImageryOffsetTools.formatDistance(dist)));
Index: applications/editors/josm/plugins/indoor_sweepline/src/indoor_sweepline/CorridorGeography.java
===================================================================
--- applications/editors/josm/plugins/indoor_sweepline/src/indoor_sweepline/CorridorGeography.java	(revision 35977)
+++ applications/editors/josm/plugins/indoor_sweepline/src/indoor_sweepline/CorridorGeography.java	(revision 35978)
@@ -4,4 +4,5 @@
 import java.util.Vector;
 
+import org.openstreetmap.josm.data.coor.ILatLon;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -17,5 +18,5 @@
     private static final double MIN_LENGTH = 10.;
 
-    private void setExtraElements(CorridorPart.ReachableSide side, LatLon from, LatLon to,
+    private void setExtraElements(CorridorPart.ReachableSide side, ILatLon from, ILatLon to,
             boolean extraWayUp, double minLength) {
         LatLon middleCoor = new LatLon((from.lat() + to.lat())/2.,
@@ -27,5 +28,5 @@
             middleNode.setCoor(middleCoor);
 
-        LatLon start = from;
+        ILatLon start = from;
         if (side == CorridorPart.ReachableSide.LEFT) {
             if (middleCoor.lat() < start.lat())
@@ -71,5 +72,5 @@
 
     public void appendNodes(CorridorPart.Type type, CorridorPart.ReachableSide side, String level,
-            LatLon from, LatLon to, ModelGeography target) {
+            ILatLon from, ILatLon to, ModelGeography target) {
         if (type == CorridorPart.Type.STAIRS_UP || type == CorridorPart.Type.STAIRS_DOWN) {
             setExtraElements(side, from, to, type == CorridorPart.Type.STAIRS_UP, MIN_LENGTH);
Index: applications/editors/josm/plugins/indoor_sweepline/src/indoor_sweepline/ModelGeography.java
===================================================================
--- applications/editors/josm/plugins/indoor_sweepline/src/indoor_sweepline/ModelGeography.java	(revision 35977)
+++ applications/editors/josm/plugins/indoor_sweepline/src/indoor_sweepline/ModelGeography.java	(revision 35978)
@@ -85,8 +85,8 @@
 
     public void finishWay(Strip strip, int partIndex, boolean isOuter, String level) {
-        if (nodes.size() > 0) {
+        if (!nodes.isEmpty()) {
             CorridorPart part = strip.partAt(partIndex);
             strip.geographyAt(partIndex).appendNodes(part.getType(), part.getSide(), level,
-                    nodes.elementAt(nodes.size()-1).getCoor(), nodes.elementAt(0).getCoor(), this);
+                    nodes.elementAt(nodes.size()-1), nodes.elementAt(0), this);
             nodes.add(nodes.elementAt(0));
         }
@@ -98,7 +98,7 @@
     public void appendCorridorPart(CorridorPart part, CorridorGeography partGeography, int beamIndex, int partIndex,
             String level) {
-        if (nodes.size() > 0)
+        if (!nodes.isEmpty())
             partGeography.appendNodes(part.getType(), part.getSide(), level,
-                    nodes.elementAt(nodes.size()-1).getCoor(),
+                    nodes.elementAt(nodes.size()-1),
                     beamsGeography.elementAt(beamIndex).coorAt(partIndex), this);
     }
@@ -113,8 +113,8 @@
                     0, strip.width / 2.));
 
-        if (nodes.size() > 0) {
+        if (!nodes.isEmpty()) {
             CorridorPart part = strip.partAt(partIndex);
             strip.geographyAt(partIndex).appendNodes(part.getType(), part.getSide(), level,
-                    nodes.elementAt(nodes.size()-1).getCoor(), nodePool.elementAt(nodePoolCount).getCoor(), this);
+                    nodes.elementAt(nodes.size()-1), nodePool.elementAt(nodePoolCount), this);
         }
         nodes.add(nodePool.elementAt(nodePoolCount));
@@ -183,5 +183,5 @@
     private void adjustMultipolygonRelation(IndoorSweeplineModel.Type type, String level) {
         if (members.size() > 1) {
-            if (wayPool.size() > 0)
+            if (!wayPool.isEmpty())
                 wayPool.elementAt(0).removeAll();
 
Index: applications/editors/josm/plugins/infomode/build.xml
===================================================================
--- applications/editors/josm/plugins/infomode/build.xml	(revision 35977)
+++ applications/editors/josm/plugins/infomode/build.xml	(revision 35978)
@@ -5,5 +5,5 @@
     <property name="commit.message" value="InfoMode : for shortcurt parser"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="15502"/>
+    <property name="plugin.main.version" value="18494"/>
 
     <!-- Configure these properties (replace "..." accordingly).
Index: applications/editors/josm/plugins/infomode/src/org/openstreetmap/josm/plugins/infomode/InfoMode.java
===================================================================
--- applications/editors/josm/plugins/infomode/src/org/openstreetmap/josm/plugins/infomode/InfoMode.java	(revision 35977)
+++ applications/editors/josm/plugins/infomode/src/org/openstreetmap/josm/plugins/infomode/InfoMode.java	(revision 35978)
@@ -289,5 +289,5 @@
                     double vel = -1;
                     if (prevWp != null && wp.getTimeInMillis() != prevWp.getTimeInMillis()) {
-                        vel = wp.getCoor().greatCircleDistance(prevWp.getCoor())/
+                        vel = wp.greatCircleDistance(prevWp)/
                                 (wp.getTime()-prevWp.getTime());
                     }
Index: applications/editors/josm/plugins/livegps/src/livegps/AppendableGpxTrackSegment.java
===================================================================
--- applications/editors/josm/plugins/livegps/src/livegps/AppendableGpxTrackSegment.java	(revision 35977)
+++ applications/editors/josm/plugins/livegps/src/livegps/AppendableGpxTrackSegment.java	(revision 35978)
@@ -39,6 +39,6 @@
 
         if (size > 0) {
-            Double distance = wayPoints[size - 1].getCoor().greatCircleDistance(p.getCoor());
-            if (!distance.isNaN() && !distance.isInfinite()) {
+            double distance = wayPoints[size - 1].greatCircleDistance(p);
+            if (!Double.isNaN(distance) && !Double.isInfinite(distance)) {
                 length += distance;
             }
Index: applications/editors/josm/plugins/measurement/build.xml
===================================================================
--- applications/editors/josm/plugins/measurement/build.xml	(revision 35977)
+++ applications/editors/josm/plugins/measurement/build.xml	(revision 35978)
@@ -4,5 +4,5 @@
     <property name="commit.message" value="recompile dure to core change"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="15502"/>
+    <property name="plugin.main.version" value="18494"/>
     <property name="plugin.canloadatruntime" value="true"/>
     
Index: applications/editors/josm/plugins/measurement/src/org/openstreetmap/josm/plugins/measurement/MeasurementDialog.java
===================================================================
--- applications/editors/josm/plugins/measurement/src/org/openstreetmap/josm/plugins/measurement/MeasurementDialog.java	(revision 35977)
+++ applications/editors/josm/plugins/measurement/src/org/openstreetmap/josm/plugins/measurement/MeasurementDialog.java	(revision 35978)
@@ -204,9 +204,9 @@
             } else {
                 for (Node n : nodes) {
-                    if (n.getCoor() != null) {
+                    if (n.isLatLonKnown()) {
                         if (lastNode == null) {
                             lastNode = n;
                         } else {
-                            length += lastNode.getCoor().greatCircleDistance(n.getCoor());
+                            length += lastNode.greatCircleDistance(n);
                             segAngle = MeasurementLayer.angleBetween(lastNode, n);
                             lastNode = n;
@@ -223,6 +223,6 @@
                 boolean isCircle = true;
                 for (Node n: w.getNodes()) {
-                    if (lastN != null && lastN.getCoor() != null && n.getCoor() != null) {
-                        final double segLength = lastN.getCoor().greatCircleDistance(n.getCoor());
+                    if (lastN != null && lastN.isLatLonKnown() && n.isLatLonKnown()) {
+                        final double segLength = lastN.greatCircleDistance(n);
                         if (firstSegLength == null) {
                             firstSegLength = segLength;
@@ -233,6 +233,6 @@
                         length += segLength;
                         //http://local.wasp.uwa.edu.au/~pbourke/geometry/polyarea/
-                        wayArea += (MeasurementLayer.calcX(n.getCoor()) * MeasurementLayer.calcY(lastN.getCoor()))
-                                - (MeasurementLayer.calcY(n.getCoor()) * MeasurementLayer.calcX(lastN.getCoor()));
+                        wayArea += (MeasurementLayer.calcX(n) * MeasurementLayer.calcY(lastN))
+                                - (MeasurementLayer.calcY(n) * MeasurementLayer.calcX(lastN));
                         segAngle = MeasurementLayer.angleBetween(lastN, n);
                     }
Index: applications/editors/josm/plugins/measurement/src/org/openstreetmap/josm/plugins/measurement/MeasurementLayer.java
===================================================================
--- applications/editors/josm/plugins/measurement/src/org/openstreetmap/josm/plugins/measurement/MeasurementLayer.java	(revision 35977)
+++ applications/editors/josm/plugins/measurement/src/org/openstreetmap/josm/plugins/measurement/MeasurementLayer.java	(revision 35978)
@@ -157,14 +157,14 @@
      * https://stackoverflow.com/questions/4681737/how-to-calculate-the-area-of-a-polygon-on-the-earths-surface-using-python
      */
-    public static double calcX(LatLon p1){
+    public static double calcX(ILatLon p1){
         return p1.lat() * Math.PI * 6367000 / 180;
     }
 
-    public static double calcY(LatLon p1){
+    public static double calcY(ILatLon p1){
         return p1.lon() * ( Math.PI * 6367000 / 180) * Math.cos(p1.lat() * Math.PI / 180);
     }
 
     public static double calcDistance(WayPoint p1, WayPoint p2){
-        return p1.getCoor().greatCircleDistance(p2.getCoor());
+        return p1.greatCircleDistance(p2);
     }
 
Index: applications/editors/josm/plugins/opendata/build.xml
===================================================================
--- applications/editors/josm/plugins/opendata/build.xml	(revision 35977)
+++ applications/editors/josm/plugins/opendata/build.xml	(revision 35978)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <project name="opendata" default="dist" basedir=".">
-    <property name="plugin.main.version" value="18464"/>
+    <property name="plugin.main.version" value="18494"/>
     <property name="plugin.author" value="Don-vip"/>
     <property name="plugin.class" value="org.openstreetmap.josm.plugins.opendata.OdPlugin"/>
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/NeptuneReader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/NeptuneReader.java	(revision 35977)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/NeptuneReader.java	(revision 35978)
@@ -23,4 +23,5 @@
 import javax.xml.validation.Validator;
 
+import org.openstreetmap.josm.data.coor.ILatLon;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -239,5 +240,5 @@
     }
 
-    protected static final boolean isNullLatLon(LatLon ll) {
+    protected static boolean isNullLatLon(ILatLon ll) {
         return ll.lat() == 0.0 && ll.lon() == 0.0;
     }
@@ -362,5 +363,5 @@
             for (RelationMember member : stopArea.getMembers()) {
                 // Fix stop coordinates if needed
-                if (member.getRole().equals(OSM_PLATFORM) && isNullLatLon(member.getNode().getCoor())) {
+                if (member.getRole().equals(OSM_PLATFORM) && isNullLatLon(member.getNode())) {
                     member.getNode().setCoor(createLatLon(areaCentroid));
                 }
Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/SpreadSheetReader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/SpreadSheetReader.java	(revision 35977)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/SpreadSheetReader.java	(revision 35978)
@@ -253,5 +253,5 @@
                         firstNode = n;
                     }
-                    if (n == firstNode || n.getCoor().greatCircleDistance(firstNode.getCoor())
+                    if (n == firstNode || n.greatCircleDistance(firstNode)
                             > Config.getPref().getDouble(OdConstants.PREF_TOLERANCE, OdConstants.DEFAULT_TOLERANCE)) {
                         ds.addPrimitive(n);
Index: applications/editors/josm/plugins/pbf/src/org/openstreetmap/josm/plugins/pbf/io/PbfWriter.java
===================================================================
--- applications/editors/josm/plugins/pbf/src/org/openstreetmap/josm/plugins/pbf/io/PbfWriter.java	(revision 35977)
+++ applications/editors/josm/plugins/pbf/src/org/openstreetmap/josm/plugins/pbf/io/PbfWriter.java	(revision 35978)
@@ -12,5 +12,4 @@
 
 import org.openstreetmap.josm.data.DataSource;
-import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
@@ -200,8 +199,7 @@
                     bi.addId(id - lastid);
                     lastid = id;
-                    LatLon coor = i.getCoor();
-                    if (coor != null) {
-                        int lat = mapDegrees(coor.lat());
-                        int lon = mapDegrees(coor.lon());
+                    if (i.isLatLonKnown()) {
+                        int lat = mapDegrees(i.lat());
+                        int lon = mapDegrees(i.lon());
                         bi.addLon(lon - lastlon);
                         lastlon = lon;
@@ -235,7 +233,6 @@
                 for (Node i : contents) {
                     long id = i.getUniqueId();
-                    LatLon coor = i.getCoor();
-                    int lat = mapDegrees(coor.lat());
-                    int lon = mapDegrees(coor.lon());
+                    int lat = mapDegrees(i.lat());
+                    int lon = mapDegrees(i.lon());
                     Osmformat.Node.Builder bi = Osmformat.Node.newBuilder();
                     bi.setId(id);
@@ -385,5 +382,5 @@
                     nodes = new NodeGroup();
                 }
-                if (node.getCoor() != null) {
+                if (node.isLatLonKnown()) {
                     nodes.add(node);
                     checkLimit();
Index: applications/editors/josm/plugins/photoadjust/src/org/openstreetmap/josm/plugins/photoadjust/PhotoAdjustWorker.java
===================================================================
--- applications/editors/josm/plugins/photoadjust/src/org/openstreetmap/josm/plugins/photoadjust/PhotoAdjustWorker.java	(revision 35977)
+++ applications/editors/josm/plugins/photoadjust/src/org/openstreetmap/josm/plugins/photoadjust/PhotoAdjustWorker.java	(revision 35978)
@@ -7,4 +7,5 @@
 import org.openstreetmap.josm.data.ImageData;
 import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.data.coor.ILatLon;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.projection.ProjectionRegistry;
@@ -226,5 +227,5 @@
     private void changeDirection(ImageEntry photo, ImageData data,
             MouseEvent evt) {
-        final LatLon photoLL = photo.getPos();
+        final ILatLon photoLL = photo.getPos();
         if (photoLL == null) {
             // Direction cannot be set if image doesn't have a position.
Index: applications/editors/josm/plugins/public_transport/build.xml
===================================================================
--- applications/editors/josm/plugins/public_transport/build.xml	(revision 35977)
+++ applications/editors/josm/plugins/public_transport/build.xml	(revision 35978)
@@ -5,5 +5,5 @@
     <property name="commit.message" value="Commit message"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="15502"/>
+    <property name="plugin.main.version" value="18494"/>
 
     <property name="plugin.author" value="Roland M. Olbricht"/>
Index: applications/editors/josm/plugins/public_transport/src/org/openstreetmap/josm/plugins/public_transport/PublicTransportAStar.java
===================================================================
--- applications/editors/josm/plugins/public_transport/src/org/openstreetmap/josm/plugins/public_transport/PublicTransportAStar.java	(revision 35977)
+++ applications/editors/josm/plugins/public_transport/src/org/openstreetmap/josm/plugins/public_transport/PublicTransportAStar.java	(revision 35978)
@@ -70,5 +70,5 @@
             double totalDistance = 0;
             for (int i = min; i < max; ++i) {
-                totalDistance += way.getNode(i).getCoor().greatCircleDistance(way.getNode(i + 1).getCoor());
+                totalDistance += way.getNode(i).greatCircleDistance(way.getNode(i + 1));
             }
             return totalDistance;
@@ -138,6 +138,6 @@
     public double estimateDistance(AStarAlgorithm.Vertex vertex) {
         NodeVertex nodeVertex = (NodeVertex) vertex;
-        return ((NodeVertex) super.end).node.getCoor()
-                .greatCircleDistance(nodeVertex.node.getCoor());
+        return ((NodeVertex) super.end).node
+                .greatCircleDistance(nodeVertex.node);
     }
 }
Index: applications/editors/josm/plugins/public_transport/src/org/openstreetmap/josm/plugins/public_transport/commands/TrackSuggestStopsCommand.java
===================================================================
--- applications/editors/josm/plugins/public_transport/src/org/openstreetmap/josm/plugins/public_transport/commands/TrackSuggestStopsCommand.java	(revision 35977)
+++ applications/editors/josm/plugins/public_transport/src/org/openstreetmap/josm/plugins/public_transport/commands/TrackSuggestStopsCommand.java	(revision 35978)
@@ -9,4 +9,5 @@
 
 import org.openstreetmap.josm.command.Command;
+import org.openstreetmap.josm.data.coor.ILatLon;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.gpx.IGpxTrackSegment;
@@ -121,7 +122,7 @@
             if (j < k) {
                 double dist = 0;
-                LatLon latLonI = wayPoints.elementAt(i).getCoor();
+                ILatLon latLonI = wayPoints.elementAt(i).getCoor();
                 for (int l = j; l < k; ++l) {
-                    double distL = latLonI.greatCircleDistance(wayPoints.elementAt(l).getCoor());
+                    double distL = latLonI.greatCircleDistance(wayPoints.elementAt(l));
                     if (distL > dist)
                         dist = distL;
@@ -148,5 +149,5 @@
 
             LatLon latLon = wayPoints.elementAt(i).getCoor();
-            if ((lastStopCoor != null) && (lastStopCoor.greatCircleDistance(latLon) < threshold))
+            if ((lastStopCoor != null) && (lastStopCoor.greatCircleDistance((ILatLon) latLon) < threshold))
                 continue;
 
Index: applications/editors/josm/plugins/public_transport/src/org/openstreetmap/josm/plugins/public_transport/models/GTFSStopTableModel.java
===================================================================
--- applications/editors/josm/plugins/public_transport/src/org/openstreetmap/josm/plugins/public_transport/models/GTFSStopTableModel.java	(revision 35977)
+++ applications/editors/josm/plugins/public_transport/src/org/openstreetmap/josm/plugins/public_transport/models/GTFSStopTableModel.java	(revision 35978)
@@ -180,5 +180,5 @@
         while (iter.hasNext()) {
             Node node = iter.next();
-            if (coor.greatCircleDistance(node.getCoor()) < 1000) {
+            if (coor.greatCircleDistance(node) < 1000) {
                 nearBusStop = true;
                 break;
Index: applications/editors/josm/plugins/routing/build.xml
===================================================================
--- applications/editors/josm/plugins/routing/build.xml	(revision 35977)
+++ applications/editors/josm/plugins/routing/build.xml	(revision 35978)
@@ -5,5 +5,5 @@
     <property name="commit.message" value="added one-way support in roundabouts"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="14153"/>
+    <property name="plugin.main.version" value="18494"/>
 
     <property name="plugin.author" value="Jose Vidal &lt;vidalfree@gmail.com&gt;, Juangui Jordán &lt;juangui@gmail.com&gt;, Hassan S &lt;hassan.sabirin@gmail.com&gt;"/>
Index: applications/editors/josm/plugins/routing/src/com/innovant/josm/jrt/osm/OsmEdge.java
===================================================================
--- applications/editors/josm/plugins/routing/src/com/innovant/josm/jrt/osm/OsmEdge.java	(revision 35977)
+++ applications/editors/josm/plugins/routing/src/com/innovant/josm/jrt/osm/OsmEdge.java	(revision 35978)
@@ -41,5 +41,5 @@
         this.from = from;
         this.to = to;
-        this.length = from.getCoor().greatCircleDistance(to.getCoor());
+        this.length = from.greatCircleDistance(to);
     }
 
Index: applications/editors/josm/plugins/simplifyarea/build.xml
===================================================================
--- applications/editors/josm/plugins/simplifyarea/build.xml	(revision 35977)
+++ applications/editors/josm/plugins/simplifyarea/build.xml	(revision 35978)
@@ -4,5 +4,5 @@
     <property name="commit.message" value="Initial commit"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="14153"/>
+    <property name="plugin.main.version" value="18494"/>
    	
     <!-- Configure these properties (replace "..." accordingly).
Index: applications/editors/josm/plugins/simplifyarea/src/org/openstreetmap/josm/plugins/simplifyarea/SimplifyAreaAction.java
===================================================================
--- applications/editors/josm/plugins/simplifyarea/src/org/openstreetmap/josm/plugins/simplifyarea/SimplifyAreaAction.java	(revision 35977)
+++ applications/editors/josm/plugins/simplifyarea/src/org/openstreetmap/josm/plugins/simplifyarea/SimplifyAreaAction.java	(revision 35978)
@@ -29,4 +29,5 @@
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.UndoRedoHandler;
+import org.openstreetmap.josm.data.coor.ILatLon;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.Node;
@@ -257,6 +258,6 @@
                     }
 
-                    final LatLon a = coordMap.get(n1);
-                    final LatLon b = coordMap.get(n2);
+                    final ILatLon a = coordMap.get(n1);
+                    final ILatLon b = coordMap.get(n2);
                     
                     if (a != null && b != null) {
@@ -419,10 +420,10 @@
     }
 
-    public static double computeConvectAngle(final LatLon coord1, final LatLon coord2, final LatLon coord3) {
+    public static double computeConvectAngle(final ILatLon coord1, final ILatLon coord2, final ILatLon coord3) {
         final double angle =  Math.abs(heading(coord2, coord3) - heading(coord1, coord2));
         return Math.toDegrees(angle < Math.PI ? angle : 2 * Math.PI - angle);
     }
 
-    public static double computeArea(final LatLon coord1, final LatLon coord2, final LatLon coord3) {
+    public static double computeArea(final ILatLon coord1, final ILatLon coord2, final ILatLon coord3) {
         final double a = coord1.greatCircleDistance(coord2);
         final double b = coord2.greatCircleDistance(coord3);
@@ -437,9 +438,9 @@
     public static double R = 6378135;
 
-    public static double crossTrackError(final LatLon l1, final LatLon l2, final LatLon l3) {
+    public static double crossTrackError(final ILatLon l1, final ILatLon l2, final ILatLon l3) {
         return R * Math.asin(sin(l1.greatCircleDistance(l2) / R) * sin(heading(l1, l2) - heading(l1, l3)));
     }
 
-    public static double heading(final LatLon a, final LatLon b) {
+    public static double heading(final ILatLon a, final ILatLon b) {
         double hd = Math.atan2(sin(toRadians(a.lon() - b.lon())) * cos(toRadians(b.lat())),
                 cos(toRadians(a.lat())) * sin(toRadians(b.lat())) -
Index: applications/editors/josm/plugins/terracer/build.xml
===================================================================
--- applications/editors/josm/plugins/terracer/build.xml	(revision 35977)
+++ applications/editors/josm/plugins/terracer/build.xml	(revision 35978)
@@ -2,5 +2,5 @@
 <project name="terracer" default="dist" basedir=".">
     <property name="commit.message" value="applied #j5760 (patch by robome) - Order of housenumbers not correct"/>
-    <property name="plugin.main.version" value="18464"/>
+    <property name="plugin.main.version" value="18494"/>
     <property name="plugin.author" value="Matt Amos"/>
     <property name="plugin.class" value="org.openstreetmap.josm.plugins.terracer.TerracerPlugin"/>
Index: applications/editors/josm/plugins/terracer/src/org/openstreetmap/josm/plugins/terracer/TerracerAction.java
===================================================================
--- applications/editors/josm/plugins/terracer/src/org/openstreetmap/josm/plugins/terracer/TerracerAction.java	(revision 35977)
+++ applications/editors/josm/plugins/terracer/src/org/openstreetmap/josm/plugins/terracer/TerracerAction.java	(revision 35978)
@@ -33,5 +33,4 @@
 import org.openstreetmap.josm.data.UndoRedoHandler;
 import org.openstreetmap.josm.data.coor.ILatLon;
-import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
@@ -572,5 +571,5 @@
         for (int i = 0; i < pairs.size(); ++i) {
             Pair<Node, Node> p = pairs.get(i);
-            final double seg_length = p.a.getCoor().greatCircleDistance(p.b.getCoor());
+            final double seg_length = p.a.greatCircleDistance(p.b);
             if (l <= seg_length || i == pairs.size() - 1) {
                 // be generous on the last segment (numerical roudoff can lead to a small overshoot)
@@ -594,5 +593,5 @@
         double length = 0.0;
         for (Pair<Node, Node> p : w.getNodePairs(false)) {
-            length += p.a.getCoor().greatCircleDistance(p.b.getCoor());
+            length += p.a.greatCircleDistance(p.b);
         }
         return length;
@@ -687,5 +686,5 @@
         Node a = w.getNode(i);
         Node b = w.getNode((i + 1) % (w.getNodesCount() - 1));
-        return a.getCoor().greatCircleDistance(b.getCoor());
+        return a.greatCircleDistance(b);
     }
 
Index: applications/editors/josm/plugins/tracer/src/org/openstreetmap/josm/plugins/tracer/ConnectWays.java
===================================================================
--- applications/editors/josm/plugins/tracer/src/org/openstreetmap/josm/plugins/tracer/ConnectWays.java	(revision 35977)
+++ applications/editors/josm/plugins/tracer/src/org/openstreetmap/josm/plugins/tracer/ConnectWays.java	(revision 35978)
@@ -150,5 +150,5 @@
 
             for (Pair<Node, Node> np : ww.getNodePairs(false)) {
-                double dist = TracerGeometry.distanceFromSegment(ll, np.a.getCoor(), np.b.getCoor());
+                double dist = TracerGeometry.distanceFromSegment(ll, np.a, np.b);
                 if (dist < minDist) {
                     minDist = dist;
Index: applications/editors/josm/plugins/trustosm/build.xml
===================================================================
--- applications/editors/josm/plugins/trustosm/build.xml	(revision 35977)
+++ applications/editors/josm/plugins/trustosm/build.xml	(revision 35978)
@@ -5,5 +5,5 @@
     <property name="commit.message" value="trustosm: recompile for compatibility with JOSM r17896" />
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="17896"/>
+    <property name="plugin.main.version" value="18494"/>
     <property name="plugin.author" value="Christoph Wagner" />
     <property name="plugin.class" value="org.openstreetmap.josm.plugins.trustosm.TrustOSMplugin" />
Index: applications/editors/josm/plugins/trustosm/src/org/openstreetmap/josm/plugins/trustosm/util/TrustAnalyzer.java
===================================================================
--- applications/editors/josm/plugins/trustosm/src/org/openstreetmap/josm/plugins/trustosm/util/TrustAnalyzer.java	(revision 35977)
+++ applications/editors/josm/plugins/trustosm/src/org/openstreetmap/josm/plugins/trustosm/util/TrustAnalyzer.java	(revision 35978)
@@ -95,5 +95,5 @@
         Node signedNode = TrustNode.generateNodeFromSigtext(signedPlaintext);
         Node currentNode = (Node) trust.getOsmPrimitive();
-        double dist = signedNode.getCoor().greatCircleDistance(currentNode.getCoor());
+        double dist = signedNode.greatCircleDistance(currentNode);
 
         /** is distance between signed Node and current Node inside tolerance? */
@@ -157,5 +157,5 @@
             Node signedNode = signedSegment.get(i);
             Node currentNode = nodes.get(i);
-            double dist = signedNode.getCoor().greatCircleDistance(currentNode.getCoor());
+            double dist = signedNode.greatCircleDistance(currentNode);
             if (dist > tolerance) return false;
         }
Index: applications/editors/josm/plugins/turnlanes/build.xml
===================================================================
--- applications/editors/josm/plugins/turnlanes/build.xml	(revision 35977)
+++ applications/editors/josm/plugins/turnlanes/build.xml	(revision 35978)
@@ -5,5 +5,5 @@
     <property name="commit.message" value="fix toolbar warnings - toolbar still does not work"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="14153"/>
+    <property name="plugin.main.version" value="18494"/>
 
     <!--
Index: applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/GuiContainer.java
===================================================================
--- applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/GuiContainer.java	(revision 35977)
+++ applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/GuiContainer.java	(revision 35978)
@@ -18,5 +18,5 @@
 
 import org.openstreetmap.josm.data.coor.EastNorth;
-import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.coor.ILatLon;
 import org.openstreetmap.josm.data.projection.ProjectionRegistry;
 import org.openstreetmap.josm.plugins.turnlanes.model.Junction;
@@ -53,6 +53,6 @@
         final Point2D origin = avgOrigin(locs(mc.getPrimaryJunctions()));
 
-        final LatLon originCoor = ProjectionRegistry.getProjection().eastNorth2latlon(new EastNorth(origin.getX(), origin.getY()));
-        final LatLon relCoor = ProjectionRegistry.getProjection().eastNorth2latlon(
+        final ILatLon originCoor = ProjectionRegistry.getProjection().eastNorth2latlon(new EastNorth(origin.getX(), origin.getY()));
+        final ILatLon relCoor = ProjectionRegistry.getProjection().eastNorth2latlon(
                 new EastNorth(origin.getX() + 1, origin.getY() + 1));
 
Index: applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Route.java
===================================================================
--- applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Route.java	(revision 35977)
+++ applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Route.java	(revision 35978)
@@ -52,5 +52,5 @@
             Node last = nodes.get(0);
             for (Node n : nodes.subList(1, nodes.size())) {
-                length += last.getCoor().greatCircleDistance(n.getCoor());
+                length += last.greatCircleDistance(n);
                 last = n;
             }
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/curves/CircleArcMaker.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/curves/CircleArcMaker.java	(revision 35977)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/curves/CircleArcMaker.java	(revision 35978)
@@ -22,5 +22,5 @@
 import org.openstreetmap.josm.data.UndoRedoHandler;
 import org.openstreetmap.josm.data.coor.EastNorth;
-import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.coor.ILatLon;
 import org.openstreetmap.josm.data.coor.PolarCoor;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -108,6 +108,6 @@
 
         // see #10777: calculate reasonable number of nodes for full circle (copy from CreateCircleAction)
-        LatLon ll1 = ProjectionRegistry.getProjection().eastNorth2latlon(p1);
-        LatLon ll2 = ProjectionRegistry.getProjection().eastNorth2latlon(center);
+        ILatLon ll1 = ProjectionRegistry.getProjection().eastNorth2latlon(p1);
+        ILatLon ll2 = ProjectionRegistry.getProjection().eastNorth2latlon(center);
 
         double radiusInMeters = ll1.greatCircleDistance(ll2);
