Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelChan.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelChan.java	(revision 24834)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelChan.java	(revision 24835)
@@ -79,7 +79,8 @@
 			public void actionPerformed(java.awt.event.ActionEvent e) {
 				if (portButton.isSelected()) {
-					if (!(dlg.mark instanceof MarkLat))
-						dlg.mark = new MarkLat(dlg);
-					dlg.mark.setCategory(Cat.PORT_HAND);
+					if (!(dlg.mark instanceof MarkLat)
+							|| (dlg.mark.getCategory() != Cat.LAT_PORT))
+						dlg.mark = new MarkLat(dlg);
+					dlg.mark.setCategory(Cat.LAT_PORT);
 					if (dlg.mark.getRegion() == SeaMark.IALA_A) {
 						dlg.mark.setColour(Col.RED);
@@ -94,9 +95,11 @@
 					portButton.setBorderPainted(false);
 					panelPort.setVisible(false);
+					panelPort.clearSelections();
 				}
 				if (stbdButton.isSelected()) {
-					if (!(dlg.mark instanceof MarkLat))
-						dlg.mark = new MarkLat(dlg);
-					dlg.mark.setCategory(Cat.STARBOARD_HAND);
+					if (!(dlg.mark instanceof MarkLat)
+							|| (dlg.mark.getCategory() != Cat.LAT_STBD))
+						dlg.mark = new MarkLat(dlg);
+					dlg.mark.setCategory(Cat.LAT_STBD);
 					if (dlg.mark.getRegion() == SeaMark.IALA_A) {
 						dlg.mark.setColour(Col.GREEN);
@@ -111,9 +114,11 @@
 					stbdButton.setBorderPainted(false);
 					panelStbd.setVisible(false);
+					panelStbd.clearSelections();
 				}
 				if (prefPortButton.isSelected()) {
-					if (!(dlg.mark instanceof MarkLat))
-						dlg.mark = new MarkLat(dlg);
-					dlg.mark.setCategory(Cat.PREF_PORT_HAND);
+					if (!(dlg.mark instanceof MarkLat)
+							|| (dlg.mark.getCategory() != Cat.LAT_PREF_PORT))
+						dlg.mark = new MarkLat(dlg);
+					dlg.mark.setCategory(Cat.LAT_PREF_PORT);
 					if (dlg.mark.getRegion() == SeaMark.IALA_A) {
 						dlg.mark.setColour(Col.RED_GREEN_RED);
@@ -128,9 +133,11 @@
 					prefPortButton.setBorderPainted(false);
 					panelPrefPort.setVisible(false);
+					panelPrefPort.clearSelections();
 				}
 				if (prefStbdButton.isSelected()) {
-					if (!(dlg.mark instanceof MarkLat))
-						dlg.mark = new MarkLat(dlg);
-					dlg.mark.setCategory(Cat.PREF_STARBOARD_HAND);
+					if (!(dlg.mark instanceof MarkLat)
+							|| (dlg.mark.getCategory() != Cat.LAT_PREF_STBD))
+						dlg.mark = new MarkLat(dlg);
+					dlg.mark.setCategory(Cat.LAT_PREF_STBD);
 					if (dlg.mark.getRegion() == SeaMark.IALA_A) {
 						dlg.mark.setColour(Col.GREEN_RED_GREEN);
@@ -145,4 +152,5 @@
 					prefStbdButton.setBorderPainted(false);
 					panelPrefStbd.setVisible(false);
+					panelPrefStbd.clearSelections();
 				}
 				if (safeWaterButton.isSelected()) {
@@ -155,6 +163,8 @@
 					safeWaterButton.setBorderPainted(false);
 					panelSafeWater.setVisible(false);
-				}
-				if (dlg.mark != null) dlg.mark.paintSign();
+					panelSafeWater.clearSelections();
+				}
+				if (dlg.mark != null)
+					dlg.mark.paintSign();
 			}
 		};
@@ -181,5 +191,6 @@
 					"/images/PortButton.png")));
 			portButton.setBounds(new Rectangle(0, 0, 52, 32));
-			portButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
+			portButton.setBorder(BorderFactory.createLineBorder(Color.magenta,
+					2));
 			portButton.setToolTipText(Messages.getString("PortTip"));
 		}
@@ -192,5 +203,6 @@
 					"/images/StbdButton.png")));
 			stbdButton.setBounds(new Rectangle(0, 32, 52, 32));
-			stbdButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
+			stbdButton.setBorder(BorderFactory.createLineBorder(Color.magenta,
+					2));
 			stbdButton.setToolTipText(Messages.getString("StbdTip"));
 		}
@@ -203,5 +215,6 @@
 					.getResource("/images/PrefPortButton.png")));
 			prefPortButton.setBounds(new Rectangle(0, 64, 52, 32));
-			prefPortButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
+			prefPortButton.setBorder(BorderFactory.createLineBorder(
+					Color.magenta, 2));
 			prefPortButton.setToolTipText(Messages.getString("PrefPortTip"));
 		}
@@ -214,5 +227,6 @@
 					.getResource("/images/PrefStbdButton.png")));
 			prefStbdButton.setBounds(new Rectangle(0, 96, 52, 32));
