Index: /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/IncompleteMembersDownloadThread.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/IncompleteMembersDownloadThread.java	(revision 33413)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/IncompleteMembersDownloadThread.java	(revision 33414)
@@ -41,5 +41,5 @@
                 for (Relation currentSelectedRelation : Main.getLayerManager().getEditDataSet()
                         .getSelectedRelations()) {
-                    if (RouteUtils.isTwoDirectionRoute(currentSelectedRelation)) {
+                    if (RouteUtils.isVersionTwoPTRoute(currentSelectedRelation)) {
                         list.add(currentSelectedRelation);
                     }
@@ -51,5 +51,5 @@
                     Collection<Relation> allRelations = Main.getLayerManager().getEditDataSet().getRelations();
                     for (Relation currentRelation : allRelations) {
-                        if (RouteUtils.isTwoDirectionRoute(currentRelation)) {
+                        if (RouteUtils.isVersionTwoPTRoute(currentRelation)) {
                             list.add(currentRelation);
                         }
Index: /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/SplitRoundaboutAction.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/SplitRoundaboutAction.java	(revision 33413)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/SplitRoundaboutAction.java	(revision 33414)
@@ -113,41 +113,41 @@
     public void updateRelations(Map<Relation, List<Integer>> savedPositions,
             List<Node> splitNodes, Collection<Way> splitWays) {
-    	Map<Relation, Integer> memberOffset = new HashMap<>();
+        Map<Relation, Integer> memberOffset = new HashMap<>();
         savedPositions.forEach((r, positions) ->
-        	positions.forEach(i -> {
-
-	            if(!memberOffset.containsKey(r))
-	            	memberOffset.put(r, 0);
-	            int offset = memberOffset.get(r);
-
-	            Pair<Way, Way> entryExitWays= getEntryExitWays(r, i + offset);
-	            Way entryWay = entryExitWays.a;
-	            Way exitWay = entryExitWays.b;
-
-	            //get the entry and exit nodes, exit if not found
-	            Node entryNode = getNodeInCommon(splitNodes, entryWay);
-	            Node exitNode = getNodeInCommon(splitNodes, exitWay);
-
-	            if(entryNode == null || exitNode == null)
-	                return;
-
-	            //starting from the entry node, add split ways until the
-	            //exit node is reached
-	            List<Way> parents = entryNode.getParentWays();
-	            parents.removeIf(w -> !w.firstNode().equals(entryNode));
-	            parents.removeIf(w -> w.equals(entryWay));
-
-	            Way curr = parents.get(0);
-
-	            while(!curr.lastNode().equals(exitNode)) {
-	                r.addMember(i + offset++, new RelationMember(null, curr));
-	                parents = curr.lastNode().getParentWays();
-	                parents.remove(curr);
-	                parents.removeIf(w -> !splitWays.contains(w));
-	                curr = parents.get(0);
-	            }
-	            r.addMember(i + offset++, new RelationMember(null, curr));
-	            memberOffset.put(r, offset);
-        	}));
+            positions.forEach(i -> {
+
+                if(!memberOffset.containsKey(r))
+                    memberOffset.put(r, 0);
+                int offset = memberOffset.get(r);
+
+                Pair<Way, Way> entryExitWays= getEntryExitWays(r, i + offset);
+                Way entryWay = entryExitWays.a;
+                Way exitWay = entryExitWays.b;
+
+                //get the entry and exit nodes, exit if not found
+                Node entryNode = getNodeInCommon(splitNodes, entryWay);
+                Node exitNode = getNodeInCommon(splitNodes, exitWay);
+
+                if(entryNode == null || exitNode == null)
+                    return;
+
+                //starting from the entry node, add split ways until the
+                //exit node is reached
+                List<Way> parents = entryNode.getParentWays();
+                parents.removeIf(w -> !w.firstNode().equals(entryNode));
+                parents.removeIf(w -> w.equals(entryWay));
+
+                Way curr = parents.get(0);
+
+                while(!curr.lastNode().equals(exitNode)) {
+                    r.addMember(i + offset++, new RelationMember(null, curr));
+                    parents = curr.lastNode().getParentWays();
+                    parents.remove(curr);
+                    parents.removeIf(w -> !splitWays.contains(w));
+                    curr = parents.get(0);
+                }
+                r.addMember(i + offset++, new RelationMember(null, curr));
+                memberOffset.put(r, offset);
+            }));
     }
 
@@ -165,9 +165,9 @@
     private Pair<Way, Way> getEntryExitWays(Relation r, Integer position) {
 
-    	//the ways returned are the one exactly before and after the roundabout
-    	Pair<Way, Way> ret = new Pair<>(null, null);
-    	ret.a = r.getMember(position-1).getWay();
-    	ret.b = r.getMember(position).getWay();
-    	return ret;
+        //the ways returned are the one exactly before and after the roundabout
+        Pair<Way, Way> ret = new Pair<>(null, null);
+        ret.a = r.getMember(position-1).getWay();
+        ret.b = r.getMember(position).getWay();
+        return ret;
     }
 
@@ -186,5 +186,5 @@
                 for(OsmPrimitive prim : parent.getReferrers()) {
                     if(prim.getType() == OsmPrimitiveType.RELATION &&
-                            RouteUtils.isTwoDirectionRoute((Relation) prim))
+                            RouteUtils.isPTRoute((Relation) prim))
                         return false;
                 }
@@ -203,5 +203,5 @@
         List <OsmPrimitive> referrers = roundabout.getReferrers();
         referrers.removeIf(r -> r.getType() != OsmPrimitiveType.RELATION
-                || !RouteUtils.isTwoDirectionRoute((Relation) r));
+                || !RouteUtils.isPTRoute((Relation) r));
 
         for(OsmPrimitive currPrim : referrers) {
@@ -210,12 +210,12 @@
                 if(curr.getMember(j).getUniqueId() == roundabout.getUniqueId()) {
                     if(!savedPositions.containsKey(curr))
-                    	savedPositions.put(curr, new ArrayList<>());
-                	List<Integer> positions = savedPositions.get(curr);
-                	positions.add(j - positions.size());
+                        savedPositions.put(curr, new ArrayList<>());
+                    List<Integer> positions = savedPositions.get(curr);
+                    positions.add(j - positions.size());
                 }
             }
 
             if(savedPositions.containsKey(curr))
-            	curr.removeMembersFor(roundabout);
+                curr.removeMembersFor(roundabout);
         }
 
