Index: applications/editors/josm/plugins/smed2/src/symbols/Beacons.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/symbols/Beacons.java	(revision 29119)
+++ applications/editors/josm/plugins/smed2/src/symbols/Beacons.java	(revision 29120)
@@ -60,5 +60,5 @@
 	static {
 		Path2D.Double p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_NON_ZERO);
-		p.moveTo(0.0,-7.0); p.curveTo(-9.3,-7.0,-9.3,7.0,0.0,7.0); p.curveTo(9.3,7.0,9.3,-7.0,0.0,-7.0); 
+		p.moveTo(0.0,-7.0); p.curveTo(-9.3,-6.5,-9.3,6.5,0.0,7.0); p.curveTo(9.3,6.5,9.3,-6.5,0.0,-7.0); p.closePath();
 		p.moveTo(0.0,-35.5); p.lineTo(8.0,-11.2); p.lineTo(33.5,-11.2); p.lineTo(12.8,4.0);
 		p.lineTo(20.5,28.5); p.lineTo(0.0,13.0); p.lineTo(-20.5,28.5); p.lineTo(-12.8,4.0); p.lineTo(-33.5,-11.2); p.lineTo(-8.0,-11.2); p.closePath();
Index: applications/editors/josm/plugins/smed2/src/symbols/Facilities.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/symbols/Facilities.java	(revision 29119)
+++ applications/editors/josm/plugins/smed2/src/symbols/Facilities.java	(revision 29120)
@@ -10,20 +10,178 @@
 package symbols;
 
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.geom.Arc2D;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.GeneralPath;
+import java.awt.geom.Line2D;
+import java.awt.geom.Path2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.RoundRectangle2D;
 import java.util.ArrayList;
 
 import symbols.Symbols.Instr;