-			prefStbdButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
+			prefStbdButton.setBorder(BorderFactory.createLineBorder(
+					Color.magenta, 2));
 			prefStbdButton.setToolTipText(Messages.getString("PrefStbdTip"));
 		}
@@ -225,5 +239,6 @@
 					.getResource("/images/SafeWaterButton.png")));
 			safeWaterButton.setBounds(new Rectangle(0, 128, 52, 32));
-	        safeWaterButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
+			safeWaterButton.setBorder(BorderFactory.createLineBorder(
+					Color.magenta, 2));
 			safeWaterButton.setToolTipText(Messages.getString("SafeWaterTip"));
 		}
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMain.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMain.java	(revision 24834)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMain.java	(revision 24835)
@@ -130,4 +130,5 @@
 					chanButton.setBorderPainted(false);
 					panelChan.setVisible(false);
+					panelChan.clearSelections();
 				}
 				if (hazButton.isSelected()) {
@@ -137,4 +138,5 @@
 					hazButton.setBorderPainted(false);
 					panelHaz.setVisible(false);
+					panelHaz.clearSelections();
 				}
 				if (specButton.isSelected()) {
@@ -146,4 +148,5 @@
 					specButton.setBorderPainted(false);
 					panelSpec.setVisible(false);
+					panelSpec.clearSelections();
 				}
 				if (lightsButton.isSelected()) {
@@ -155,4 +158,5 @@
 					lightsButton.setBorderPainted(false);
 					panelLights.setVisible(false);
+					panelLights.clearSelections();
 				}
 			}
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPort.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPort.java	(revision 24834)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPort.java	(revision 24835)
@@ -19,4 +19,6 @@
 import oseam.Messages;
 import oseam.dialogs.OSeaMAction;
+import oseam.seamarks.SeaMark;
+import oseam.seamarks.SeaMark.Shp;
 
 import java.awt.Cursor;
@@ -37,4 +39,5 @@
 	public JRadioButton towerButton = null;
 	public JRadioButton perchButton = null;