@@ -232,5 +232,7 @@
         if(selected.getType() != OsmPrimitiveType.WAY)
             return;
-        if(((Way)selected).isClosed() && selected.hasTag("junction", "roundabout")) {
+        if(((Way)selected).isClosed()
+                && (selected.hasTag("junction", "roundabout")
+                        || selected.hasTag("oneway", "yes"))) {
             setEnabled(true);
             return;
Index: /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/gui/PTAssistantLayer.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/gui/PTAssistantLayer.java	(revision 33413)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/gui/PTAssistantLayer.java	(revision 33414)
@@ -207,5 +207,5 @@
                 Relation relation = editor.getRelation();
 
-                if (RouteUtils.isTwoDirectionRoute(relation)) {
+                if (RouteUtils.isVersionTwoPTRoute(relation)) {
                     this.repaint(relation);
 
Index: /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/gui/PTAssistantLayerManager.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/gui/PTAssistantLayerManager.java	(revision 33413)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/gui/PTAssistantLayerManager.java	(revision 33414)
@@ -38,6 +38,6 @@
         for (OsmPrimitive primitive : newSelection) {
             if (primitive.getType().equals(OsmPrimitiveType.RELATION)
-            		&& RouteUtils.isTwoDirectionRoute((Relation) primitive)) {
-                    routes.add(primitive);
+            		&& RouteUtils.isVersionTwoPTRoute((Relation) primitive)) {
+            	routes.add(primitive);
             }
         }
Index: /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/gui/PTAssistantPaintVisitor.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/gui/PTAssistantPaintVisitor.java	(revision 33413)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/gui/PTAssistantPaintVisitor.java	(revision 33414)
@@ -346,5 +346,5 @@
             if (parent.getType().equals(OsmPrimitiveType.RELATION)) {
                 Relation relation = (Relation) parent;
-                if (RouteUtils.isTwoDirectionRoute(relation) && relation.get("ref") != null
+                if (RouteUtils.isVersionTwoPTRoute(relation) && relation.get("ref") != null
                         && !relation.get("ref").equals("")) {
 
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 33413)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/utils/RouteUtils.java	(revision 33414)
@@ -19,4 +19,5 @@
 public final class RouteUtils {
 
+	private final static String ptVersionTag = "public_transport:version";
     private RouteUtils() {
         // private constructor for util classes
@@ -32,5 +33,31 @@
      *         with the pt_assistant plugin, false otherwise.
      */
-    public static boolean isTwoDirectionRoute(Relation r) {
+    public static boolean isVersionTwoPTRoute(Relation r) {
+
+        if(!isPTRoute(r)) {
+            return false;
+        }
+
+        if (!r.hasTag(ptVersionTag, "2")) {
+            return false;
+        }
+
+        return !r.hasTag("bus", "on_demand");
+    }
+
+    public static boolean isVersionOnePTRoute(Relation r) {
+
+        if(!isPTRoute(r)) {
+            return false;
+        }
+
+        if(r.get(ptVersionTag) == null) {
+            return true;
+        }
+
+        return r.hasTag(ptVersionTag, "1");
+    }
+
+    public static boolean isPTRoute(Relation r) {
 
         if (r == null) {
@@ -38,14 +65,9 @@
         }
 
-        if (!r.hasKey("route") || !r.hasTag("public_transport:version", "2")) {
-            return false;
-        }
-
         String [] acceptedRouteTags = new String[] {
-        		"bus", "trolleybus", "share_taxi",
+                "bus", "trolleybus", "share_taxi",
                 "tram", "light_rail", "subway", "train"};
 
-        return r.hasTag("route", acceptedRouteTags)
-             && !r.hasTag("bus", "on_demand");
+        return r.hasTag("route", acceptedRouteTags);
     }
 
@@ -66,5 +88,5 @@
         return (rm.getType().equals(OsmPrimitiveType.WAY))
             && (rm.getWay().hasTag("public_transport", "platform")
-            		|| rm.getWay().hasTag("highway", "platform")
+                    || rm.getWay().hasTag("highway", "platform")
                     || rm.getWay().hasTag("railway", "platform"));
     }
@@ -88,5 +110,5 @@
         if (rm.getType().equals(OsmPrimitiveType.WAY)) {
             return !(rm.getWay().hasTag("public_transport", "platform")
-            		|| rm.getWay().hasTag("highway", "platform")
+                    || rm.getWay().hasTag("highway", "platform")
                     || rm.getWay().hasTag("railway", "platform"));
         }
@@ -115,5 +137,5 @@
 
         if (OsmUtils.isTrue(way.get("oneway"))
-        		|| OsmUtils.isReversed(way.get("oneway"))
+                || OsmUtils.isReversed(way.get("oneway"))
                 || way.hasTag("junction", "roundabout")
                 || way.hasTag("highway", "motorway")) {
@@ -121,5 +143,5 @@
             if (!way.hasTag("busway", "lane")
                     && !way.hasTag("busway", "opposite_lane")
-            		&& !way.hasTag("busway:left", "lane")
+                    && !way.hasTag("busway:left", "lane")
                     && !way.hasTag("busway:right", "lane")
                     && !way.hasTag("oneway:bus", "no")
@@ -155,6 +177,6 @@
 
         return w1FirstNode == w2FirstNode
-        		|| w1FirstNode == w2LastNode
-        		|| w1LastNode == w2FirstNode
+                || w1FirstNode == w2LastNode
+                || w1LastNode == w2FirstNode
                 || w1LastNode == w2LastNode;
     }
@@ -195,11 +217,11 @@
     public static boolean isWaySuitableForBuses(Way way) {
 
-    	String [] acceptedHighwayTags = new String [] {
-    			"motorway", "trunk", "primary", "secondary", "tertiary",
+        String [] acceptedHighwayTags = new String [] {
+                "motorway", "trunk", "primary", "secondary", "tertiary",
                 "unclassified" , "road", "residential", "service",
                 "motorway_link", "trunk_link", "primary_link", "secondary_link",
                 "tertiary_link", "living_street", "bus_guideway", "road"};
 
-    	if(way.hasTag("highway", acceptedHighwayTags)
+        if(way.hasTag("highway", acceptedHighwayTags)
                 || way.hasTag("cycleway", "share_busway")
                 || way.hasTag("cycleway", "shared_lane")) {
@@ -207,13 +229,7 @@
         }
 
-        if (way.hasTag("highway", "pedestrian")
-        		&& (way.hasTag("bus", "yes")
-        				|| way.hasTag("psv", "yes")
-        				|| way.hasTag("bus", "designated")
-        				|| way.hasTag("psv", "designated"))) {
-            return true;
-        }
-
-        return false;
+        return (way.hasTag("highway", "pedestrian")
+                && (way.hasTag("bus", "yes", "designated")
+                    || way.hasTag("psv", "yes", "designated")));
     }
 
@@ -225,9 +241,9 @@
     public static boolean isWaySuitableForPublicTransport(Way way) {
 
-    	String [] acceptedRailwayTags = new String [] {
-    			"tram", "subway", "light_rail", "rail"};
+        String [] acceptedRailwayTags = new String [] {
+                "tram", "subway", "light_rail", "rail"};
 
         return isWaySuitableForBuses(way)
-        		|| way.hasTag("railway", acceptedRailwayTags);
+                || way.hasTag("railway", acceptedRailwayTags);
     }
 }
Index: /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/PTAssistantValidatorTest.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/PTAssistantValidatorTest.java	(revision 33413)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/PTAssistantValidatorTest.java	(revision 33414)
@@ -144,5 +144,5 @@
 		}
 
-		if (!RouteUtils.isTwoDirectionRoute(r)) {
+		if (!RouteUtils.isVersionTwoPTRoute(r)) {
 			return;
 		}
Index: /applications/editors/josm/plugins/pt_assistant/test/unit/org/openstreetmap/josm/plugins/pt_assistant/validation/SegmentCheckerTest.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/test/unit/org/openstreetmap/josm/plugins/pt_assistant/validation/SegmentCheckerTest.java	(revision 33413)
+++ /applications/editors/josm/plugins/pt_assistant/test/unit/org/openstreetmap/josm/plugins/pt_assistant/validation/SegmentCheckerTest.java	(revision 33414)
@@ -26,5 +26,5 @@
 
         for (Relation r: ds.getRelations()) {
-            if (RouteUtils.isTwoDirectionRoute(r)) {
+            if (RouteUtils.isVersionTwoPTRoute(r)) {
                 route = r;
                 break;
