Index: applications/editors/josm/plugins/tracer2/src/org/openstreetmap/josm/plugins/tracer2/ConnectWays.java
===================================================================
--- applications/editors/josm/plugins/tracer2/src/org/openstreetmap/josm/plugins/tracer2/ConnectWays.java	(revision 35975)
+++ applications/editors/josm/plugins/tracer2/src/org/openstreetmap/josm/plugins/tracer2/ConnectWays.java	(revision 35976)
@@ -82,8 +82,7 @@
 	}
 
-	private static double calcAlpha(LatLon oP1, Node n) {
-		LatLon oP2 = n.getCoor();
-
-		double dAlpha = Math.atan((oP2.getY() - oP1.getY()) / (oP2.getX() - oP1.getX())) * 180 / Math.PI + (oP1.getX() > oP2.getX() ? 180 : 0);
+	private static double calcAlpha(LatLon oP1, Node oP2) {
+
+		double dAlpha = Math.atan((oP2.lat() - oP1.lat()) / (oP2.lon() - oP1.lon())) * 180 / Math.PI + (oP1.lon() > oP2.lon() ? 180 : 0);
 		return checkAlpha(dAlpha);
 	}
@@ -333,5 +332,5 @@
 		//List<Command> cmds = new LinkedList<Command>();
 
-		LatLon ll = node.getCoor();
+		//LatLon ll = node.getCoor();
 		//BBox bbox = new BBox(
 		//        ll.getX() - MIN_DISTANCE_TW,
@@ -358,5 +357,5 @@
 			for (Pair<Node, Node> np : ww.getNodePairs(false)) {
 				//double dist1 = TracerGeometry.distanceFromSegment(ll, np.a.getCoor(), np.b.getCoor());
-				double dist = distanceFromSegment2(ll, np.a.getCoor(), np.b.getCoor());
+				double dist = distanceFromSegment2(node, np.a, np.b);
 				//System.out.println(" distance: " + dist1 + "  " + dist);
 
@@ -381,23 +380,23 @@
 	}
 
-	private static double distanceFromSegment2(LatLon c, LatLon a, LatLon b) {
+	private static double distanceFromSegment2(ILatLon c, ILatLon a, ILatLon b) {
 		double x;
 		double y;
 
 		StraightLine oStraightLine1 = new StraightLine(
-				new Point2D.Double(a.getX(), a.getY()),
-				new Point2D.Double(b.getX(), b.getY()));
+				new Point2D.Double(a.lon(), a.lat()),
+				new Point2D.Double(b.lon(), b.lat()));
 		StraightLine oStraightLine2 = new StraightLine(
-				new Point2D.Double(c.getX(), c.getY()),
-				new Point2D.Double(c.getX() + (a.getY()-b.getY()), c.getY() - (a.getX()-b.getX())));
+				new Point2D.Double(c.lon(), c.lat()),
+				new Point2D.Double(c.lon() + (a.lat()-b.lat()), c.lat() - (a.lon()-b.lon())));
 		Point2D.Double oPoint = oStraightLine1.GetIntersectionPoint(oStraightLine2);
 
-		if ((oPoint.x > a.getX() && oPoint.x > b.getX()) || (oPoint.x < a.getX() && oPoint.x < b.getX()) ||
-				(oPoint.y > a.getY() && oPoint.y > b.getY()) || (oPoint.y < a.getY() && oPoint.y < b.getY())) {
+		if ((oPoint.x > a.lon() && oPoint.x > b.lon()) || (oPoint.x < a.lon() && oPoint.x < b.lon()) ||
+				(oPoint.y > a.lat() && oPoint.y > b.lat()) || (oPoint.y < a.lat() && oPoint.y < b.lat())) {
 			return 100000;
 		}
 
-		x = c.getX()-oPoint.getX();
-		y = c.getY()-oPoint.getY();
+		x = c.lon()-oPoint.getX();
+		y = c.lat()-oPoint.getY();
 
 		return Math.sqrt((x*x)+(y*y));
@@ -421,6 +420,6 @@
 		while (i < way.getNodesCount()) {
 			// usecka n1, n2
-			LatLon n1 = way.getNodes().get(i).getCoor();
-			LatLon n2 = way.getNodes().get((i + 1) % way.getNodesCount()).getCoor();
+			ILatLon n1 = way.getNodes().get(i);
+			ILatLon n2 = way.getNodes().get((i + 1) % way.getNodesCount());
 			System.out.println(way.getNodes().get(i) + "-----" + way.getNodes().get((i + 1) % way.getNodesCount()));
 			double minDistanceSq = Double.MAX_VALUE;
@@ -438,11 +437,10 @@
 					continue;
 				}
-				LatLon nn = nod.getCoor();
-				//double dist = TracerGeometry.distanceFromSegment(nn, n1, n2);
-				double dist = distanceFromSegment2(nn, n1, n2);
-				//                double angle = TracerGeometry.angleOfLines(n1, nn, nn, n2);
+				//double dist = TracerGeometry.distanceFromSegment(nod, n1, n2);
+				double dist = distanceFromSegment2(nod, n1, n2);
+				//                double angle = TracerGeometry.angleOfLines(n1, nod, nod, n2);
 				//System.out.println("Angle: " + angle + " distance: " + dist + " Node: " + nod);
-				if (!n1.equalsEpsilon(nn, ILatLon.MAX_SERVER_PRECISION)
-				 && !n2.equalsEpsilon(nn, ILatLon.MAX_SERVER_PRECISION) && dist < minDistanceSq) { // && Math.abs(angle) < maxAngle) {
+				if (!n1.equalsEpsilon(nod, ILatLon.MAX_SERVER_PRECISION)
+				 && !n2.equalsEpsilon(nod, ILatLon.MAX_SERVER_PRECISION) && dist < minDistanceSq) { // && Math.abs(angle) < maxAngle) {
 					minDistanceSq = dist;
 					//                    maxAngle = angle;
