Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages.properties
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages.properties	(revision 26581)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages.properties	(revision 26590)
@@ -20,4 +20,6 @@
 LightVessel=Light vessel
 LightFloat=Light float
+SSWarning=Warning Signal Station
+SSTraffic=Traffic Signal Station
 Topmarks=Topmarks
 FogSignals=Fog signals
@@ -37,4 +39,5 @@
 Stake=Stake beacon
 Perch=Perch beacon
+Cairn=Cairn beacon
 
 RegionA=IALA Region A
@@ -117,4 +120,10 @@
 Magenta=Magenta
 Pink=Pink
+NoPat=No Pattern
+HorizPat=Horizontal Stripes
+VertPat=Vertical Stripes
+DiagPat=Diagonal Stripes
+SquarePat=Squared Pattern
+BorderPat=Border Stripe
 
 UKPurpose=Unknown Purpose
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelCol.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelCol.java	(revision 26581)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelCol.java	(revision 26590)
@@ -36,5 +36,5 @@
 					if (dlg.mark != null) {
 						dlg.mark.setColour(ent, col);
-						act.actionPerformed(null);
+//						act.actionPerformed(null);
 					}
 					button.setBorderPainted(true);
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSpec.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSpec.java	(revision 26581)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSpec.java	(revision 26590)
@@ -44,5 +44,4 @@
 	public EnumMap<Shp, JRadioButton> shapes = new EnumMap<Shp, JRadioButton>(Shp.class);
 	public EnumMap<Shp, Obj> objects = new EnumMap<Shp, Obj>(Shp.class);