+import symbols.Symbols.Prim;
 
 public class Facilities {
+	private static final ArrayList<Instr> Facility = new ArrayList<Instr>();
+	static {
+		Facility.add(new Instr(Prim.STRK, new BasicStroke(2.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+		Facility.add(new Instr(Prim.FILL, new Color(0x80ffffff, true)));
+		RoundRectangle2D.Double s = new RoundRectangle2D.Double(-29,-29,58,58,15,15);
+		Facility.add(new Instr(Prim.RSHP, s));
+		Facility.add(new Instr(Prim.FILL, new Color(0xa30075)));
+		Facility.add(new Instr(Prim.RRCT, s));
+	}
 	public static final ArrayList<Instr> Boatlift = new ArrayList<Instr>();//was Crane
+	static {
+		Boatlift.add(new Instr(Prim.SYMB, new Symbols.Symbol(Facilities.Facility, 1.0, 0, 0, null, null)));
+		Boatlift.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+		Boatlift.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-3.7,-19.7,12,12)));
+		Boatlift.add(new Instr(Prim.LINE, new Line2D.Double(2.3,-7.7,2.3,-2.0)));
+		Boatlift.add(new Instr(Prim.EARC, new Arc2D.Double(-10.0,-1.5,20,20,75.0,-260.0,Arc2D.OPEN)));
+	}
 	public static final ArrayList<Instr> Boatyard = new ArrayList<Instr>();
+	static {
+		Boatyard.add(new Instr(Prim.SYMB, new Symbols.Symbol(Facilities.Facility, 1.0, 0, 0, null, null)));
+		Boatyard.add(new Instr(Prim.STRK, new BasicStroke(8.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
+		Boatyard.add(new Instr(Prim.LINE, new Line2D.Double(19,19,-8,-8)));
+		Path2D.Double p = new Path2D.Double(); p.moveTo(-11.3,-11.3); p.lineTo(-10.5,-17.5); p.lineTo(-14.8,-21.9); p.lineTo(-11.3,-25.4); p.lineTo(-7.4,-21.5);
+		p.curveTo(1.0,-11.5,-11.5,1.0,-21.5,-7.4); p.lineTo(-25.4,-11.3); p.lineTo(-21.9,-14.8); p.lineTo(-17.5,-10.5); p.closePath();
+		Boatyard.add(new Instr(Prim.PGON, p));
+	}
 	public static final ArrayList<Instr> Chandler = new ArrayList<Instr>();
+	static {
+		Chandler.add(new Instr(Prim.SYMB, new Symbols.Symbol(Facilities.Facility, 1.0, 0, 0, null, null)));
+		Chandler.add(new Instr(Prim.STRK, new BasicStroke(5.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+		Chandler.add(new Instr(Prim.ELPS, new Ellipse2D.Double(14,7,10,10)));
+		Chandler.add(new Instr(Prim.LINE, new Line2D.Double(-23.0,12.0,14.0,12.0)));
+		Chandler.add(new Instr(Prim.LINE, new Line2D.Double(8.0,21.0,8.0,-8.6)));
+		Chandler.add(new Instr(Prim.LINE, new Line2D.Double(-16.0,21.0,-16.0,-8.6)));
+		Chandler.add(new Instr(Prim.EARC, new Arc2D.Double(-16.0,-20.5,24,24,0.0,180.0,Arc2D.OPEN)));
+	}
 	public static final ArrayList<Instr> Fuel = new ArrayList<Instr>();
+	static {
+		Fuel.add(new Instr(Prim.SYMB, new Symbols.Symbol(Facilities.Facility, 1.0, 0, 0, null, null)));
+		Fuel.add(new Instr(Prim.STRK, new BasicStroke(2.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+		Fuel.add(new Instr(Prim.FILL, new Color(0xa30075)));
+		Path2D.Double p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
+		p.moveTo(-15.6,22.1); p.lineTo(-15.6,-19.4); p.quadTo(-15.5,-22.7,-12.2,-22.8); p.lineTo(0.2,-22.8); p.quadTo(3.3,-22.7,3.4,-19.4); p.lineTo(3.4,22.1); p.closePath(); 
+		p.moveTo(-12.8,-19.0); p.quadTo(-12.7,-19.9,-11.8,-20.0); p.lineTo(-0.4,-20.0); p.quadTo(0.5,-19.9,0.6,-19.0); p.lineTo(0.6,-9.4);
+		p.quadTo(0.5,-8.5,-0.4,-8.4); p.lineTo(-11.8,-8.4); p.quadTo(-12.7,-8.3,-12.8,-9.4); p.closePath();
+		Fuel.add(new Instr(Prim.PGON, p));
+		p = new Path2D.Double(); p.moveTo(3.0,-3.0); p.lineTo(7.0,-3.0); p.quadTo(9.4,-2.8,9.6,-0.4); p.lineTo(9.6,18.0); p.curveTo(10.1,23.2,18.4,21.5,17.4,17.2);
+		p.lineTo(14.9,3.5); p.lineTo(15.1,-10.3); p.quadTo(14.9,-11.9,13.9,-13.1); p.lineTo(7.4,-19.6); p.moveTo(15.1,-7.4); p.lineTo(12.6,-7.4); p.quadTo(11.1,-7.4,11.1,-8.9); p.lineTo(11.1,-16.0);
+		Fuel.add(new Instr(Prim.PLIN, p));
+	}
 	public static final ArrayList<Instr> Laundrette = new ArrayList<Instr>();
+	static {
+		Laundrette.add(new Instr(Prim.SYMB, new Symbols.Symbol(Facilities.Facility, 1.0, 0, 0, null, null)));
+		Laundrette.add(new Instr(Prim.STRK, new BasicStroke(1.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+		Laundrette.add(new Instr(Prim.FILL, new Color(0xa30075)));
+		Laundrette.add(new Instr(Prim.RECT, new Rectangle2D.Double(-15,-15,30,30)));
+		Laundrette.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-10,-10,20,20)));
+		Path2D.Double p = new Path2D.Double(); p.moveTo(-15,-15); p.lineTo(-15,-20); p.lineTo(15,-20); p.lineTo(15,-15);
+		p.moveTo(-10,15); p.lineTo(-10,20); p.lineTo(10,20); p.lineTo(10,15);
+		Laundrette.add(new Instr(Prim.PLIN, p));
+	}
 	public static final ArrayList<Instr> PumpOut = new ArrayList<Instr>();
+	static {
+		PumpOut.add(new Instr(Prim.SYMB, new Symbols.Symbol(Facilities.Facility, 1.0, 0, 0, null, null)));
+		PumpOut.add(new Instr(Prim.STRK, new BasicStroke(2.5f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
+		PumpOut.add(new Instr(Prim.FILL, new Color(0xa30075)));
+		Path2D.Double p = new Path2D.Double(); p.moveTo(3.9,-3.7); p.lineTo(-7.4,-3.7); p.lineTo(-12.0,2.0); p.lineTo(-22.7,2.0);
+		p.lineTo(-11.8,14.9); p.lineTo(15.1,14.9); p.lineTo(21.9,10.2); p.lineTo(21.9,3.1); p.lineTo(13.5,3.1);
+		PumpOut.add(new Instr(Prim.PLIN, p));
+		PumpOut.add(new Instr(Prim.STRK, new BasicStroke(3.5f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+		p = new Path2D.Double(); p.moveTo(-2.5,3.0); p.lineTo(-2.5,-13.8); p.lineTo(6.9,-13.8); p.lineTo(6.9,-6.7); p.lineTo(14.5,-6.7);
+		PumpOut.add(new Instr(Prim.PLIN, p));
+		p = new Path2D.Double(); p.moveTo(9.7,2.3); p.lineTo(9.7,10.3); p.lineTo(-4.1,10.3); p.lineTo(-4.1,2.3); p.closePath();
+		PumpOut.add(new Instr(Prim.PGON, p));
+		p = new Path2D.Double(); p.moveTo(14.1,-10.6); p.lineTo(23.1,-6.7); p.lineTo(14.1,-2.8); p.closePath();
+		PumpOut.add(new Instr(Prim.PGON, p));
+	}
 	public static final ArrayList<Instr> SailingClub = new ArrayList<Instr>();
+	static {
+		SailingClub.add(new Instr(Prim.SYMB, new Symbols.Symbol(Facilities.Facility, 1.0, 0, 0, null, null)));
+		SailingClub.add(new Instr(Prim.STRK, new BasicStroke(2.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+		SailingClub.add(new Instr(Prim.FILL, new Color(0xa30075)));
+		SailingClub.add(new Instr(Prim.LINE, new Line2D.Double(-5,20,-5,-20)));
+		Path2D.Double p = new Path2D.Double(); p.moveTo(-5,0); p.lineTo(20,-10); p.lineTo(-5,-20); p.closePath();
+		SailingClub.add(new Instr(Prim.PGON, p));
+	}
 	public static final ArrayList<Instr> Shower = new ArrayList<Instr>();
+	static {
+		Shower.add(new Instr(Prim.SYMB, new Symbols.Symbol(Facilities.Facility, 1.0, 0, 0, null, null)));
+		Shower.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+		Shower.add(new Instr(Prim.FILL, new Color(0xa30075)));
+		Shower.add(new Instr(Prim.LINE, new Line2D.Double(-4.8,-24.5,6.2,-13.5)));
+		Shower.add(new Instr(Prim.STRK, new BasicStroke(2.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+		Shower.add(new Instr(Prim.LINE, new Line2D.Double(-18.1,-17.9,-6.1,-21.3)));
+		Shower.add(new Instr(Prim.LINE, new Line2D.Double(-13.9,-10.2,-3.9,-17.7)));
+		Shower.add(new Instr(Prim.LINE, new Line2D.Double(-7.8,-4.4,-0.5,-14.3)));
+		Shower.add(new Instr(Prim.LINE, new Line2D.Double(-0.2,-0.2,3.1,-12.1)));
+		Path2D.Double p = new Path2D.Double(); p.moveTo(11.1,24.6); p.lineTo(11.1,-16.0); p.curveTo(11.1,-22.7,3.4,-23.6,0.8,-19.3);
+		Shower.add(new Instr(Prim.PLIN, p));
+	}
 	public static final ArrayList<Instr> Slipway = new ArrayList<Instr>();
+	static {
+		Slipway.add(new Instr(Prim.SYMB, new Symbols.Symbol(Facilities.Facility, 1.0, 0, 0, null, null)));
+		Slipway.add(new Instr(Prim.STRK, new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+		Slipway.add(new Instr(Prim.FILL, new Color(0xa30075)));
+		Path2D.Double p = new Path2D.Double(); p.moveTo(-24.8,0.1); p.lineTo(-24.8,18.0); p.curveTo(-21.2,18.0,-22.2,16.7,-18.6,16.7); p.curveTo(-15.0,16.7,-16.0,18.0,-12.4,18.0);
+		p.curveTo(-8.8,18.0,-9.8,16.7,-6.2,16.7); p.curveTo(-2.6,16.7,-3.6,18.0,0.0,18.0); p.curveTo(3.6,18.0,2.6,16.7,6.2,16.7); p.curveTo(9.8,16.7,8.8,18.0,12.4,18.0);
+		p.curveTo(16.0,18.0,15.0,16.7,18.6,16.7); p.curveTo(22.2,16.7,21.2,18.0,24.8,18.0);	p.lineTo(24.8,13.6); p.closePath();
+		Slipway.add(new Instr(Prim.PGON, p));
+		Slipway.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-1.65,-1.9,8,8)));
+		Slipway.add(new Instr(Prim.STRK, new BasicStroke(2.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+		Slipway.add(new Instr(Prim.LINE, new Line2D.Double(-24.5,-8.3,-3.1,-2.4)));
+		Slipway.add(new Instr(Prim.LINE, new Line2D.Double(9.3,1.1,22.2,4.6)));
+		p = new Path2D.Double(); p.moveTo(22.9,0.6); p.lineTo(25.0,-7.4); p.lineTo(-5.1,-15.8); p.lineTo(0.3,-19.6); p.lineTo(-1.6,-20.1); p.lineTo(-7.2,-16.2);
+		p.lineTo(-17.1,-18.9); p.quadTo(-16.8,-11.4,-7.7,-7.7); p.closePath();
+		Slipway.add(new Instr(Prim.PGON, p));
+	}
 	public static final ArrayList<Instr> Toilet = new ArrayList<Instr>();
+	static {
+		Toilet.add(new Instr(Prim.SYMB, new Symbols.Symbol(Facilities.Facility, 1.0, 0, 0, null, null)));
+		Toilet.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+		Toilet.add(new Instr(Prim.FILL, new Color(0xa30075)));
+		Toilet.add(new Instr(Prim.LINE, new Line2D.Double(0,20,0,-20)));
+		Toilet.add(new Instr(Prim.RSHP, new Ellipse2D.Double(-18.5,-22.5,7.4,7.4)));
+		Toilet.add(new Instr(Prim.RSHP, new Ellipse2D.Double(11,-22.5,7.4,7.4)));
+		Path2D.Double p = new Path2D.Double(); p.moveTo(-9.8,-12.2); p.lineTo(-4.8,2.7); p.lineTo(-7.3,3.9); p.lineTo(-10.6,-7.0); p.lineTo(-11.7,-6.4); p.lineTo(-7.6,9.0);
+		p.lineTo(-11.3,9.0); p.lineTo(-11.6,22.1); p.lineTo(-13.9,22.1); p.lineTo(-14.2,9.0); p.lineTo(-15.8,9.0); p.lineTo(-16.2,22.1); p.lineTo(-18.4,22.1);
+		p.lineTo(-18.8,9.0); p.lineTo(-22.3,9.0); p.lineTo(-18.2,-6.4); p.lineTo(-19.1,-7.0); p.lineTo(-22.9,3.9); p.lineTo(-25.1,2.7); p.lineTo(-19.9,-12.2); p.closePath();
+		Toilet.add(new Instr(Prim.PGON, p));
+		p = new Path2D.Double(); p.moveTo(19.2,-12.2); p.lineTo(22.3,-10.1); p.lineTo(22.3,4.4); p.lineTo(20.2,4.4); p.lineTo(20.2,-7.3); p.lineTo(18.3,-7.3); p.lineTo(18.3,22.1);
+		p.lineTo(15.8,22.1); p.lineTo(15.8,4.6); p.lineTo(13.8,4.6); p.lineTo(13.4,22.1); p.lineTo(11.0,22.1); p.lineTo(11.0,-7.3); p.lineTo(9.5,-7.3); p.lineTo(9.5,4.4); p.lineTo(6.8,4.4);
+		p.lineTo(6.8,-10.1); p.lineTo(9.4,-12.2); p.closePath();
+		Toilet.add(new Instr(Prim.PGON, p));
+	}
 	public static final ArrayList<Instr> VisitorBerth = new ArrayList<Instr>();
+	static {
+		VisitorBerth.add(new Instr(Prim.FILL, new Color(0xa30075)));
+		VisitorBerth.add(new Instr(Prim.RSHP, new Ellipse2D.Double(-25,-25,50,50)));
+		VisitorBerth.add(new Instr(Prim.FILL, Color.white));
+		Path2D.Double p = new Path2D.Double(); p.moveTo(7.9,-13.6); p.lineTo(14.0,-13.6); p.lineTo(3.4,13.6); p.lineTo(-3.4,13.6);
+		p.lineTo(-14.0,-13.6); p.lineTo(-7.9,-13.6); p.lineTo(0.0,8.7); p.closePath();
+		VisitorBerth.add(new Instr(Prim.PGON, p));
+	}
 	public static final ArrayList<Instr> VisitorMooring = new ArrayList<Instr>();
+	static {
+		VisitorMooring.add(new Instr(Prim.FILL, new Color(0xa30075)));
+		Path2D.Double p = new Path2D.Double(); p.moveTo(-25.0,0); p.curveTo(-32.0,-21.0,-14.0,-45.5,12.7,-37.9); p.curveTo(27.5,-33.8,37.8,-15.5,32.0,0.0);
+		p.lineTo(8.0,0.0); p.curveTo(8.0,-11.0,-8.0,-11.0,-8.0,0.0); p.closePath();
+		VisitorMooring.add(new Instr(Prim.PGON, p));
+    VisitorMooring.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+    VisitorMooring.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-10,-10,20,20)));
+    VisitorMooring.add(new Instr(Prim.LINE, new Line2D.Double(-33,0,-10,0)));
+    VisitorMooring.add(new Instr(Prim.LINE, new Line2D.Double(10,0,40,0)));
+    VisitorMooring.add(new Instr(Prim.STRK, new BasicStroke(2.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND)));
+    VisitorMooring.add(new Instr(Prim.ELPS, new Ellipse2D.Double(6.5,-49.5,12,12)));
+    VisitorMooring.add(new Instr(Prim.FILL, Color.white));
+		p = new Path2D.Double(); p.moveTo(8.3,-32.8); p.lineTo(12.5,-32.8); p.lineTo(5.4,-12.9); p.lineTo(1.0,-12.9); p.lineTo(-6.1,-32.8);
+		p.lineTo(-1.9,-32.8); p.lineTo(3.2,-18.1); p.closePath();
+		VisitorMooring.add(new Instr(Prim.PGON, p));
+	}
 }
Index: applications/editors/josm/plugins/smed2/src/symbols/Harbours.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/symbols/Harbours.java	(revision 29119)
+++ applications/editors/josm/plugins/smed2/src/symbols/Harbours.java	(revision 29120)
@@ -10,28 +10,174 @@
 package symbols;
 
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.geom.Arc2D;
+import java.awt.geom.Ellipse2D;
+import java.awt.geom.Line2D;
+import java.awt.geom.Path2D;
+import java.awt.geom.Rectangle2D;
 import java.util.ArrayList;
 
 import symbols.Symbols.Instr;
+import symbols.Symbols.Prim;
 
 public class Harbours {
+	public static final ArrayList<Instr> Anchor = new ArrayList<Instr>();
+	static {
+		Anchor.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+		Anchor.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-10,-59,20,20)));
+		Path2D.Double p = new Path2D.Double(); p.moveTo(23.0,-40.0); p.lineTo(23.0,-30.0); p.lineTo(6.0,-30.0); p.lineTo(7.0,31.0); p.quadTo(21.0,29.0,31.0,22.0);
+		p.lineTo(27.0,18.0); p.lineTo(52.0,0.0); p.lineTo(45.0,35.0); p.lineTo(37.0,28.0);	p.quadTo(25.0,39.0,7.0,43.0); p.lineTo(6.0,51.0);
+		p.lineTo(-6.0,51.0); p.lineTo(-7.0,43.0);	p.quadTo(-25.0,39.0,-37.0,28.0); p.lineTo(-45.0,35.0); p.lineTo(-52.0,0.0); p.lineTo(-27.0,18.0);
+		p.lineTo(-31.0,22.0); p.quadTo(-21.0,29.0,-7.0,31.0); p.lineTo(-6.0,-30.0); p.lineTo(-23.0,-30.0); p.lineTo(-23.0,-40.0); p.closePath();
+		Anchor.add(new Instr(Prim.PGON, p));
+	}
+	public static final ArrayList<Instr> Yacht = new ArrayList<Instr>();
+	static {
+		Yacht.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+		Path2D.Double p = new Path2D.Double(); p.moveTo(-65.0,50.0); p.curveTo(-36.0,97.0,36.0,97.0,65.0,50.0); p.lineTo(3.0,50.0); p.lineTo(3.0,40.0); p.lineTo(55.0,30.0);
+		p.curveTo(32.0,4.0,25.0,-15.0,26.0,-52.0); p.lineTo(1.5,-40.0); p.lineTo(1.0,-64.0); p.lineTo(-2.0,-64.0); p.lineTo(-4.0,50.0); p.closePath();
+		p.moveTo(-50.0,45.0); p.curveTo(-55.0,3.0,-37.0,-28.5,-7.0,-46.0); p.curveTo(-28.0,-15.0,-26.0,11.0,-20.5,30.0); p.closePath();
+		Yacht.add(new Instr(Prim.PGON, p));
+	}
+	public static final ArrayList<Instr> Anchorage = new ArrayList<Instr>();
+	static {
+		Anchorage.add(new Instr(Prim.FILL, new Color(0xa30075)));
+		Anchorage.add(new Instr(Prim.SYMB, new Symbols.Symbol(Harbours.Anchor, 1.0, 0, 0, null, null)));
+	}
 	public static final ArrayList<Instr> AnchorBerth = new ArrayList<Instr>();
-	public static final ArrayList<Instr> Anchorage = new ArrayList<Instr>();
+	static {
+		AnchorBerth.add(new Instr(Prim.SYMB, new Symbols.Symbol(Harbours.Anchorage, 1.0, 0, 0, null, null)));
+		AnchorBerth.add(new Instr(Prim.STRK, new BasicStroke(2.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+		AnchorBerth.add(new Instr(Prim.FILL, Color.white));
+		Ellipse2D.Double s = new Ellipse2D.Double(-25,-25,50,50);
+		AnchorBerth.add(new Instr(Prim.RSHP, s));
+		AnchorBerth.add(new Instr(Prim.FILL, new Color(0xa30075)));
+		AnchorBerth.add(new Instr(Prim.ELPS, s));
+	}
 	public static final ArrayList<Instr> Bollard = new ArrayList<Instr>();
+	static {
+		Bollard.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+		Bollard.add(new Instr(Prim.FILL, Color.white));
+		Ellipse2D.Double s = new Ellipse2D.Double(-10,-10,20,20);
+		Bollard.add(new Instr(Prim.RSHP, s));
+		Bollard.add(new Instr(Prim.FILL, Color.black));
+		Bollard.add(new Instr(Prim.ELPS, s));
+	}
 	public static final ArrayList<Instr> ClearV = new ArrayList<Instr>();
+	static {
+		ClearV.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+		ClearV.add(new Instr(Prim.FILL, Color.white));
+		ClearV.add(new Instr(Prim.RSHP, new Ellipse2D.Double(-30,-30,60,60)));
+		ClearV.add(new Instr(Prim.FILL, Color.black));
+		ClearV.add(new Instr(Prim.LINE, new Line2D.Double(-10,-25,10,-25)));
+		ClearV.add(new Instr(Prim.LINE, new Line2D.Double(0,-25,0,-15)));
+		ClearV.add(new Instr(Prim.LINE, new Line2D.Double(-10,25,10,25)));
+		ClearV.add(new Instr(Prim.LINE, new Line2D.Double(0,25,0,15)));
+	}
 	public static final ArrayList<Instr> ContainerCrane = new ArrayList<Instr>();
+	static {
+		ContainerCrane.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+		ContainerCrane.add(new Instr(Prim.FILL, Color.black));
+		ContainerCrane.add(new Instr(Prim.RSHP, new Rectangle2D.Double(-15,-65,30,100)));
+		ContainerCrane.add(new Instr(Prim.RECT, new Rectangle2D.Double(-40,-12.5,80,25)));
+	}
 	public static final ArrayList<Instr> DeviationDolphin = new ArrayList<Instr>();
+	static {
+		DeviationDolphin.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+		DeviationDolphin.add(new Instr(Prim.FILL, Color.black));
+		Path2D.Double p = new Path2D.Double(); p.moveTo(-30.0,0.0); p.lineTo(30.0,0.0); p.moveTo(0.0,0.0); p.lineTo(0.0,-40.0);
+		p.moveTo(-20.0,0.0); p.lineTo(-15.0,-32.0); p.lineTo(15.0,-32.0); p.lineTo(20.0,0.0);
+		DeviationDolphin.add(new Instr(Prim.PLIN, p));
+	}
 	public static final ArrayList<Instr> DistanceI = new ArrayList<Instr>();
+	static {
+		DistanceI.add(new Instr(Prim.STRK, new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+		DistanceI.add(new Instr(Prim.FILL, Color.black));
+		DistanceI.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-11,-11,22,22)));
+	}
 	public static final ArrayList<Instr> DistanceU = new ArrayList<Instr>();
+	static {
+		DistanceU.add(new Instr(Prim.STRK, new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+		DistanceU.add(new Instr(Prim.FILL, new Color(0xa30075)));
+		DistanceU.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-11,-11,22,22)));
+	}
 	public static final ArrayList<Instr> Dolphin = new ArrayList<Instr>();
+	static {
+		Dolphin.add(new Instr(Prim.STRK, new BasicStroke(2.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+		Dolphin.add(new Instr(Prim.FILL, new Color(0xffd400)));
+		Path2D.Double p = new Path2D.Double(); p.moveTo(3.8,-9.2); p.lineTo(9.2,-3.8); p.lineTo(9.2,3.8); p.lineTo(3.8,9.2);
+		p.lineTo(-3.8,9.2); p.lineTo(-9.2,3.8); p.lineTo(-9.2,-3.8); p.lineTo(-3.8,-9.2); p.closePath();
+		Dolphin.add(new Instr(Prim.PGON, p));
+		Dolphin.add(new Instr(Prim.FILL, Color.black));
+		Dolphin.add(new Instr(Prim.PLIN, p));
+	}
 	public static final ArrayList<Instr> Harbour = new ArrayList<Instr>();
+	static {
+		Harbour.add(new Instr(Prim.STRK, new BasicStroke(15.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+		Harbour.add(new Instr(Prim.FILL, new Color(0xa30075)));
+		Harbour.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-75,-75,150,150)));
+		Harbour.add(new Instr(Prim.SYMB, new Symbols.Symbol(Harbours.Anchor, 1.0, 0, 0, null, null)));
+	}
 	public static final ArrayList<Instr> HarbourMaster = new ArrayList<Instr>();
+	static {
+		HarbourMaster.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+		HarbourMaster.add(new Instr(Prim.FILL, Color.black));
+		HarbourMaster.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-35,-50,70,100)));
+		HarbourMaster.add(new Instr(Prim.SYMB, new Symbols.Symbol(Harbours.Anchor, 0.6, 0, 0, null, null)));
+	}
 	public static final ArrayList<Instr> LandingSteps = new ArrayList<Instr>();
+	static {
+		LandingSteps.add(new Instr(Prim.FILL, new Color(0xa30075)));
+		Path2D.Double p = new Path2D.Double(); p.moveTo(-20,-10); p.lineTo(10,20); p.lineTo(20,20); p.lineTo(20,10);
+		p.lineTo(10,10); p.lineTo(10,0); p.lineTo(0,0); p.lineTo(0,-10); p.lineTo(-10,-10); p.lineTo(-10,-20); p.lineTo(-20,-20); p.closePath();
+		LandingSteps.add(new Instr(Prim.PGON, p));
+	}
 	public static final ArrayList<Instr> Lock_Gate = new ArrayList<Instr>();
 	public static final ArrayList<Instr> Lock = new ArrayList<Instr>();
 	public static final ArrayList<Instr> Marina = new ArrayList<Instr>();
+	static {
+		Marina.add(new Instr(Prim.STRK, new BasicStroke(15.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+		Marina.add(new Instr(Prim.FILL, new Color(0xa30075)));
+		Marina.add(new Instr(Prim.SYMB, new Symbols.Symbol(Harbours.Yacht, 1.0, 0, 0, null, null)));
+		Marina.add(new Instr(Prim.EARC, new Arc2D.Double(-80.0,-80.0,160.0,160.0,215.0,-250.0,Arc2D.OPEN)));
+	}
 	public static final ArrayList<Instr> MarinaNF = new ArrayList<Instr>();
+	static {
+		MarinaNF.add(new Instr(Prim.STRK, new BasicStroke(15.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+		MarinaNF.add(new Instr(Prim.FILL, new Color(0xa30075)));
+		MarinaNF.add(new Instr(Prim.SYMB, new Symbols.Symbol(Harbours.Yacht, 1.0, 0, 0, null, null)));
+	}
 	public static final ArrayList<Instr> PortCrane = new ArrayList<Instr>();
+	static {
+		PortCrane.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+		PortCrane.add(new Instr(Prim.FILL, Color.black));
+		PortCrane.add(new Instr(Prim.EARC, new Arc2D.Double(-36.0,-36.0,72.0,72.0,70.0,-320.0,Arc2D.OPEN)));
+		PortCrane.add(new Instr(Prim.LINE, new Line2D.Double(0,0,0,-60)));
+	}
 	public static final ArrayList<Instr> Post = new ArrayList<Instr>();
-	public static final ArrayList<Instr> Signal_Station = new ArrayList<Instr>();
-	public static final ArrayList<Instr> Tide_Gauge = new ArrayList<Instr>();
+	static {
+		Post.add(new Instr(Prim.FILL, Color.black));
+		Post.add(new Instr(Prim.RSHP, new Ellipse2D.Double(-10,-10,20,20)));
+	}
+	public static final ArrayList<Instr> SignalStation = new ArrayList<Instr>();
+	static {
+		SignalStation.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+		SignalStation.add(new Instr(Prim.FILL, Color.black));
+		SignalStation.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-25,-25,50,50)));
+		SignalStation.add(new Instr(Prim.RSHP, new Ellipse2D.Double(-4,-4,8,8)));
+	}
+	public static final ArrayList<Instr> TideGauge = new ArrayList<Instr>();
+	static {
+		TideGauge.add(new Instr(Prim.STRK, new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+		TideGauge.add(new Instr(Prim.FILL, Color.black));
+		TideGauge.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-10,-10,20,20)));
+		TideGauge.add(new Instr(Prim.LINE, new Line2D.Double(-10,0,-30,0)));
+		TideGauge.add(new Instr(Prim.LINE, new Line2D.Double(10,0,30,0)));
+		TideGauge.add(new Instr(Prim.LINE, new Line2D.Double(0,-10,0,-80)));
+		TideGauge.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+		TideGauge.add(new Instr(Prim.LINE, new Line2D.Double(-15,-25,15,-25)));
+		TideGauge.add(new Instr(Prim.LINE, new Line2D.Double(-25,-45,25,-45)));
+		TideGauge.add(new Instr(Prim.LINE, new Line2D.Double(-15,-65,15,-65)));
+	}
 }
Index: applications/editors/josm/plugins/smed2/src/symbols/Landmarks.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/symbols/Landmarks.java	(revision 29119)
+++ applications/editors/josm/plugins/smed2/src/symbols/Landmarks.java	(revision 29120)
@@ -34,6 +34,6 @@
 	public static final ArrayList<Instr> Chimney = new ArrayList<Instr>();
 	static {
-		Chimney.add(new Instr(Prim.SYMB, Landmarks.Base));
-		Base.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+		Chimney.add(new Instr(Prim.SYMB, new Symbols.Symbol(Landmarks.Base, 1.0, 0, 0, null, null)));
+		Chimney.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
 		Chimney.add(new Instr(Prim.FILL, Color.black));
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-25.0,0.0); p.lineTo(-10.0,-120.0); p.lineTo(10.0,-120.0); p.lineTo(25.0,0.0);
@@ -62,5 +62,5 @@
 	public static final ArrayList<Instr> Cross = new ArrayList<Instr>();
 	static {
-		Cross.add(new Instr(Prim.SYMB, Landmarks.Base));
+		Cross.add(new Instr(Prim.SYMB, new Symbols.Symbol(Landmarks.Base, 1.0, 0, 0, null, null)));
 		Cross.add(new Instr(Prim.STRK, new BasicStroke(6.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
 		Cross.add(new Instr(Prim.FILL, Color.black));
@@ -70,5 +70,5 @@
 	public static final ArrayList<Instr> DishAerial = new ArrayList<Instr>();
 	static {
-		DishAerial.add(new Instr(Prim.SYMB, Landmarks.Base));
+		DishAerial.add(new Instr(Prim.SYMB, new Symbols.Symbol(Landmarks.Base, 1.0, 0, 0, null, null)));
 		DishAerial.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL)));
 		DishAerial.add(new Instr(Prim.FILL, Color.black));
@@ -82,9 +82,9 @@
 		Dome.add(new Instr(Prim.FILL, Color.black));
 		Dome.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-36,-36,72,72)));
-		Dome.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-2,-2,4,4)));
+		Dome.add(new Instr(Prim.RSHP, new Ellipse2D.Double(-4,-4,8,8)));
 	}
 	public static final ArrayList<Instr> Flagstaff = new ArrayList<Instr>();
 	static {
-		Flagstaff.add(new Instr(Prim.SYMB, Landmarks.Base));
+		Flagstaff.add(new Instr(Prim.SYMB, new Symbols.Symbol(Landmarks.Base, 1.0, 0, 0, null, null)));
 		Flagstaff.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
 		Flagstaff.add(new Instr(Prim.FILL, Color.black));
@@ -94,5 +94,5 @@
 	public static final ArrayList<Instr> FlareStack = new ArrayList<Instr>();
 	static {
-		FlareStack.add(new Instr(Prim.SYMB, Landmarks.Base));
+		FlareStack.add(new Instr(Prim.SYMB, new Symbols.Symbol(Landmarks.Base, 1.0, 0, 0, null, null)));
 		FlareStack.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
 		FlareStack.add(new Instr(Prim.FILL, Color.black));
@@ -105,5 +105,5 @@
 	public static final ArrayList<Instr> LandTower = new ArrayList<Instr>();
 	static {
-		LandTower.add(new Instr(Prim.SYMB, Landmarks.Base));
+		LandTower.add(new Instr(Prim.SYMB, new Symbols.Symbol(Landmarks.Base, 1.0, 0, 0, null, null)));
 		LandTower.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
 		LandTower.add(new Instr(Prim.FILL, Color.black));
@@ -114,5 +114,5 @@
 	public static final ArrayList<Instr> Mast = new ArrayList<Instr>();
 	static {
-		Mast.add(new Instr(Prim.SYMB, Landmarks.Base));
+		Mast.add(new Instr(Prim.SYMB, new Symbols.Symbol(Landmarks.Base, 1.0, 0, 0, null, null)));
 		Mast.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL)));
 		Mast.add(new Instr(Prim.FILL, Color.black));
@@ -122,5 +122,5 @@
 	public static final ArrayList<Instr> RadioMast = new ArrayList<Instr>();
 	static {
-		RadioMast.add(new Instr(Prim.SYMB, Landmarks.Mast));
+		RadioMast.add(new Instr(Prim.SYMB, new Symbols.Symbol(Landmarks.Mast, 1.0, 0, 0, null, null)));
 		RadioMast.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_BEVEL)));
 		RadioMast.add(new Instr(Prim.FILL, Color.black));
@@ -132,5 +132,5 @@
 	public static final ArrayList<Instr> Monument = new ArrayList<Instr>();
 	static {
-		Monument.add(new Instr(Prim.SYMB, Landmarks.Base));
+		Monument.add(new Instr(Prim.SYMB, new Symbols.Symbol(Landmarks.Base, 1.0, 0, 0, null, null)));
 		Monument.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
 		Monument.add(new Instr(Prim.FILL, Color.black));
@@ -144,5 +144,5 @@
 		Platform.add(new Instr(Prim.FILL, Color.black));
 		Platform.add(new Instr(Prim.RECT, new Rectangle2D.Double(-48,-48,96,96)));
-		Platform.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-2,-2,4,4)));
+		Platform.add(new Instr(Prim.RSHP, new Ellipse2D.Double(-4,-4,8,8)));
 	}
 	public static final ArrayList<Instr> Spire = new ArrayList<Instr>();
@@ -151,9 +151,9 @@
 		Spire.add(new Instr(Prim.FILL, Color.black));
 		Spire.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-25,-25,50,50)));
-		Spire.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-2,-2,4,4)));
+		Spire.add(new Instr(Prim.RSHP, new Ellipse2D.Double(-4,-4,8,8)));
 	}
 	public static final ArrayList<Instr> Minaret = new ArrayList<Instr>();
 	static {
-		Minaret.add(new Instr(Prim.SYMB, Landmarks.Spire));
+		Minaret.add(new Instr(Prim.SYMB, new Symbols.Symbol(Landmarks.Spire, 1.0, 0, 0, null, null)));
 		Minaret.add(new Instr(Prim.STRK, new BasicStroke(6.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
 		Minaret.add(new Instr(Prim.LINE, new Line2D.Double(0,-25,0,-50)));
@@ -171,5 +171,5 @@
 	public static final ArrayList<Instr> WaterTower = new ArrayList<Instr>();
 	static {
-		WaterTower.add(new Instr(Prim.SYMB, Landmarks.Base));
+		WaterTower.add(new Instr(Prim.SYMB, new Symbols.Symbol(Landmarks.Base, 1.0, 0, 0, null, null)));
 		WaterTower.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
 		WaterTower.add(new Instr(Prim.FILL, Color.black));
@@ -180,5 +180,5 @@
 	public static final ArrayList<Instr> WindMotor = new ArrayList<Instr>();
 	static {
-		WindMotor.add(new Instr(Prim.SYMB, Landmarks.Base));
+		WindMotor.add(new Instr(Prim.SYMB, new Symbols.Symbol(Landmarks.Base, 1.0, 0, 0, null, null)));
 		WindMotor.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
 		WindMotor.add(new Instr(Prim.FILL, Color.black));
@@ -198,5 +198,5 @@
 	public static final ArrayList<Instr> Windsock = new ArrayList<Instr>();
 	static {
-		Windsock.add(new Instr(Prim.SYMB, Landmarks.Base));
+		Windsock.add(new Instr(Prim.SYMB, new Symbols.Symbol(Landmarks.Base, 1.0, 0, 0, null, null)));
 		Windsock.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
 		Windsock.add(new Instr(Prim.FILL, Color.black));
Index: applications/editors/josm/plugins/smed2/src/symbols/Notices.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/symbols/Notices.java	(revision 29119)
+++ applications/editors/josm/plugins/smed2/src/symbols/Notices.java	(revision 29120)
@@ -15,4 +15,25 @@
 
 public class Notices {
+	public static final ArrayList<Instr> NoticeAnchor = new ArrayList<Instr>();
+	public static final ArrayList<Instr> NoticeBollard = new ArrayList<Instr>();
+	public static final ArrayList<Instr> NoticeCrossing = new ArrayList<Instr>();
+	public static final ArrayList<Instr> NoticeCrossingL = new ArrayList<Instr>();
+	public static final ArrayList<Instr> NoticeCrossingR = new ArrayList<Instr>();
+	public static final ArrayList<Instr> NoticeJunction = new ArrayList<Instr>();
+	public static final ArrayList<Instr> NoticeJunctionL = new ArrayList<Instr>();
+	public static final ArrayList<Instr> NoticeJunctionR = new ArrayList<Instr>();
+	public static final ArrayList<Instr> NoticeMotor = new ArrayList<Instr>();
+	public static final ArrayList<Instr> NoticeP = new ArrayList<Instr>();
+	public static final ArrayList<Instr> NoticeProceed = new ArrayList<Instr>();
+	public static final ArrayList<Instr> NoticeRowboat = new ArrayList<Instr>();
+	public static final ArrayList<Instr> NoticeSailboard = new ArrayList<Instr>();
+	public static final ArrayList<Instr> NoticeSailboat = new ArrayList<Instr>();
+	public static final ArrayList<Instr> NoticeSlipway = new ArrayList<Instr>();
+	public static final ArrayList<Instr> NoticeSpeedboat = new ArrayList<Instr>();
+	public static final ArrayList<Instr> NoticeSport = new ArrayList<Instr>();
+	public static final ArrayList<Instr> NoticeTurn = new ArrayList<Instr>();
+	public static final ArrayList<Instr> NoticeVHF = new ArrayList<Instr>();
+	public static final ArrayList<Instr> NoticeWaterbike = new ArrayList<Instr>();
+	public static final ArrayList<Instr> NoticeWaterski = new ArrayList<Instr>();
 	public static final ArrayList<Instr> Notice = new ArrayList<Instr>();
 	public static final ArrayList<Instr> NoticeA = new ArrayList<Instr>();
@@ -26,5 +47,4 @@
 	public static final ArrayList<Instr> Notice10a = new ArrayList<Instr>();
 	public static final ArrayList<Instr> Notice10b = new ArrayList<Instr>();
-	public static final ArrayList<Instr> NoticeAnchor = new ArrayList<Instr>();
 	public static final ArrayList<Instr> NoticeB = new ArrayList<Instr>();
 	public static final ArrayList<Instr> NoticeB2a = new ArrayList<Instr>();
@@ -37,5 +57,4 @@
 	public static final ArrayList<Instr> NoticeB7 = new ArrayList<Instr>();
 	public static final ArrayList<Instr> NoticeB8 = new ArrayList<Instr>();
-	public static final ArrayList<Instr> NoticeBollard = new ArrayList<Instr>();
 	public static final ArrayList<Instr> NoticeC1 = new ArrayList<Instr>();
 	public static final ArrayList<Instr> NoticeC2 = new ArrayList<Instr>();
@@ -43,7 +62,4 @@
 	public static final ArrayList<Instr> NoticeC5a = new ArrayList<Instr>();
 	public static final ArrayList<Instr> NoticeC5b = new ArrayList<Instr>();
-	public static final ArrayList<Instr> NoticeCrossing = new ArrayList<Instr>();
-	public static final ArrayList<Instr> NoticeCrossingL = new ArrayList<Instr>();
-	public static final ArrayList<Instr> NoticeCrossingR = new ArrayList<Instr>();
 	public static final ArrayList<Instr> NoticeD1a = new ArrayList<Instr>();
 	public static final ArrayList<Instr> NoticeD1b = new ArrayList<Instr>();
@@ -72,19 +88,3 @@
 	public static final ArrayList<Instr> Notice13 = new ArrayList<Instr>();
 	public static final ArrayList<Instr> Notice14 = new ArrayList<Instr>();
-	public static final ArrayList<Instr> NoticeJunction = new ArrayList<Instr>();
-	public static final ArrayList<Instr> NoticeJunctionL = new ArrayList<Instr>();
-	public static final ArrayList<Instr> NoticeJunctionR = new ArrayList<Instr>();
-	public static final ArrayList<Instr> NoticeMotor = new ArrayList<Instr>();
-	public static final ArrayList<Instr> NoticeP = new ArrayList<Instr>();
-	public static final ArrayList<Instr> NoticeProceed = new ArrayList<Instr>();
-	public static final ArrayList<Instr> NoticeRowboat = new ArrayList<Instr>();
-	public static final ArrayList<Instr> NoticeSailboard = new ArrayList<Instr>();
-	public static final ArrayList<Instr> NoticeSailboat = new ArrayList<Instr>();
-	public static final ArrayList<Instr> NoticeSlipway = new ArrayList<Instr>();
-	public static final ArrayList<Instr> NoticeSpeedboat = new ArrayList<Instr>();
-	public static final ArrayList<Instr> NoticeSport = new ArrayList<Instr>();
-	public static final ArrayList<Instr> NoticeTurn = new ArrayList<Instr>();
-	public static final ArrayList<Instr> NoticeVHF = new ArrayList<Instr>();
-	public static final ArrayList<Instr> NoticeWaterbike = new ArrayList<Instr>();
-	public static final ArrayList<Instr> NoticeWaterski = new ArrayList<Instr>();
 }
Index: applications/editors/josm/plugins/smed2/src/symbols/Symbols.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/symbols/Symbols.java	(revision 29119)
+++ applications/editors/josm/plugins/smed2/src/symbols/Symbols.java	(revision 29120)
@@ -23,5 +23,5 @@
 
 	public enum Prim {
-		BBOX, STRK, COLR, FILL, LINE, RECT, RRCT, ELPS, EARC, PLIN, PGON, SYMB, P1, P2, H2, H3, H4, H5, V2, D2, D3, D4, B2, S2, S3, S4, C2, X2
+		BBOX, STRK, COLR, FILL, LINE, RECT, RRCT, ELPS, EARC, PLIN, PGON, RSHP, TEXT, SYMB, P1, P2, H2, H3, H4, H5, V2, D2, D3, D4, B2, S2, S3, S4, C2, X2
 	}
 
@@ -30,8 +30,8 @@
 	}
 
-	public static final double symbolScale[] = { 1.0, 128.0, 64.0, 32.0, 16.0, 8.0, 4.0, 2.0, 1.0, 0.61, 0.372, 0.227, 0.138,
+	public static final double symbolScale[] = { 256.0, 128.0, 64.0, 32.0, 16.0, 8.0, 4.0, 2.0, 1.0, 0.61, 0.372, 0.227, 0.138,
 			0.0843, 0.0514, 0.0313, 0.0191, 0.0117, 0.007, 0.138 };
 
-	public static final double textScale[] = { 1.0, 128.0, 64.0, 32.0, 16.0, 8.0, 4.0, 2.0, 1.0, 0.5556, 0.3086, 0.1714, 0.0953,
+	public static final double textScale[] = { 256.0, 128.0, 64.0, 32.0, 16.0, 8.0, 4.0, 2.0, 1.0, 0.5556, 0.3086, 0.1714, 0.0953,
 			0.0529, 0.0294, 0.0163, 0.0091, 0.0050, 0.0028, 0.0163 };
 
@@ -84,5 +84,23 @@
 	}
 
-	public static void drawSymbol(Graphics2D g2, ArrayList<Instr> symbol, int zoom, double x, double y, Delta dd, Scheme cs) {
+	public static class Symbol {
+		ArrayList<Instr> instr;
+		double scale;
+		double x;
+		double y;
+		Delta delta;
+		Scheme scheme;
+
+		public Symbol(ArrayList<Instr> iinstr, double iscale, double ix, double iy, Delta idelta, Scheme ischeme) {
+			instr = iinstr;
+			scale = iscale;
+			x = ix;
+			y = iy;
+			delta = idelta;
+			scheme = ischeme;
+		}
+	}
+
+	public static void drawSymbol(Graphics2D g2, ArrayList<Instr> symbol, double scale, double x, double y, Delta dd, Scheme cs) {
 		int pn = 0;
 		int cn = 0;
@@ -93,5 +111,5 @@
 		AffineTransform savetr = g2.getTransform();
 		g2.translate(x, y);
-		g2.scale(symbolScale[zoom], symbolScale[zoom]);
+		g2.scale(scale, scale);
 		for (Instr item : symbol) {
 			switch (item.type) {
@@ -224,6 +242,12 @@
 				g2.fill((Path2D.Double) item.params);
 				break;
+			case RSHP:
+				g2.fill((RectangularShape) item.params);
+				break;
 			case SYMB:
-				drawSymbol(g2, (ArrayList<Instr>) item.params, 0, 0.0, 0.0, null, null);
+				Symbol s = (Symbol) item.params;
+				drawSymbol(g2, s.instr, s.scale, s.x, s.y, s.delta, s.scheme);
+				break;
+			case TEXT:
 				break;
 			}
