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 32520)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/gui/PTAssistantLayer.java	(revision 32521)
@@ -11,4 +11,5 @@
 import javax.swing.Action;
 import javax.swing.Icon;
+import javax.swing.JOptionPane;
 
 import org.openstreetmap.josm.Main;
@@ -57,5 +58,5 @@
 	@Override
 	public void paint(final Graphics2D g, final MapView mv, Bounds bounds) {
-
+		
 		paintVisitor = new PTAssistantPaintVisitor(g, mv);
 		for (OsmPrimitive primitive : primitives) {
@@ -162,4 +163,5 @@
 					if (!Main.getLayerManager().containsLayer(this)) {
 						Main.getLayerManager().addLayer(this);
+						Main.map.repaint();
 					}
 
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 32520)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/gui/PTAssistantPaintVisitor.java	(revision 32521)
@@ -6,5 +6,8 @@
 import java.awt.Point;
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 
@@ -39,7 +42,6 @@
 
 			if (RouteUtils.isPTStop(rm)) {
-				
+
 				drawStop(rm.getMember());
-
 
 			} else if (RouteUtils.isPTWay(rm)) {
@@ -61,10 +63,10 @@
 		HashMap<Long, String> stopOrderMap = new HashMap<>();
 		int stopCount = 1;
-		
+
 		for (RelationMember rm : r.getMembers()) {
 			if (RouteUtils.isPTStop(rm) || (rm.getMember().isIncomplete() && (rm.isNode() || 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")))) {
-				
+
 				String label = "";
 
@@ -139,5 +141,5 @@
 				continue;
 			}
-			this.drawSegment(lastN, n, new Color(208, 80, 208, 179), oneway);
+			this.drawSegment(lastN, n, new Color(128, 0, 128, 100), oneway);
 			lastN = n;
 		}
@@ -186,6 +188,6 @@
 
 		double t = Math.atan2((double) p2.x - p1.x, (double) p2.y - p1.y);
-		double cosT = 8 * Math.cos(t);
-		double sinT = 8 * Math.sin(t);
+		double cosT = 9 * Math.cos(t);
+		double sinT = 9 * Math.sin(t);
 
 		int[] xPoints = { (int) (p1.x + cosT), (int) (p2.x + cosT), (int) (p2.x - cosT), (int) (p1.x - cosT) };
@@ -193,6 +195,6 @@
 		g.setColor(color);
 		g.fillPolygon(xPoints, yPoints, 4);
-		g.fillOval((int) (p1.x - 8), (int) (p1.y - 8), 16, 16);
-		g.fillOval((int) (p2.x - 8), (int) (p2.y - 8), 16, 16);
+		g.fillOval((int) (p1.x - 9), (int) (p1.y - 9), 18, 18);
+		g.fillOval((int) (p2.x - 9), (int) (p2.y - 9), 18, 18);
 
 		if (oneway != 0) {
@@ -263,12 +265,5 @@
 		Point p = mv.getPoint(n);
 
-		Color fillColor = null;
-
-		if (primitive.hasTag("bus", "yes")) {
-			fillColor = Color.BLUE;
-		} else if (primitive.hasTag("tram", "yes")) {
-			fillColor = Color.RED;
-		} // TODO: add more options
-		g.setColor(fillColor);
+		g.setColor(Color.BLUE);
 
 		if (primitive.hasTag("public_transport", "stop_position")) {
@@ -294,9 +289,8 @@
 		// draw the ref values of all parent routes:
 		List<String> parentsLabelList = new ArrayList<>();
-		String parentsLabel = "";
 		for (OsmPrimitive parent : primitive.getReferrers()) {
 			if (parent.getType().equals(OsmPrimitiveType.RELATION)) {
 				Relation relation = (Relation) parent;
-				if (RouteUtils.isTwoDirectionRoute(relation)) {
+				if (RouteUtils.isTwoDirectionRoute(relation) && relation.get("ref") != null && !relation.get("ref").equals("")) {
 
 					boolean stringFound = false;
@@ -307,5 +301,4 @@
 					}
 					if (!stringFound) {
-						parentsLabel = parentsLabel + relation.get("ref") + ";";
 						parentsLabelList.add(relation.get("ref"));
 					}
@@ -313,4 +306,11 @@
 				}
 			}
+		}
+
+		Collections.sort(parentsLabelList, new RefTagComparator());
+
+		String parentsLabel = "";
+		for (String s : parentsLabelList) {
+			parentsLabel = parentsLabel + s + ";";
 		}
 
@@ -318,8 +318,46 @@
 			// remove the last semicolon:
 			parentsLabel = parentsLabel.substring(0, parentsLabel.length() - 1);
-			g.setColor(new Color(150, 150, 150));
+
+			g.setColor(new Color(128, 0, 128));
 			Font parentLabelFont = new Font("SansSerif", Font.ITALIC, 20);
 			g.setFont(parentLabelFont);
-			g.drawString(parentsLabel, p.x + 20, p.y);
+			g.drawString(parentsLabel, p.x + 20, p.y + 20);
+		}
+
+	}
+
+	private class RefTagComparator implements Comparator<String> {
+
+		@Override
+		public int compare(String s1, String s2) {
+
+			if (s1 == null || s1.equals("")) {
+				if (s2 == null || s2.equals("")) {
+					return 0;
+				} else {
+					return 1;
+				}
+			}
+
+			String firstNumberString1 = s1.split("\\D+")[0];
+			String firstNumberString2 = s2.split("\\D+")[0];
+			
+			try {
+				int firstNumber1 = Integer.valueOf(firstNumberString1);
+				int firstNumber2 = Integer.valueOf(firstNumberString2);
+				if (firstNumber1 > firstNumber2) {
+					return 1;
+				} else if (firstNumber1 < firstNumber2) {
+					return -1;
+				} else {
+					// if the first number is the same:
+
+					return s1.compareTo(s2);
+
+				}
+			} catch (NumberFormatException ex) {
+				return s1.compareTo(s2);
+			}
+
 		}
 
Index: /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/PTAssitantValidatorTest.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/PTAssitantValidatorTest.java	(revision 32520)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/PTAssitantValidatorTest.java	(revision 32521)
@@ -4,22 +4,15 @@
 
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.List;
 
 import javax.swing.JOptionPane;
 
-import org.openstreetmap.josm.command.ChangeCommand;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.command.SequenceCommand;
 import org.openstreetmap.josm.data.osm.DataSet;
-import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.Relation;
-import org.openstreetmap.josm.data.osm.RelationMember;
-import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.validation.Severity;
 import org.openstreetmap.josm.data.validation.Test;
 import org.openstreetmap.josm.data.validation.TestError;
-import org.openstreetmap.josm.gui.dialogs.relation.sort.RelationSorter;
 import org.openstreetmap.josm.plugins.pt_assistant.actions.FixTask;
 import org.openstreetmap.josm.plugins.pt_assistant.actions.IncompleteMembersDownloadThread;
@@ -286,121 +279,4 @@
 	}
 
-//	private Command fixErrorByRemovingWay(TestError testError) {
-//
-//		if (testError.getCode() != ERROR_CODE_ROAD_TYPE && testError.getCode() != ERROR_CODE_DIRECTION) {
-//			return null;
-//		}
-//
-//		Collection<? extends OsmPrimitive> primitives = testError.getPrimitives();
-//		Relation originalRelation = (Relation) primitives.iterator().next();
-//		Collection<?> highlighted = testError.getHighlighted();
-//		Way wayToRemove = (Way) highlighted.iterator().next();
-//
-//		Relation modifiedRelation = new Relation(originalRelation);
-//		List<RelationMember> modifiedRelationMembers = new ArrayList<>(originalRelation.getMembersCount() - 1);
-//
-//		// copy PT stops first, PT ways last:
-//		for (RelationMember rm : originalRelation.getMembers()) {
-//			if (RouteUtils.isPTStop(rm)) {
-//
-//				if (rm.getRole().equals("stop_position")) {
-//					if (rm.getType().equals(OsmPrimitiveType.NODE)) {
-//						RelationMember newMember = new RelationMember("stop", rm.getNode());
-//						modifiedRelationMembers.add(newMember);
-//					} else { // if it is a way:
-//						RelationMember newMember = new RelationMember("stop", rm.getWay());
-//						modifiedRelationMembers.add(newMember);
-//					}
-//				} else {
-//					// if the relation member does not have the role
-//					// "stop_position":
-//					modifiedRelationMembers.add(rm);
-//				}
-//
-//			}
-//		}
-//
-//		// now copy PT ways:
-//		for (RelationMember rm : originalRelation.getMembers()) {
-//			if (RouteUtils.isPTWay(rm)) {
-//				Way wayToCheck = rm.getWay();
-//				if (wayToCheck != wayToRemove) {
-//					if (rm.getRole().equals("forward") || rm.getRole().equals("backward")) {
-//						RelationMember modifiedMember = new RelationMember("", wayToCheck);
-//						modifiedRelationMembers.add(modifiedMember);
-//					} else {
-//						modifiedRelationMembers.add(rm);
-//					}
-//				}
-//			}
-//		}
-//
-//		modifiedRelation.setMembers(modifiedRelationMembers);
-//
-//		ChangeCommand changeCommand = new ChangeCommand(originalRelation, modifiedRelation);
-//
-//		return changeCommand;
-//	}
-//
-//	private Command fixSortingError(TestError testError) {
-//		if (testError.getCode() != ERROR_CODE_SORTING) {
-//			return null;
-//		}
-//
-//		Collection<? extends OsmPrimitive> primitives = testError.getPrimitives();
-//		Relation originalRelation = (Relation) primitives.iterator().next();
-//
-//		// separate ways from stops (because otherwise the order of
-//		// stops/platforms can be messed up by the sorter:
-//		List<RelationMember> members = originalRelation.getMembers();
-//		final List<RelationMember> stops = new ArrayList<>();
-//		final List<RelationMember> ways = new ArrayList<>();
-//		for (RelationMember member : members) {
-//			if (RouteUtils.isPTWay(member)) {
-//				if (member.getRole().equals("")) {
-//					ways.add(member);
-//				} else {
-//					RelationMember modifiedMember = new RelationMember("", member.getWay());
-//					ways.add(modifiedMember);
-//				}
-//
-//			} else { // stops:
-//				if (member.getRole().equals("stop_positon")) {
-//					// it is not expected that stop_positions could
-//					// be relations
-//					if (member.getType().equals(OsmPrimitiveType.NODE)) {
-//						RelationMember modifiedMember = new RelationMember("stop", member.getNode());
-//						stops.add(modifiedMember);
-//					} else { // if it is a primitive of type way:
-//						RelationMember modifiedMember = new RelationMember("stop", member.getWay());
-//						stops.add(modifiedMember);
-//					}
-//				} else { // if it is not a stop_position:
-//					stops.add(member);
-//				}
-//
-//			}
-//		}
-//
-//		// sort the ways:
-//		RelationSorter sorter = new RelationSorter();
-//		List<RelationMember> sortedWays = sorter.sortMembers(ways);
-//
-//		// create a new relation to pass to the command:
-//		Relation sortedRelation = new Relation(originalRelation);
-//		List<RelationMember> sortedRelationMembers = new ArrayList<>(members.size());
-//		for (RelationMember rm : stops) {
-//			sortedRelationMembers.add(rm);
-//		}
-//		for (RelationMember rm : sortedWays) {
-//			sortedRelationMembers.add(rm);
-//		}
-//		sortedRelation.setMembers(sortedRelationMembers);
-//
-//		ChangeCommand changeCommand = new ChangeCommand(originalRelation, sortedRelation);
-//
-//		return changeCommand;
-//
-//	}
 
 	private void performDummyTest(Relation r) {
