Index: /applications/editors/josm/plugins/reltoolbox/src/relcontext/ChosenRelation.java
===================================================================
--- /applications/editors/josm/plugins/reltoolbox/src/relcontext/ChosenRelation.java	(revision 33310)
+++ /applications/editors/josm/plugins/reltoolbox/src/relcontext/ChosenRelation.java	(revision 33311)
@@ -17,5 +17,4 @@
 import org.openstreetmap.josm.data.osm.Node;
 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.Way;
@@ -150,5 +149,5 @@
         g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.3f * opacity));
 
-        drawRelations(g, mv, bbox, chosenRelation, new HashSet<>());
+        drawRelations(g, mv, bbox, chosenRelation, new HashSet<Relation>());
 
         g.setComposite(oldComposite);
@@ -160,27 +159,31 @@
             visitedRelations.add(rel);
             for (OsmPrimitive element : rel.getMemberPrimitives()) {
-                if (element.getType() == OsmPrimitiveType.NODE) {
-                    Node node = (Node) element;
-                    Point center = mv.getPoint(node);
-                    g.drawOval(center.x - 4, center.y - 4, 9, 9);
-                } else if (element.getType() == OsmPrimitiveType.WAY) {
-                    Way way = (Way) element;
-                    if (way.getNodesCount() >= 2) {
-                        GeneralPath b = new GeneralPath();
-                        Point p = mv.getPoint(way.getNode(0));
-                        b.moveTo(p.x, p.y);
-                        for (int i = 1; i < way.getNodesCount(); i++) {
-                            p = mv.getPoint(way.getNode(i));
-                            b.lineTo(p.x, p.y);
-                        }
-                        g.draw(b);
-                    }
-                } else if (element.getType() == OsmPrimitiveType.RELATION) {
-                    Color oldColor = g.getColor();
-                    g.setColor(Color.magenta);
-                    drawRelations(g, mv, bbox, (Relation) element, visitedRelations);
-                    g.setColor(oldColor);
+                if (null != element.getType()) switch(element.getType()) {
+                    case NODE:
+                        Node node = (Node) element;
+                        Point center = mv.getPoint(node);
+                        g.drawOval(center.x - 4, center.y - 4, 9, 9);
+                        break;
+                    case WAY:
+                        Way way = (Way) element;
+                        if (way.getNodesCount() >= 2) {
+                            GeneralPath b = new GeneralPath();
+                            Point p = mv.getPoint(way.getNode(0));
+                            b.moveTo(p.x, p.y);
+                            for (int i = 1; i < way.getNodesCount(); i++) {
+                                p = mv.getPoint(way.getNode(i));
+                                b.lineTo(p.x, p.y);
+                            }
+                            g.draw(b);
+                        }   break;
+                    case RELATION:
+                        Color oldColor = g.getColor();
+                        g.setColor(Color.magenta);
+                        drawRelations(g, mv, bbox, (Relation) element, visitedRelations);
+                        g.setColor(oldColor);
+                        break;
+                    default:
+                        break;
                 }
-                // todo: closedway, multipolygon - ?
             }
         }
Index: /applications/editors/josm/plugins/reltoolbox/src/relcontext/RelContextDialog.java
===================================================================
--- /applications/editors/josm/plugins/reltoolbox/src/relcontext/RelContextDialog.java	(revision 33310)
+++ /applications/editors/josm/plugins/reltoolbox/src/relcontext/RelContextDialog.java	(revision 33311)
@@ -443,7 +443,8 @@
             while (r.ready()) {
                 String line = r.readLine();
-                StringTokenizer t = new StringTokenizer(line, " ,;:\"");
-                if (t.hasMoreTokens()) {
-                    String type = t.nextToken();
+                String[] typeAndRoles = line.split(":", 2);
+                if (typeAndRoles.length == 2 && typeAndRoles[1].length() > 0) {
+                    String type = typeAndRoles[0].trim();
+                    StringTokenizer t = new StringTokenizer(typeAndRoles[1], " ,;\"");
                     List<String> roles = new ArrayList<>();
                     while (t.hasMoreTokens()) {
Index: /applications/editors/josm/plugins/reltoolbox/src/relcontext/possible_roles.txt
===================================================================
--- /applications/editors/josm/plugins/reltoolbox/src/relcontext/possible_roles.txt	(revision 33310)
+++ /applications/editors/josm/plugins/reltoolbox/src/relcontext/possible_roles.txt	(revision 33311)
@@ -1,14 +1,16 @@
-boundary: admin_centre, label, subarea
-route: forward, backward, stop, platform, stop_exit_only, stop_entry_only, platform_exit_only, platform_entry_only
+associatedStreet: street, house
+boundary: admin_centre, label, subarea, outer, inner
+bridge: across, outline, edge, on_bridge
+building: outline, part, contains, label, entrance, address, ridge, edge
+destination_sign: to, from, intersection, sign
+enforcement: device, from, to, force
+provides_feature: target, address, entrance, parking
 public_transport: stop, platform
 restriction: from, to, via, location_hint
-enforcement: device, from, to, force
-destination_sign: to, from, intersection, sign
+route: route, forward, backward, north, south, east, west, stop, link, stop, forward:stop, backward:stop, platform, guidepost, stop_exit_only, stop_entry_only, platform_exit_only, platform_entry_only
 site: perimeter, entrance, label
-bridge: across, under, outline, edge
-tunnel: through, outline, edge
+sled: sled, alternative, walk
+street: street, address, house, associated
 surveillance: camera, extent, visible, hidden
-street: street, address, house, associated
-collection: member, street, river, railway, address, associated
-associatedStreet: street, house
-lane_restriction: from, to, via
+tunnel: through, outline, edge, in_tunnel
+waterway: main_stream, side_stream, spring
Index: /applications/editors/josm/plugins/reltoolbox/src/relcontext/relationfix/MultipolygonFixer.java
===================================================================
--- /applications/editors/josm/plugins/reltoolbox/src/relcontext/relationfix/MultipolygonFixer.java	(revision 33310)
+++ /applications/editors/josm/plugins/reltoolbox/src/relcontext/relationfix/MultipolygonFixer.java	(revision 33311)
@@ -82,7 +82,7 @@
             if (m.isWay()) {
                 String role = null;
-                if (outerWays.contains(m.getMember())) {
+                if (outerWays.contains((Way)m.getMember())) {
                     role = "outer";
-                } else if (innerWays.contains(m.getMember())) {
+                } else if (innerWays.contains((Way)m.getMember())) {
                     role = "inner";
                 }
Index: /applications/editors/josm/plugins/reltoolbox/src/relcontext/relationfix/RelationFixer.java
===================================================================
--- /applications/editors/josm/plugins/reltoolbox/src/relcontext/relationfix/RelationFixer.java	(revision 33310)
+++ /applications/editors/josm/plugins/reltoolbox/src/relcontext/relationfix/RelationFixer.java	(revision 33311)
@@ -2,8 +2,7 @@
 package relcontext.relationfix;
 
+import java.util.*;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import java.util.ArrayList;
-import java.util.List;
 
 import javax.swing.Action;
@@ -25,7 +24,5 @@
     public RelationFixer(String... types) {
         applicableTypes = new ArrayList<>();
-        for (String type: types) {
-            applicableTypes.add(type);
-        }
+        applicableTypes.addAll(Arrays.asList(types));
     }
 
