Index: /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/data/PTRouteDataManager.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/data/PTRouteDataManager.java	(revision 32894)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/data/PTRouteDataManager.java	(revision 32895)
@@ -4,4 +4,5 @@
 import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import org.openstreetmap.josm.data.coor.LatLon;
@@ -34,5 +35,5 @@
 	 * expected in the model for public_transport version 2
 	 */
-	private List<RelationMember> failedMembers = new ArrayList<>();
+	private Set<RelationMember> failedMembers = new HashSet<>();
 
 	public PTRouteDataManager(Relation relation) throws IllegalArgumentException {
@@ -45,5 +46,5 @@
 
 		PTStop prev = null; // stores the last created PTStop
-		
+
 		for (RelationMember member : this.relation.getMembers()) {
 
@@ -64,5 +65,5 @@
 							stopExists = true;
 						}
-						
+
 					} else {
 
@@ -88,7 +89,20 @@
 				} else {
 					// this PTStop does not exist yet, so create it:
-					PTStop ptstop = new PTStop(member);
-					ptstops.add(ptstop);
-					prev = ptstop;
+
+					try {
+						PTStop ptstop = new PTStop(member);
+						ptstops.add(ptstop);
+						prev = ptstop;
+					} catch (IllegalArgumentException ex) {
+						if (ex.getMessage().equals(
+								"The RelationMember type does not match its role " + member.getMember().getName())) {
+							if (!failedMembers.contains(member)) {
+								failedMembers.add(member);
+							}
+						} else {
+							throw ex;
+						}
+					}
+
 				}
 
@@ -99,7 +113,8 @@
 
 			} else {
-			
-				this.failedMembers.add(member);
-				
+				if (!failedMembers.contains(member)) {
+					failedMembers.add(member);
+				}
+
 			}
 
@@ -183,5 +198,5 @@
 	}
 
-	public List<RelationMember> getFailedMembers() {
+	public Set<RelationMember> getFailedMembers() {
 		return this.failedMembers;
 	}
@@ -399,15 +414,16 @@
 		return null;
 	}
-	
+
 	/**
 	 * Returns the last way of this route
+	 * 
 	 * @return
 	 */
 	public Way getLastWay() {
-		PTWay lastPTWay = this.ptways.get(ptways.size()-1);
+		PTWay lastPTWay = this.ptways.get(ptways.size() - 1);
 		if (lastPTWay == null) {
 			return null;
 		}
-		return lastPTWay.getWays().get(lastPTWay.getWays().size()-1);
+		return lastPTWay.getWays().get(lastPTWay.getWays().size() - 1);
 	}
 
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 32894)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/gui/PTAssistantPaintVisitor.java	(revision 32895)
@@ -303,5 +303,5 @@
 		g.setColor(Color.BLUE);
 
-		if (primitive.hasTag("public_transport", "stop_position")) {
+		if (primitive.hasTag("public_transport", "stop_position") && p != null) {
 			g.fillOval(p.x - 8, p.y - 8, 16, 16);
 		} else {
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 32894)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/utils/RouteUtils.java	(revision 32895)
@@ -62,17 +62,7 @@
 	public static boolean isPTStop(RelationMember rm) {
 
-		// if (rm.hasRole("stop") || rm.hasRole("stop_entry_only") ||
-		// rm.hasRole("stop_exit_only")
-		// || rm.hasRole("platform") || rm.hasRole("platform_entry_only") ||
-		// rm.hasRole("platform_exit_only")) {
 
 		if (rm.getType().equals(OsmPrimitiveType.NODE)) {
-
-			if (rm.getNode().hasTag("public_transport", "stop_position") || rm.getNode().hasTag("highway", "bus_stop")
-					|| rm.getNode().hasTag("public_transport", "platform") || rm.getNode().hasTag("highway", "platform")
-					|| rm.getNode().hasTag("railway", "platform")) {
 				return true;
-
-			}
 		}
 
@@ -83,5 +73,4 @@
 			}
 		}
-		// }
 
 		return false;
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 32894)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/PTAssistantValidatorTest.java	(revision 32895)
@@ -308,5 +308,5 @@
 	private int showProceedDialog(long id, int numberOfDirectionErrors, int numberOfRoadTypeErrors) {
 
-		if (numberOfDirectionErrors == 0 && numberOfDirectionErrors == 0) {
+		if (numberOfDirectionErrors == 0 && numberOfRoadTypeErrors == 0) {
 			return 2;
 		}
@@ -395,6 +395,10 @@
 			segmentChecker.findFixes();
 		}
-
-		this.errors.addAll(segmentChecker.getErrors());
+		
+		for (TestError error: segmentChecker.getErrors()) {
+			if (error.getCode() != PTAssistantValidatorTest.ERROR_CODE_RELAITON_MEMBER_ROLES) {
+				this.errors.add(error);
+			}
+		}
 	}
 
