Index: applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/utils/RouteUtils.java
===================================================================
--- applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/utils/RouteUtils.java	(revision 33512)
+++ applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/utils/RouteUtils.java	(revision 33513)
@@ -20,5 +20,5 @@
 
     private static final String PT_VERSION_TAG = "public_transport:version";
-    private static final String TAG_ROUTE = "route";
+    public static final String TAG_ROUTE = "route";
     private RouteUtils() {
         // private constructor for util classes
Index: applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/WayChecker.java
===================================================================
--- applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/WayChecker.java	(revision 33512)
+++ applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/WayChecker.java	(revision 33513)
@@ -42,6 +42,6 @@
     protected void performRoadTypeTest() {
 
-        if (!relation.hasTag("route", "bus") && !relation.hasTag("route", "trolleybus")
-                && !relation.hasTag("route", "share_taxi")) {
+        if (!relation.hasTag(RouteUtils.TAG_ROUTE, "bus") && !relation.hasTag(RouteUtils.TAG_ROUTE, "trolleybus")
+                && !relation.hasTag(RouteUtils.TAG_ROUTE, "share_taxi")) {
             return;
         }
@@ -59,5 +59,5 @@
                     isUnderConstruction = true;
                 }
-                if (relation.hasTag("route", "bus") || relation.hasTag("route", "share_taxi")) {
+                if (relation.hasTag(RouteUtils.TAG_ROUTE, "bus") || relation.hasTag(RouteUtils.TAG_ROUTE, "share_taxi")) {
                     if (!RouteUtils.isWaySuitableForBuses(way)) {
                         isCorrectRoadType = false;
@@ -66,5 +66,5 @@
                         isUnderConstruction = true;
                     }
-                } else if (relation.hasTag("route", "trolleybus")) {
+                } else if (relation.hasTag(RouteUtils.TAG_ROUTE, "trolleybus")) {
                     if (!(RouteUtils.isWaySuitableForBuses(way) && way.hasTag("trolley_wire", "yes"))) {
                         isCorrectRoadType = false;
@@ -73,5 +73,5 @@
                         isUnderConstruction = true;
                     }
-                } else if (relation.hasTag("route", "tram")) {
+                } else if (relation.hasTag(RouteUtils.TAG_ROUTE, "tram")) {
                     if (!way.hasTag("railway", "tram")) {
                         isCorrectRoadType = false;
@@ -80,5 +80,5 @@
                         isUnderConstruction = true;
                     }
-                } else if (relation.hasTag("route", "subway", "light_rail")) {
+                } else if (relation.hasTag(RouteUtils.TAG_ROUTE, "subway", "light_rail")) {
                     if (!way.hasTag("railway", "subway")) {
                         isCorrectRoadType = false;
@@ -87,5 +87,5 @@
                         isUnderConstruction = true;
                     }
-                } else if (relation.hasTag("route", "light_rail")) {
+                } else if (relation.hasTag(RouteUtils.TAG_ROUTE, "light_rail")) {
                     if (!way.hasTag("railway", "light_rail")) {
                         isCorrectRoadType = false;
@@ -94,5 +94,5 @@
                         isUnderConstruction = true;
                     }
-                } else if (relation.hasTag("route", "train")) {
+                } else if (relation.hasTag(RouteUtils.TAG_ROUTE, "train")) {
                     if (!way.hasTag("railway", "rail", "narrow_gauge")) {
                         isCorrectRoadType = false;
@@ -240,37 +240,31 @@
         }
 
-        if (prev != null) {
-
-            if (RouteUtils.waysTouch(curr, prev)) {
-                Node nodeInQuestion;
-                if (RouteUtils.isOnewayForPublicTransport(curr) == 1) {
-                    nodeInQuestion = curr.firstNode();
-                } else {
-                    nodeInQuestion = curr.lastNode();
-                }
-
-                List<Way> nb = findNeighborWays(curr, nodeInQuestion);
-
-                if (nb.size() < 2 && nodeInQuestion != prev.firstNode() && nodeInQuestion != prev.lastNode()) {
-                    return false;
-                }
-            }
-        }
-
-        if (next != null) {
-
-            if (RouteUtils.waysTouch(curr, next)) {
-                Node nodeInQuestion;
-                if (RouteUtils.isOnewayForPublicTransport(curr) == 1) {
-                    nodeInQuestion = curr.lastNode();
-                } else {
-                    nodeInQuestion = curr.firstNode();
-                }
-
-                List<Way> nb = findNeighborWays(curr, nodeInQuestion);
-
-                if (nb.size() < 2 && nodeInQuestion != next.firstNode() && nodeInQuestion != next.lastNode()) {
-                    return false;
-                }
+        if (prev != null && RouteUtils.waysTouch(curr, prev)) {
+            Node nodeInQuestion;
+            if (RouteUtils.isOnewayForPublicTransport(curr) == 1) {
+                nodeInQuestion = curr.firstNode();
+            } else {
+                nodeInQuestion = curr.lastNode();
+            }
+
+            List<Way> nb = findNeighborWays(curr, nodeInQuestion);
+
+            if (nb.size() < 2 && nodeInQuestion != prev.firstNode() && nodeInQuestion != prev.lastNode()) {
+                return false;
+            }
+        }
+
+        if (next != null && RouteUtils.waysTouch(curr, next)) {
+            Node nodeInQuestion;
+            if (RouteUtils.isOnewayForPublicTransport(curr) == 1) {
+                nodeInQuestion = curr.lastNode();
+            } else {
+                nodeInQuestion = curr.firstNode();
+            }
+
+            List<Way> nb = findNeighborWays(curr, nodeInQuestion);
+
+            if (nb.size() < 2 && nodeInQuestion != next.firstNode() && nodeInQuestion != next.lastNode()) {
+                return false;
             }
         }
@@ -288,5 +282,5 @@
 
         if (RouteUtils.isOnewayForPublicTransport(curr) == 0) {
-            return null;
+            return resultSet;
         }
 
@@ -310,12 +304,9 @@
             }
 
-            if (RouteUtils.isOnewayForPublicTransport(nb) == 1 && nb.firstNode() == firstNodeInRouteDirection) {
-                Set<Way> newSet = this.checkAdjacentWays(nb, resultSet);
+            int oneway = RouteUtils.isOnewayForPublicTransport(nb);
+            if ((oneway == 1 && nb.firstNode() == firstNodeInRouteDirection) ||
+                    (oneway == -1 && nb.lastNode() == firstNodeInRouteDirection)) {
+                Set<Way> newSet = checkAdjacentWays(nb, resultSet);
                 resultSet.addAll(newSet);
-
-            } else if (RouteUtils.isOnewayForPublicTransport(nb) == -1 && nb.lastNode() == firstNodeInRouteDirection) {
-                Set<Way> newSet = this.checkAdjacentWays(nb, resultSet);
-                resultSet.addAll(newSet);
-
             }
         }
@@ -327,16 +318,13 @@
             }
 
-            if (RouteUtils.isOnewayForPublicTransport(nb) == 1 && nb.lastNode() == lastNodeInRouteDirection) {
-                Set<Way> newSet = this.checkAdjacentWays(nb, resultSet);
+            int oneway = RouteUtils.isOnewayForPublicTransport(nb);
+            if ((oneway == 1 && nb.lastNode() == lastNodeInRouteDirection) ||
+                    (oneway == -1 && nb.firstNode() == lastNodeInRouteDirection)) {
+                Set<Way> newSet = checkAdjacentWays(nb, resultSet);
                 resultSet.addAll(newSet);
-            } else if (RouteUtils.isOnewayForPublicTransport(nb) == -1 && nb.firstNode() == lastNodeInRouteDirection) {
-                Set<Way> newSet = this.checkAdjacentWays(nb, resultSet);
-                resultSet.addAll(newSet);
-            }
-
+            }
         }
 
         return resultSet;
-
     }
 
@@ -443,7 +431,5 @@
         modifiedRelation.setMembers(modifiedRelationMembers);
 
-        ChangeCommand changeCommand = new ChangeCommand(originalRelation, modifiedRelation);
-
-        return changeCommand;
+        return new ChangeCommand(originalRelation, modifiedRelation);
     }
 
