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 33469)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/gui/PTAssistantLayerManager.java	(revision 33470)
@@ -42,5 +42,8 @@
         for (OsmPrimitive primitive : newSelection) {
             if (primitive.getType().equals(OsmPrimitiveType.RELATION)
-                    && RouteUtils.isVersionTwoPTRoute((Relation) primitive)) {
+                    && (RouteUtils.isVersionTwoPTRoute((Relation) primitive)
+                        || RouteUtils.isBicycleRoute((Relation) primitive)
+                        || RouteUtils.isFootRoute((Relation) primitive)
+                        || RouteUtils.isHorseRoute((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 33469)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/gui/PTAssistantPaintVisitor.java	(revision 33470)
@@ -24,4 +24,6 @@
 import org.openstreetmap.josm.data.validation.PaintVisitor;
 import org.openstreetmap.josm.gui.MapView;
+import org.openstreetmap.josm.gui.dialogs.relation.sort.WayConnectionType;
+import org.openstreetmap.josm.gui.dialogs.relation.sort.WayConnectionTypeCalculator;
 import org.openstreetmap.josm.plugins.pt_assistant.data.PTStop;
 import org.openstreetmap.josm.plugins.pt_assistant.data.PTWay;
@@ -56,4 +58,11 @@
     @Override
     public void visit(Relation r) {
+
+        if (RouteUtils.isBicycleRoute(r)
+                || RouteUtils.isFootRoute(r)
+                || RouteUtils.isHorseRoute(r)) {
+            drawCycleRoute(r);
+            return;
+        }
 
         // first, draw primitives:
@@ -116,4 +125,31 @@
     }
 
+    private void drawCycleRoute(Relation r) {
+
+        List<RelationMember> members = new ArrayList<>(r.getMembers());
+        members.removeIf(m -> !m.isWay());
+        WayConnectionTypeCalculator connectionTypeCalculator = new WayConnectionTypeCalculator();
+        List<WayConnectionType> links = connectionTypeCalculator.updateLinks(members);
+
+        for (int i = 0; i < links.size(); i++) {
+            WayConnectionType link = links.get(i);
+            Way way = members.get(i).getWay();
+            if (!link.isOnewayLoopForwardPart && !link.isOnewayLoopBackwardPart) {
+                drawWay(way, new Color(0, 255, 255, 100));
+            } else if (link.isOnewayLoopForwardPart) {
+                drawWay(way, new Color(255, 0, 0, 100));
+            } else {
+                drawWay(way, new Color(0, 0, 255, 100));
+            }
+        }
+    }
+
+    private void drawWay(Way way, Color color) {
+        List<Node> nodes = way.getNodes();
+        for (int i = 0; i < nodes.size()-1; i++) {
+            drawSegment(nodes.get(i), nodes.get(i + 1), color, 1);
+        }
+    }
+
     @Override
     public void visit(Way w) {