-	public PanelCol panelCol = null;
 	public ActionListener alShape = new ActionListener() {
 		public void actionPerformed(java.awt.event.ActionEvent e) {
@@ -52,6 +51,6 @@
 					dlg.mark.setShape(shp);
 					dlg.mark.setObject(objects.get(shp));
-					if ((button == cairnButton) && !(panelCol.offButton.isSelected()))
-						panelCol.offButton.doClick();
+					if ((button == cairnButton) && !(dlg.panelMain.panelMore.panelCol.offButton.isSelected()))
+						dlg.panelMain.panelMore.panelCol.offButton.doClick();
 					button.setBorderPainted(true);
 				} else
@@ -64,27 +63,24 @@
 	public PanelSpec(OSeaMAction dia) {
 		dlg = dia;
-		panelCol = new PanelCol(dlg, alShape, Ent.BODY);
-		panelCol.setBounds(new Rectangle(0, 0, 34, 160));
 
 		this.setLayout(null);
-		this.add(panelCol, null);
-		this.add(getShapeButton(pillarButton, 35, 0, 34, 32, "Pillar", Shp.PILLAR, Obj.BOYSPP), null);
-		this.add(getShapeButton(sparButton, 70, 0, 34, 32, "Spar", Shp.SPAR, Obj.BOYSPP), null);
-		this.add(getShapeButton(canButton, 105, 0, 34, 32, "Can", Shp.CAN, Obj.BOYSPP), null);
-		this.add(getShapeButton(coneButton, 140, 0, 34, 32, "Cone", Shp.CONE, Obj.BOYSPP), null);
-		this.add(getShapeButton(sphereButton, 35, 32, 34, 32, "Sphere", Shp.SPHERE, Obj.BOYSPP), null);
-		this.add(getShapeButton(barrelButton, 70, 32, 34, 32, "Barrel", Shp.BARREL, Obj.BOYSPP), null);
-		this.add(getShapeButton(superButton, 105, 32, 34, 32, "Super", Shp.SUPER, Obj.BOYSPP), null);
-		this.add(getShapeButton(floatButton, 140, 32, 34, 32, "Float", Shp.FLOAT, Obj.LITFLT), null);
-		this.add(getShapeButton(beaconButton, 35, 64, 34, 32, "Beacon", Shp.BEACON, Obj.BCNSPP), null);
-		this.add(getShapeButton(towerButton, 70, 64, 34, 32, "Tower", Shp.TOWER, Obj.BCNSPP), null);
-		this.add(getShapeButton(stakeButton, 105, 64, 34, 32, "Stake", Shp.STAKE, Obj.BCNSPP), null);
-		this.add(getShapeButton(cairnButton, 140, 64, 34, 32, "Cairn", Shp.CAIRN, Obj.BCNSPP), null);
+		this.add(getShapeButton(pillarButton, 0, 0, 34, 32, "Pillar", Shp.PILLAR, Obj.BOYSPP), null);
+		this.add(getShapeButton(sparButton, 35, 0, 34, 32, "Spar", Shp.SPAR, Obj.BOYSPP), null);
+		this.add(getShapeButton(canButton, 70, 0, 34, 32, "Can", Shp.CAN, Obj.BOYSPP), null);
+		this.add(getShapeButton(coneButton, 105, 0, 34, 32, "Cone", Shp.CONE, Obj.BOYSPP), null);
+		this.add(getShapeButton(sphereButton, 140, 0, 34, 32, "Sphere", Shp.SPHERE, Obj.BOYSPP), null);
+		this.add(getShapeButton(barrelButton, 35, 32, 34, 32, "Barrel", Shp.BARREL, Obj.BOYSPP), null);
+		this.add(getShapeButton(superButton, 70, 32, 34, 32, "Super", Shp.SUPER, Obj.BOYSPP), null);
+		this.add(getShapeButton(floatButton, 105, 32, 34, 32, "Float", Shp.FLOAT, Obj.LITFLT), null);
+		this.add(getShapeButton(beaconButton, 17, 64, 34, 32, "Beacon", Shp.BEACON, Obj.BCNSPP), null);
+		this.add(getShapeButton(towerButton, 52, 64, 34, 32, "Tower", Shp.TOWER, Obj.BCNSPP), null);
+		this.add(getShapeButton(stakeButton, 87, 64, 34, 32, "Stake", Shp.STAKE, Obj.BCNSPP), null);
+		this.add(getShapeButton(cairnButton, 122, 64, 34, 32, "Cairn", Shp.CAIRN, Obj.BCNSPP), null);
 
 		categoryLabel = new JLabel(Messages.getString("Category"), SwingConstants.CENTER);
-		categoryLabel.setBounds(new Rectangle(35, 100, 140, 20));
+		categoryLabel.setBounds(new Rectangle(5, 100, 170, 20));
 		this.add(categoryLabel, null);
 		categoryBox = new JComboBox();
-		categoryBox.setBounds(new Rectangle(35, 120, 140, 20));
+		categoryBox.setBounds(new Rectangle(5, 120, 170, 20));
 		this.add(categoryBox, null);
 		categoryBox.addActionListener(alCategoryBox);
@@ -111,4 +107,5 @@
 		if (dlg.mark != null) {
 			if ((dlg.mark.getObject() != Obj.UNKNOWN) && (dlg.mark.getShape() != Shp.UNKNOWN)) {
+				dlg.panelMain.topButton.setEnabled(true);
 				dlg.panelMain.fogButton.setEnabled(true);
 				dlg.panelMain.radButton.setEnabled(true);
@@ -116,4 +113,5 @@
 				dlg.panelMain.moreButton.setVisible(true);
 			} else {
+				dlg.panelMain.topButton.setEnabled(false);
 				dlg.panelMain.fogButton.setEnabled(false);
 				dlg.panelMain.radButton.setEnabled(false);
@@ -129,7 +127,7 @@
 			if (dlg.mark.getObject() == Obj.UNKNOWN) {
 				clearSelections();
-				panelCol.yellowButton.doClick();
+				dlg.panelMain.panelMore.panelCol.yellowButton.doClick();
 			} else {
-				panelCol.colours.get(dlg.mark.getColour(Ent.BODY, 0)).doClick();
+				dlg.panelMain.panelMore.panelCol.colours.get(dlg.mark.getColour(Ent.BODY, 0)).doClick();
 			}
 			if (shapes.containsKey(dlg.mark.getShape())) {
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java	(revision 26581)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java	(revision 26590)
@@ -161,5 +161,5 @@
 		CatSTR.put(Cat.CAM_SOUTH, "south");
 		CatSTR.put(Cat.CAM_WEST, "west");
-		CatSTR.put(Cat.SPM_UNKN, "unknown");
+		CatSTR.put(Cat.SPM_UNKN, "unknown_purpose");
 		CatSTR.put(Cat.SPM_WARN, "warning");
 		CatSTR.put(Cat.SPM_CHBF, "channel_separation");
@@ -167,11 +167,11 @@
 		CatSTR.put(Cat.SPM_CABL, "cable");
 		CatSTR.put(Cat.SPM_OFAL, "outfall");
-		CatSTR.put(Cat.SPM_ODAS, "ODAS");
+		CatSTR.put(Cat.SPM_ODAS, "odas");
 		CatSTR.put(Cat.SPM_RECN, "recreational");
 		CatSTR.put(Cat.SPM_MOOR, "mooring");
-		CatSTR.put(Cat.SPM_LNBY, "LANBY");
+		CatSTR.put(Cat.SPM_LNBY, "lanby");
 		CatSTR.put(Cat.SPM_LDNG, "leading");
 		CatSTR.put(Cat.SPM_NOTC, "notice");
-		CatSTR.put(Cat.SPM_TSS, "TSS");
+		CatSTR.put(Cat.SPM_TSS, "tss");
 		CatSTR.put(Cat.SPM_FOUL, "foul");
 		CatSTR.put(Cat.SPM_DIVE, "diving");
@@ -179,5 +179,5 @@
 		CatSTR.put(Cat.SPM_ANCH, "anchorage");
 		CatSTR.put(Cat.MOR_DLPN, "dolphin");
-		CatSTR.put(Cat.MOR_DDPN, "deviation_dolphon");
+		CatSTR.put(Cat.MOR_DDPN, "deviation_dolphin");
 		CatSTR.put(Cat.MOR_BLRD, "bollard");
 		CatSTR.put(Cat.MOR_WALL, "wall");