+	private ActionListener alShape = null;
 
 	public PanelPort(OSeaMAction dia) {
@@ -72,14 +75,50 @@
 		shapeButtons.add(towerButton);
 		shapeButtons.add(perchButton);
-		ActionListener alShape = new ActionListener() {
+		alShape = new ActionListener() {
 			public void actionPerformed(java.awt.event.ActionEvent e) {
-				pillarButton.setBorderPainted(pillarButton.isSelected());
-				sparButton.setBorderPainted(sparButton.isSelected());
-				canButton.setBorderPainted(canButton.isSelected());
-				floatButton.setBorderPainted(floatButton.isSelected());
-				beaconButton.setBorderPainted(beaconButton.isSelected());
-				towerButton.setBorderPainted(towerButton.isSelected());
-				perchButton.setBorderPainted(perchButton.isSelected());
-				dlg.mark.paintSign();
+				if (pillarButton.isSelected()) {
+					dlg.mark.setShape(Shp.PILLAR);
+					pillarButton.setBorderPainted(true);
+				} else {
+					pillarButton.setBorderPainted(false);
+				}
+				if (sparButton.isSelected()) {
+					dlg.mark.setShape(Shp.SPAR);
+					sparButton.setBorderPainted(true);
+				} else {
+					sparButton.setBorderPainted(false);
+				}
+				if (canButton.isSelected()) {
+					dlg.mark.setShape(Shp.CAN);
+					canButton.setBorderPainted(true);
+				} else {
+					canButton.setBorderPainted(false);
+				}
+				if (floatButton.isSelected()) {
+					dlg.mark.setShape(Shp.FLOAT);
+					floatButton.setBorderPainted(true);
+				} else {
+					floatButton.setBorderPainted(false);
+				}
+				if (beaconButton.isSelected()) {
+					dlg.mark.setShape(Shp.BEACON);
+					beaconButton.setBorderPainted(true);
+				} else {
+					beaconButton.setBorderPainted(false);
+				}
+				if (towerButton.isSelected()) {
+					dlg.mark.setShape(Shp.TOWER);
+					towerButton.setBorderPainted(true);
+				} else {
+					towerButton.setBorderPainted(false);
+				}
+				if (perchButton.isSelected()) {
+					dlg.mark.setShape(Shp.PERCH);
+					perchButton.setBorderPainted(true);
+				} else {
+					perchButton.setBorderPainted(false);
+				}
+				if (dlg.mark != null)
+					dlg.mark.paintSign();
 			}
 		};
@@ -94,5 +133,6 @@
 
 	public void clearSelections() {
-		
+		shapeButtons.clearSelection();
+		alShape.actionPerformed(null);
 	}
 
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPrefPort.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPrefPort.java	(revision 24834)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPrefPort.java	(revision 24835)
@@ -19,4 +19,5 @@
 import oseam.Messages;
 import oseam.dialogs.OSeaMAction;
+import oseam.seamarks.SeaMark.Shp;
 
 import java.awt.Cursor;
@@ -36,4 +37,5 @@
 	public JRadioButton beaconButton = null;
 	public JRadioButton towerButton = null;
+	private ActionListener alShape = null;
 
 	public PanelPrefPort(OSeaMAction dia) {
@@ -69,13 +71,44 @@
 		shapeButtons.add(beaconButton);
 		shapeButtons.add(towerButton);
-		ActionListener alShape = new ActionListener() {
+		alShape = new ActionListener() {
 			public void actionPerformed(java.awt.event.ActionEvent e) {
-				pillarButton.setBorderPainted(pillarButton.isSelected());
-				sparButton.setBorderPainted(sparButton.isSelected());
-				canButton.setBorderPainted(canButton.isSelected());
-				floatButton.setBorderPainted(floatButton.isSelected());
-				beaconButton.setBorderPainted(beaconButton.isSelected());
-				towerButton.setBorderPainted(towerButton.isSelected());
-				dlg.mark.paintSign();
+				if (pillarButton.isSelected()) {
+					dlg.mark.setShape(Shp.PILLAR);
+					pillarButton.setBorderPainted(true);
+				} else {
+					pillarButton.setBorderPainted(false);
+				}
+				if (sparButton.isSelected()) {
+					dlg.mark.setShape(Shp.SPAR);
+					sparButton.setBorderPainted(true);
+				} else {
+					sparButton.setBorderPainted(false);
+				}
+				if (canButton.isSelected()) {
+					dlg.mark.setShape(Shp.CAN);
+					canButton.setBorderPainted(true);
+				} else {
+					canButton.setBorderPainted(false);
+				}
+				if (floatButton.isSelected()) {
+					dlg.mark.setShape(Shp.FLOAT);
+					floatButton.setBorderPainted(true);
+				} else {
+					floatButton.setBorderPainted(false);
+				}
+				if (beaconButton.isSelected()) {
+					dlg.mark.setShape(Shp.BEACON);
+					beaconButton.setBorderPainted(true);
+				} else {
+					beaconButton.setBorderPainted(false);
+				}
+				if (towerButton.isSelected()) {
+					dlg.mark.setShape(Shp.TOWER);
+					towerButton.setBorderPainted(true);
+				} else {
+					towerButton.setBorderPainted(false);
+				}
+				if (dlg.mark != null)
+					dlg.mark.paintSign();
 			}
 		};
@@ -89,5 +122,6 @@
 
 	public void clearSelections() {
-		
+		shapeButtons.clearSelection();
+		alShape.actionPerformed(null);
 	}
 
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPrefStbd.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPrefStbd.java	(revision 24834)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPrefStbd.java	(revision 24835)
@@ -19,4 +19,5 @@
 import oseam.Messages;
 import oseam.dialogs.OSeaMAction;
+import oseam.seamarks.SeaMark.Shp;
 
 import java.awt.Cursor;
@@ -36,4 +37,5 @@
 	public JRadioButton beaconButton = null;
 	public JRadioButton towerButton = null;
+	private ActionListener alShape = null;
 
 	public PanelPrefStbd(OSeaMAction dia) {
@@ -69,13 +71,44 @@
 		shapeButtons.add(beaconButton);
 		shapeButtons.add(towerButton);
-		ActionListener alShape = new ActionListener() {
+		alShape = new ActionListener() {
 			public void actionPerformed(java.awt.event.ActionEvent e) {
-				pillarButton.setBorderPainted(pillarButton.isSelected());
-				sparButton.setBorderPainted(sparButton.isSelected());
-				coneButton.setBorderPainted(coneButton.isSelected());
-				floatButton.setBorderPainted(floatButton.isSelected());
-				beaconButton.setBorderPainted(beaconButton.isSelected());
-				towerButton.setBorderPainted(towerButton.isSelected());
-				dlg.mark.paintSign();
+				if (pillarButton.isSelected()) {
+					dlg.mark.setShape(Shp.PILLAR);
+					pillarButton.setBorderPainted(true);
+				} else {
+					pillarButton.setBorderPainted(false);
+				}
+				if (sparButton.isSelected()) {
+					dlg.mark.setShape(Shp.SPAR);
+					sparButton.setBorderPainted(true);
+				} else {
+					sparButton.setBorderPainted(false);
+				}
+				if (coneButton.isSelected()) {
+					dlg.mark.setShape(Shp.CONE);
+					coneButton.setBorderPainted(true);
+				} else {
+					coneButton.setBorderPainted(false);
+				}
+				if (floatButton.isSelected()) {
+					dlg.mark.setShape(Shp.FLOAT);
+					floatButton.setBorderPainted(true);
+				} else {
+					floatButton.setBorderPainted(false);
+				}
+				if (beaconButton.isSelected()) {
+					dlg.mark.setShape(Shp.BEACON);
+					beaconButton.setBorderPainted(true);
+				} else {
+					beaconButton.setBorderPainted(false);
+				}
+				if (towerButton.isSelected()) {
+					dlg.mark.setShape(Shp.TOWER);
+					towerButton.setBorderPainted(true);
+				} else {
+					towerButton.setBorderPainted(false);
+				}
+				if (dlg.mark != null)
+					dlg.mark.paintSign();
 			}
 		};
@@ -89,5 +122,6 @@
 
 	public void clearSelections() {
-		
+		shapeButtons.clearSelection();
+		alShape.actionPerformed(null);
 	}
 
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSafeWater.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSafeWater.java	(revision 24834)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSafeWater.java	(revision 24835)
@@ -19,4 +19,5 @@
 import oseam.Messages;
 import oseam.dialogs.OSeaMAction;
+import oseam.seamarks.SeaMark.Shp;
 
 import java.awt.Cursor;
@@ -32,4 +33,5 @@
 	private JRadioButton barrelButton = null;
 	private JRadioButton floatButton = null;
+	private ActionListener alShape = null;
 
 	public PanelSafeWater(OSeaMAction dia) {
@@ -48,11 +50,38 @@
 		shapeButtons.add(barrelButton);
 		shapeButtons.add(floatButton);
-		ActionListener alShape = new ActionListener() {
+		alShape = new ActionListener() {
 			public void actionPerformed(java.awt.event.ActionEvent e) {
-				pillarButton.setBorderPainted(pillarButton.isSelected());
-				sparButton.setBorderPainted(sparButton.isSelected());
-				sphereButton.setBorderPainted(sphereButton.isSelected());
-				barrelButton.setBorderPainted(barrelButton.isSelected());
-				floatButton.setBorderPainted(floatButton.isSelected());
+				if (pillarButton.isSelected()) {
+					dlg.mark.setShape(Shp.PILLAR);
+					pillarButton.setBorderPainted(true);
+				} else {
+					pillarButton.setBorderPainted(false);
+				}
+				if (sparButton.isSelected()) {
+					dlg.mark.setShape(Shp.SPAR);
+					sparButton.setBorderPainted(true);
+				} else {
+					sparButton.setBorderPainted(false);
+				}
+				if (sphereButton.isSelected()) {
+					dlg.mark.setShape(Shp.SPHERE);
+					sphereButton.setBorderPainted(true);
+				} else {
+					sphereButton.setBorderPainted(false);
+				}
+				if (barrelButton.isSelected()) {
+					dlg.mark.setShape(Shp.BARREL);
+					barrelButton.setBorderPainted(true);
+				} else {
+					barrelButton.setBorderPainted(false);
+				}
+				if (floatButton.isSelected()) {
+					dlg.mark.setShape(Shp.FLOAT);
+					floatButton.setBorderPainted(true);
+				} else {
+					floatButton.setBorderPainted(false);
+				}
+				if (dlg.mark != null)
+					dlg.mark.paintSign();
 			}
 		};
@@ -65,5 +94,6 @@
 
 	public void clearSelections() {
-		
+		shapeButtons.clearSelection();
+		alShape.actionPerformed(null);
 	}
 
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelStbd.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelStbd.java	(revision 24834)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelStbd.java	(revision 24835)
@@ -19,4 +19,5 @@
 import oseam.Messages;
 import oseam.dialogs.OSeaMAction;
+import oseam.seamarks.SeaMark.Shp;
 
 import java.awt.Cursor;
@@ -37,4 +38,5 @@
 	public JRadioButton towerButton = null;
 	public JRadioButton perchButton = null;
+	private ActionListener alShape = null;
 
 	public PanelStbd(OSeaMAction dia) {
@@ -72,14 +74,50 @@
 		shapeButtons.add(towerButton);
 		shapeButtons.add(perchButton);
-		ActionListener alShape = new ActionListener() {
+		alShape = new ActionListener() {
 			public void actionPerformed(java.awt.event.ActionEvent e) {
-				pillarButton.setBorderPainted(pillarButton.isSelected());
-				sparButton.setBorderPainted(sparButton.isSelected());
-				coneButton.setBorderPainted(coneButton.isSelected());
-				floatButton.setBorderPainted(floatButton.isSelected());
-				beaconButton.setBorderPainted(beaconButton.isSelected());
-				towerButton.setBorderPainted(towerButton.isSelected());
-				perchButton.setBorderPainted(perchButton.isSelected());
-				dlg.mark.paintSign();
+				if (pillarButton.isSelected()) {
+					dlg.mark.setShape(Shp.PILLAR);
+					pillarButton.setBorderPainted(true);
+				} else {
+					pillarButton.setBorderPainted(false);
+				}
+				if (sparButton.isSelected()) {
+					dlg.mark.setShape(Shp.SPAR);
+					sparButton.setBorderPainted(true);
+				} else {
+					sparButton.setBorderPainted(false);
+				}
+				if (coneButton.isSelected()) {
+					dlg.mark.setShape(Shp.CONE);
+					coneButton.setBorderPainted(true);
+				} else {
+					coneButton.setBorderPainted(false);
+				}
+				if (floatButton.isSelected()) {
+					dlg.mark.setShape(Shp.FLOAT);
+					floatButton.setBorderPainted(true);
+				} else {
+					floatButton.setBorderPainted(false);
+				}
+				if (beaconButton.isSelected()) {
+					dlg.mark.setShape(Shp.BEACON);
+					beaconButton.setBorderPainted(true);
+				} else {
+					beaconButton.setBorderPainted(false);
+				}
+				if (towerButton.isSelected()) {
+					dlg.mark.setShape(Shp.TOWER);
+					towerButton.setBorderPainted(true);
+				} else {
+					towerButton.setBorderPainted(false);
+				}
+				if (perchButton.isSelected()) {
+					dlg.mark.setShape(Shp.PERCH);
+					perchButton.setBorderPainted(true);
+				} else {
+					perchButton.setBorderPainted(false);
+				}
+				if (dlg.mark != null)
+					dlg.mark.paintSign();
 			}
 		};
@@ -94,5 +132,6 @@
 
 	public void clearSelections() {
-		
+		shapeButtons.clearSelection();
+		alShape.actionPerformed(null);
 	}
 
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkLat.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkLat.java	(revision 24834)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkLat.java	(revision 24835)
@@ -259,10 +259,10 @@
 	public void setLightColour() {
 		if (getRegion() == IALA_A) {
-			if (getCategory() == Cat.PORT_HAND || getCategory() == Cat.PREF_PORT_HAND)
+			if (getCategory() == Cat.LAT_PORT || getCategory() == Cat.LAT_PREF_PORT)
 				super.setLightColour("R");
 			else
 				super.setLightColour("G");
 		} else {
-			if (getCategory() == Cat.PORT_HAND || getCategory() == Cat.PREF_PORT_HAND)
+			if (getCategory() == Cat.LAT_PORT || getCategory() == Cat.LAT_PREF_PORT)
 				super.setLightColour("G");
 			else
@@ -276,306 +276,304 @@
 		super.paintSign();
 */
-		if ((getCategory() != Cat.UNKNOWN) && (getShape() != Shp.UNKNOWN)) {
 		boolean region = getRegion();
-			Shp style = getShape();
-
-			String image = "/images/Lateral";
-
-			switch (getCategory()) {
-			case PORT_HAND:
-				if (region == IALA_A)
-					switch (style) {
-					case CAN:
-						image += "_Can_Red";
-						break;
-					case PILLAR:
-						image += "_Pillar_Red";
-						break;
-					case SPAR:
-						image += "_Spar_Red";
-						break;
-					case BEACON:
-						image += "_Beacon_Red";
-						break;
-					case TOWER:
-						image += "_Tower_Red";
-						break;
-					case FLOAT:
-						image += "_Float_Red";
-						break;
-					case PERCH:
-						image += "_Perch_Port";
-						break;
-					default:
-					}
-				else
-					switch (style) {
-					case CAN:
-						image += "_Can_Green";
-						break;
-					case PILLAR:
-						image += "_Pillar_Green";
-						break;
-					case SPAR:
-						image += "_Spar_Green";
-						break;
-					case BEACON:
-						image += "_Beacon_Green";
-						break;
-					case TOWER:
-						image += "_Tower_Green";
-						break;
-					case FLOAT:
-						image += "_Float_Green";
-						break;
-					case PERCH:
-						image += "_Perch_Port";
-						break;
-					default:
-					}
-				break;
-
-			case STARBOARD_HAND:
-				if (region == IALA_A)
-					switch (style) {
-					case CONE:
-						image += "_Cone_Green";
-						break;
-					case PILLAR:
-						image += "_Pillar_Green";
-						break;
-					case SPAR:
-						image += "_Spar_Green";
-						break;
-					case BEACON:
-						image += "_Beacon_Green";
-						break;
-					case TOWER:
-						image += "_Tower_Green";
-						break;
-					case FLOAT:
-						image += "_Float_Green";
-						break;
-					case PERCH:
-						image += "_Perch_Starboard";
-						break;
-					default:
-					}
-				else
-					switch (style) {
-					case CONE:
-						image += "_Cone_Red";
-						break;
-					case PILLAR:
-						image += "_Pillar_Red";
-						break;
-					case SPAR:
-						image += "_Spar_Red";
-						break;
-					case BEACON:
-						image += "_Beacon_Red";
-						break;
-					case TOWER:
-						image += "_Tower_Red";
-						break;
-					case FLOAT:
-						image += "_Float_Red";
-						break;
-					case PERCH:
-						image += "_Perch_Starboard";
-						break;
-					default:
-					}
-				break;
-
-			case PREF_PORT_HAND:
-				if (region == IALA_A)
-					switch (style) {
-					case CAN:
-						image += "_Can_Red_Green_Red";
-						break;
-					case PILLAR:
-						image += "_Pillar_Red_Green_Red";
-						break;
-					case SPAR:
-						image += "_Spar_Red_Green_Red";
-						break;
-					case BEACON:
-						image += "_Beacon_Red_Green_Red";
-						break;
-					case TOWER:
-						image += "_Tower_Red_Green_Red";
-						break;
-					case FLOAT:
-						image += "_Float_Red_Green_Red";
-						break;
-					default:
-					}
-				else
-					switch (style) {
-					case CAN:
-						image += "_Can_Green_Red_Green";
-						break;
-					case PILLAR:
-						image += "_Pillar_Green_Red_Green";
-						break;
-					case SPAR:
-						image += "_Spar_Green_Red_Green";
-						break;
-					case BEACON:
-						image += "_Beacon_Green_Red_Green";
-						break;
-					case TOWER:
-						image += "_Tower_Green_Red_Green";
-						break;
-					case FLOAT:
-						image += "_Float_Green_Red_Green";
-						break;
-					default:
-					}
-				break;
-
-			case PREF_STARBOARD_HAND:
-				if (region == IALA_A)
-					switch (style) {
-					case CONE:
-						image += "_Cone_Green_Red_Green";
-						break;
-					case PILLAR:
-						image += "_Pillar_Green_Red_Green";
-						break;
-					case SPAR:
-						image += "_Spar_Green_Red_Green";
-						break;
-					case BEACON:
-						image += "_Beacon_Green_Red_Green";
-						break;
-					case TOWER:
-						image += "_Tower_Green_Red_Green";
-						break;
-					case FLOAT:
-						image += "_Float_Green_Red_Green";
-						break;
-					default:
-					}
-				else
-					switch (style) {
-					case CONE:
-						image += "_Cone_Red_Green_Red";
-						break;
-					case PILLAR:
-						image += "_Pillar_Red_Green_Red";
-						break;
-					case SPAR:
-						image += "_Spar_Red_Green_Red";
-						break;
-					case BEACON:
-						image += "_Beacon_Red_Green_Red";
-						break;
-					case TOWER:
-						image += "_Tower_Red_Green_Red";
-						break;
-					case FLOAT:
-						image += "_Float_Red_Green_Red";
-						break;
-					default:
-					}
-				break;
-
-			default:
-			}
-
-			if (!image.equals("/images/Lateral")) {
-
-				image += ".png";
-				dlg.panelMain.shapeIcon.setIcon(new ImageIcon(getClass()
-						.getResource(image)));
-
-				if (hasTopMark()) {
-					image = "";
-					switch (getCategory()) {
-					case PORT_HAND:
-					case PREF_PORT_HAND:
-						if (region == IALA_A)
-							switch (style) {
-							case CAN:
-								image = "/images/Top_Can_Red_Buoy_Small.png";
-								break;
-							case PILLAR:
-							case SPAR:
-								image = "/images/Top_Can_Red_Buoy.png";
-								break;
-							case BEACON:
-							case TOWER:
-								image = "/images/Top_Can_Red_Beacon.png";
-								break;
-							case FLOAT:
-								image = "/images/Top_Can_Red_Float.png";
-								break;
-							}
-						else
-							switch (style) {
-							case CAN:
-								image = "/images/Top_Can_Green_Buoy_Small.png";
-								break;
-							case PILLAR:
-							case SPAR:
-								image = "/images/Top_Can_Green_Buoy.png";
-								break;
-							case BEACON:
-							case TOWER:
-								image = "/images/Top_Can_Green_Beacon.png";
-								break;
-							case FLOAT:
-								image = "/images/Top_Can_Green_Float.png";
-								break;
-							}
-						break;
-
-					case STARBOARD_HAND:
-					case PREF_STARBOARD_HAND:
-						if (region == IALA_A)
-							switch (style) {
-							case CONE:
-								image = "/images/Top_Cone_Green_Buoy_Small.png";
-								break;
-							case PILLAR:
-							case SPAR:
-								image = "/images/Top_Cone_Green_Buoy.png";
-								break;
-							case BEACON:
-							case TOWER:
-								image = "/images/Top_Cone_Green_Beacon.png";
-								break;
-							case FLOAT:
-								image = "/images/Top_Cone_Green_Float.png";
-								break;
-							}
-						else
-							switch (style) {
-							case CONE:
-								image = "/images/Top_Cone_Red_Buoy_Small.png";
-								break;
-							case PILLAR:
-							case SPAR:
-								image = "/images/Top_Cone_Red_Buoy.png";
-								break;
-							case BEACON:
-							case TOWER:
-								image = "/images/Top_Cone_Red_Beacon.png";
-								break;
-							case FLOAT:
-								image = "/images/Top_Cone_Red_Float.png";
-								break;
-							}
-						break;
-					}
-					if (!image.isEmpty())
-						dlg.panelMain.topIcon.setIcon(new ImageIcon(getClass()
-								.getResource(image)));
-				}
-			} else
-				dlg.panelMain.shapeIcon.setIcon(null);
+		Shp style = getShape();
+
+		String image = "/images/Lateral";
+
+		switch (getCategory()) {
+		case LAT_PORT:
+			if (region == IALA_A)
+				switch (style) {
+				case CAN:
+					image += "_Can_Red";
+					break;
+				case PILLAR:
+					image += "_Pillar_Red";
+					break;
+				case SPAR:
+					image += "_Spar_Red";
+					break;
+				case BEACON:
+					image += "_Beacon_Red";
+					break;
+				case TOWER:
+					image += "_Tower_Red";
+					break;
+				case FLOAT:
+					image += "_Float_Red";
+					break;
+				case PERCH:
+					image += "_Perch_Port";
+					break;
+				default:
+				}
+			else
+				switch (style) {
+				case CAN:
+					image += "_Can_Green";
+					break;
+				case PILLAR:
+					image += "_Pillar_Green";
+					break;
+				case SPAR:
+					image += "_Spar_Green";
+					break;
+				case BEACON:
+					image += "_Beacon_Green";
+					break;
+				case TOWER:
+					image += "_Tower_Green";
+					break;
+				case FLOAT:
+					image += "_Float_Green";
+					break;
+				case PERCH:
+					image += "_Perch_Port";
+					break;
+				default:
+				}
+			break;
+
+		case LAT_STBD:
+			if (region == IALA_A)
+				switch (style) {
+				case CONE:
+					image += "_Cone_Green";
+					break;
+				case PILLAR:
+					image += "_Pillar_Green";
+					break;
+				case SPAR:
+					image += "_Spar_Green";
+					break;
+				case BEACON:
+					image += "_Beacon_Green";
+					break;
+				case TOWER:
+					image += "_Tower_Green";
+					break;
+				case FLOAT:
+					image += "_Float_Green";
+					break;
+				case PERCH:
+					image += "_Perch_Starboard";
+					break;
+				default:
+				}
+			else
+				switch (style) {
+				case CONE:
+					image += "_Cone_Red";
+					break;
+				case PILLAR:
+					image += "_Pillar_Red";
+					break;
+				case SPAR:
+					image += "_Spar_Red";
+					break;
+				case BEACON:
+					image += "_Beacon_Red";
+					break;
+				case TOWER:
+					image += "_Tower_Red";
+					break;
+				case FLOAT:
+					image += "_Float_Red";
+					break;
+				case PERCH:
+					image += "_Perch_Starboard";
+					break;
+				default:
+				}
+			break;
+
+		case LAT_PREF_PORT:
+			if (region == IALA_A)
+				switch (style) {
+				case CAN:
+					image += "_Can_Red_Green_Red";
+					break;
+				case PILLAR:
+					image += "_Pillar_Red_Green_Red";
+					break;
+				case SPAR:
+					image += "_Spar_Red_Green_Red";
+					break;
+				case BEACON:
+					image += "_Beacon_Red_Green_Red";
+					break;
+				case TOWER:
+					image += "_Tower_Red_Green_Red";
+					break;
+				case FLOAT:
+					image += "_Float_Red_Green_Red";
+					break;
+				default:
+				}
+			else
+				switch (style) {
+				case CAN:
+					image += "_Can_Green_Red_Green";
+					break;
+				case PILLAR:
+					image += "_Pillar_Green_Red_Green";
+					break;
+				case SPAR:
+					image += "_Spar_Green_Red_Green";
+					break;
+				case BEACON:
+					image += "_Beacon_Green_Red_Green";
+					break;
+				case TOWER:
+					image += "_Tower_Green_Red_Green";
+					break;
+				case FLOAT:
+					image += "_Float_Green_Red_Green";
+					break;
+				default:
+				}
+			break;
+
+		case LAT_PREF_STBD:
+			if (region == IALA_A)
+				switch (style) {
+				case CONE:
+					image += "_Cone_Green_Red_Green";
+					break;
+				case PILLAR:
+					image += "_Pillar_Green_Red_Green";
+					break;
+				case SPAR:
+					image += "_Spar_Green_Red_Green";
+					break;
+				case BEACON:
+					image += "_Beacon_Green_Red_Green";
+					break;
+				case TOWER:
+					image += "_Tower_Green_Red_Green";
+					break;
+				case FLOAT:
+					image += "_Float_Green_Red_Green";
+					break;
+				default:
+				}
+			else
+				switch (style) {
+				case CONE:
+					image += "_Cone_Red_Green_Red";
+					break;
+				case PILLAR:
+					image += "_Pillar_Red_Green_Red";
+					break;
+				case SPAR:
+					image += "_Spar_Red_Green_Red";
+					break;
+				case BEACON:
+					image += "_Beacon_Red_Green_Red";
+					break;
+				case TOWER:
+					image += "_Tower_Red_Green_Red";
+					break;
+				case FLOAT:
+					image += "_Float_Red_Green_Red";
+					break;
+				default:
+				}
+			break;
+
+		default:
 		}
+
+		if (!image.equals("/images/Lateral")) {
+
+			image += ".png";
+			dlg.panelMain.shapeIcon.setIcon(new ImageIcon(getClass()
+					.getResource(image)));
+
+			if (hasTopMark()) {
+				image = "";
+				switch (getCategory()) {
+				case LAT_PORT:
+				case LAT_PREF_PORT:
+					if (region == IALA_A)
+						switch (style) {
+						case CAN:
+							image = "/images/Top_Can_Red_Buoy_Small.png";
+							break;
+						case PILLAR:
+						case SPAR:
+							image = "/images/Top_Can_Red_Buoy.png";
+							break;
+						case BEACON:
+						case TOWER:
+							image = "/images/Top_Can_Red_Beacon.png";
+							break;
+						case FLOAT:
+							image = "/images/Top_Can_Red_Float.png";
+							break;
+						}
+					else
+						switch (style) {
+						case CAN:
+							image = "/images/Top_Can_Green_Buoy_Small.png";
+							break;
+						case PILLAR:
+						case SPAR:
+							image = "/images/Top_Can_Green_Buoy.png";
+							break;
+						case BEACON:
+						case TOWER:
+							image = "/images/Top_Can_Green_Beacon.png";
+							break;
+						case FLOAT:
+							image = "/images/Top_Can_Green_Float.png";
+							break;
+						}
+					break;
+
+				case LAT_STBD:
+				case LAT_PREF_STBD:
+					if (region == IALA_A)
+						switch (style) {
+						case CONE:
+							image = "/images/Top_Cone_Green_Buoy_Small.png";
+							break;
+						case PILLAR:
+						case SPAR:
+							image = "/images/Top_Cone_Green_Buoy.png";
+							break;
+						case BEACON:
+						case TOWER:
+							image = "/images/Top_Cone_Green_Beacon.png";
+							break;
+						case FLOAT:
+							image = "/images/Top_Cone_Green_Float.png";
+							break;
+						}
+					else
+						switch (style) {
+						case CONE:
+							image = "/images/Top_Cone_Red_Buoy_Small.png";
+							break;
+						case PILLAR:
+						case SPAR:
+							image = "/images/Top_Cone_Red_Buoy.png";
+							break;
+						case BEACON:
+						case TOWER:
+							image = "/images/Top_Cone_Red_Beacon.png";
+							break;
+						case FLOAT:
+							image = "/images/Top_Cone_Red_Float.png";
+							break;
+						}
+					break;
+				}
+				if (!image.isEmpty())
+					dlg.panelMain.topIcon.setIcon(new ImageIcon(getClass()
+							.getResource(image)));
+			}
+		} else
+			dlg.panelMain.shapeIcon.setIcon(null);
 	}
 
@@ -592,5 +590,5 @@
 		switch (cat) {
 
-		case PORT_HAND:
+		case LAT_PORT:
 			switch (getShape()) {
 			case CAN:
@@ -676,5 +674,5 @@
 			break;
 
-		case PREF_PORT_HAND:
+		case LAT_PREF_PORT:
 			switch (getShape()) {
 			case CAN:
@@ -757,5 +755,5 @@
 			break;
 
-		case STARBOARD_HAND:
+		case LAT_STBD:
 			switch (getShape()) {
 			case CONE:
@@ -843,5 +841,5 @@
 			break;
 
-		case PREF_STARBOARD_HAND:
+		case LAT_PREF_STBD:
 			switch (getShape()) {
 			case CONE:
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkSaw.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkSaw.java	(revision 24834)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkSaw.java	(revision 24835)
@@ -89,57 +89,54 @@
 		 * if (dlg.paintlock) return; super.paintSign();
 		 */
-		if ((getCategory() != Cat.UNKNOWN) && (getShape() != Shp.UNKNOWN)) {
-
-			String image = "/images/Safe_Water";
-
-			switch (getShape()) {
-			case PILLAR:
-				image += "_Pillar";
-				break;
-			case SPAR:
-				image += "_Spar";
-				break;
-			case SPHERE:
-				image += "_Sphere";
-				break;
-			case BEACON:
-				image += "_Beacon";
-				break;
-			case FLOAT:
-				image += "_Float";
-				break;
-			default:
-			}
-
-			if (!image.equals("/images/Safe_Water")) {
-				image += ".png";
-				dlg.panelMain.shapeIcon.setIcon(new ImageIcon(getClass()
-						.getResource(image)));
-				if (hasTopMark()) {
-					image = "";
-					switch (getShape()) {
-					case PILLAR:
-					case SPAR:
-						image = "/images/Top_Sphere_Red_Buoy.png";
-						break;
-					case SPHERE:
-						image = "/images/Top_Sphere_Red_Buoy_Small.png";
-						break;
-					case BEACON:
-						image = "/images/Top_Sphere_Red_Beacon.png";
-						break;
-					case FLOAT:
-						image = "/images/Top_Sphere_Red_Float.png";
-						break;
-					}
-					if (!image.isEmpty())
-						dlg.panelMain.topIcon.setIcon(new ImageIcon(getClass()
-								.getResource(image)));
-				} else
-					dlg.panelMain.topIcon.setIcon(null);
-			} else {
-				dlg.panelMain.shapeIcon.setIcon(null);
+		String image = "/images/Safe_Water";
+
+		switch (getShape()) {
+		case PILLAR:
+			image += "_Pillar";
+			break;
+		case SPAR:
+			image += "_Spar";
+			break;
+		case SPHERE:
+			image += "_Sphere";
+			break;
+		case BEACON:
+			image += "_Beacon";
+			break;
+		case FLOAT:
+			image += "_Float";
+			break;
+		default:
+		}
+
+		if (!image.equals("/images/Safe_Water")) {
+			image += ".png";
+			dlg.panelMain.shapeIcon.setIcon(new ImageIcon(getClass()
+					.getResource(image)));
+			if (hasTopMark()) {
+				image = "";
+				switch (getShape()) {
+				case PILLAR:
+				case SPAR:
+					image = "/images/Top_Sphere_Red_Buoy.png";
+					break;
+				case SPHERE:
+					image = "/images/Top_Sphere_Red_Buoy_Small.png";
+					break;
+				case BEACON:
+					image = "/images/Top_Sphere_Red_Beacon.png";
+					break;
+				case FLOAT:
+					image = "/images/Top_Sphere_Red_Float.png";
+					break;
+				}
+				if (!image.isEmpty())
+					dlg.panelMain.topIcon.setIcon(new ImageIcon(getClass()
+							.getResource(image)));
+			} else
 				dlg.panelMain.topIcon.setIcon(null);
-			}
+		} else {
+			dlg.panelMain.shapeIcon.setIcon(null);
+			dlg.panelMain.topIcon.setIcon(null);
 		}
 	}
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 24834)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java	(revision 24835)
@@ -18,5 +18,5 @@
 
 	public enum Cat {
-		UNKNOWN, PORT_HAND, STARBOARD_HAND, PREF_PORT_HAND, PREF_STARBOARD_HAND,
+		UNKNOWN, LAT_PORT, LAT_STBD, LAT_PREF_PORT, LAT_PREF_STBD,
 		CARD_NORTH, CARD_EAST, CARD_SOUTH, CARD_WEST,
 		LIGHT_HOUSE, LIGHT_MAJOR, LIGHT_MINOR, LIGHT_VESSEL, LIGHT_FLOAT
