Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/dialogs/OSeaMAction.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/dialogs/OSeaMAction.java	(revision 24924)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/dialogs/OSeaMAction.java	(revision 24925)
@@ -7,4 +7,5 @@
 import java.awt.Dimension;
 import java.util.Collection;
+import java.util.Iterator;
 import java.util.Map;
 
@@ -20,10 +21,4 @@
 import oseam.seamarks.SeaMark;
 import oseam.seamarks.SeaMark.Obj;
-import oseam.seamarks.MarkCard;
-import oseam.seamarks.MarkIsol;
-import oseam.seamarks.MarkLat;
-import oseam.seamarks.MarkLight;
-import oseam.seamarks.MarkSpec;
-import oseam.seamarks.MarkSaw;
 import smed.plug.ifc.SmedPluginManager;
 
@@ -93,72 +88,34 @@
 
 		manager.showVisualMessage("");
-		mark = null;
 		String type = "";
 		String str = "";
 
+		mark = new SeaMark(this);
 		keys = node.getKeys();
 
 		if (keys.containsKey("seamark:type"))
 			type = keys.get("seamark:type");
-		if (type.equals("buoy_lateral")) {
-			mark = new MarkLat(this);
-			mark.setObject(Obj.BOYLAT);
-		} else if (type.equals("beacon_lateral")) {
-			mark = new MarkLat(this);
-			mark.setObject(Obj.BCNLAT);
-		} else if (type.equals("buoy_cardinal")) {
-			mark = new MarkCard(this);
-			mark.setObject(Obj.BOYCAR);
-		} else if (type.equals("beacon_cardinal")) {
-			mark = new MarkCard(this);
-			mark.setObject(Obj.BCNCAR);
-		} else if (type.equals("buoy_safe_water")) {
-			mark = new MarkSaw(this);
-			mark.setObject(Obj.BOYSAW);
-		} else if (type.equals("beacon_safe_water")) {
-			mark = new MarkSaw(this);
-			mark.setObject(Obj.BCNSAW);
-		} else if (type.equals("buoy_special_purpose")) {
-			mark = new MarkSpec(this);
-			mark.setObject(Obj.BOYSPP);
-		} else if (type.equals("beacon_special_purpose")) {
-			mark = new MarkSpec(this);
-			mark.setObject(Obj.BCNSPP);
-		} else if (type.equals("buoy_isolated_danger")) {
-			mark = new MarkIsol(this);
-			mark.setObject(Obj.BOYISD);
-		} else if (type.equals("beacon_isolated_danger")) {
-			mark = new MarkIsol(this);
-			mark.setObject(Obj.BCNISD);
-		} else if (type.equals("landmark")) {
-			mark = new MarkLight(this);
-			mark.setObject(Obj.LNDMRK);
-		} else if (type.equals("light_vessel")) {
-			mark = new MarkLight(this);
-			mark.setObject(Obj.LITVES);
-		} else if (type.equals("light_major")) {
-			mark = new MarkLight(this);
-			mark.setObject(Obj.LITMAJ);
-		} else if (type.equals("light_minor")) {
-			mark = new MarkLight(this);
-			mark.setObject(Obj.LITMIN);
-		} else if (type.equals("light_float")) {
+
+		Iterator<Obj> it = mark.objects.keySet().iterator();
+		while (it.hasNext()) {
+			Obj obj = it.next();
+			if (mark.objects.get(obj).equals(type)) {
+				mark.setObject(obj);
+			}
+		}
+
+		if (type.equals("light_float")) {
 			if (keys.containsKey("seamark:light_float:colour")) {
 				str = keys.get("seamark:light_float:colour");
 				if (str.equals("red") || str.equals("green") || str.equals("red;green;red") || str.equals("green;red;green")) {
-					mark = new MarkLat(this);
 					mark.setObject(Obj.BOYLAT);
 				} else if (str.equals("black;yellow") || str.equals("black;yellow;black") || str.equals("yellow;black")
 						|| str.equals("yellow;black;yellow")) {
-					mark = new MarkCard(this);
 					mark.setObject(Obj.BOYCAR);
 				} else if (str.equals("black;red;black")) {
-					mark = new MarkIsol(this);
 					mark.setObject(Obj.BOYISD);
 				} else if (str.equals("red;white")) {
-					mark = new MarkSaw(this);
 					mark.setObject(Obj.BOYSAW);
 				} else if (str.equals("yellow")) {
-					mark = new MarkSpec(this);
 					mark.setObject(Obj.BOYSPP);
 				}
@@ -166,5 +123,4 @@
 				str = keys.get("seamark:light_float:topmark:shape");
 				if (str.equals("cylinder") || str.equals("cone, point up")) {
-					mark = new MarkLat(this);
 					mark.setObject(Obj.BOYLAT);
 				}
@@ -172,56 +128,44 @@
 				str = keys.get("seamark:light_float:topmark:colour");
 				if (str.equals("red") || str.equals("green")) {
-					mark = new MarkLat(this);
 					mark.setObject(Obj.BOYLAT);
 				}
 			}
 		} else if (keys.containsKey("buoy_lateral:category") || keys.containsKey("buoy_lateral:shape") || keys.containsKey("buoy_lateral:colour")) {
-			mark = new MarkLat(this);
 			mark.setObject(Obj.BOYLAT);
 		} else if (keys.containsKey("beacon_lateral:category") || keys.containsKey("beacon_lateral:shape") || keys.containsKey("beacon_lateral:colour")) {
-			mark = new MarkLat(this);
 			mark.setObject(Obj.BCNLAT);
 		} else if (keys.containsKey("buoy_cardinal:category") || keys.containsKey("buoy_cardinal:shape") || keys.containsKey("buoy_cardinal:colour")) {
-			mark = new MarkCard(this);
 			mark.setObject(Obj.BOYCAR);
 		} else if (keys.containsKey("beacon_cardinal:category") || keys.containsKey("beacon_cardinal:shape") || keys.containsKey("beacon_cardinal:colour")) {
-			mark = new MarkCard(this);
 			mark.setObject(Obj.BCNCAR);
 		} else if (keys.containsKey("buoy_isolated_danger:category") || keys.containsKey("buoy_isolated_danger:shape") || keys.containsKey("buoy_isolated_danger:colour")) {
-			mark = new MarkIsol(this);
 			mark.setObject(Obj.BOYISD);
 		} else if (keys.containsKey("beacon_isolated_danger:category") || keys.containsKey("beacon_isolated_danger:shape") || keys.containsKey("beacon_isolated_danger:colour")) {
-			mark = new MarkIsol(this);
 			mark.setObject(Obj.BCNISD);
 		} else if (keys.containsKey("buoy_safe_water:category") || keys.containsKey("buoy_safe_water:shape") || keys.containsKey("buoy_safe_water:colour")) {
-			mark = new MarkSaw(this);
 			mark.setObject(Obj.BOYSAW);
 		} else if (keys.containsKey("beacon_safe_water:category") || keys.containsKey("beacon_safe_water:shape") || keys.containsKey("beacon_safe_water:colour")) {
-			mark = new MarkSaw(this);
 			mark.setObject(Obj.BCNSAW);
 		} else if (keys.containsKey("buoy_special_purpose:category") || keys.containsKey("buoy_special_purpose:shape") || keys.containsKey("buoy_special_purpose:colour")) {
-			mark = new MarkSpec(this);
 			mark.setObject(Obj.BOYSPP);
 		} else if (keys.containsKey("beacon_special_purpose:category") || keys.containsKey("beacon_special_purpose:shape") || keys.containsKey("beacon_special_purpose:colour")) {
-			mark = new MarkSpec(this);
 			mark.setObject(Obj.BCNSPP);
 		}
 
-		if (mark == null) {
+		if (mark.getObject() == Obj.UNKNOWN) {
 			manager.showVisualMessage(Messages.getString("NoMark"));
 			panelMain.clearSelections();
 		} else {
-			if (keys.containsKey("name")) {
-				panelMain.nameBox.setText(keys.get("name"));
-				panelMain.nameBox.postActionEvent();
-			}
-			if (keys.containsKey("seamark:name")) {
-				panelMain.nameBox.setText(keys.get("seamark:name"));
-				panelMain.nameBox.postActionEvent();
-			}
 			if (keys.containsKey("seamark:" + type + ":name")) {
 				panelMain.nameBox.setText(keys.get("seamark:" + type + ":name"));
 				panelMain.nameBox.postActionEvent();
-			}
+			} else if (keys.containsKey("seamark:name")) {
+				panelMain.nameBox.setText(keys.get("seamark:name"));
+				panelMain.nameBox.postActionEvent();
+			} else if (keys.containsKey("name")) {
+				panelMain.nameBox.setText(keys.get("name"));
+				panelMain.nameBox.postActionEvent();
+			} else
+				panelMain.nameBox.setText("");
 			mark.parseMark();
 			mark.paintSign();
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 24924)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelChan.java	(revision 24925)
@@ -21,6 +21,4 @@
 import oseam.seamarks.SeaMark.Shp;
 import oseam.seamarks.SeaMark.Reg;
-import oseam.seamarks.MarkLat;
-import oseam.seamarks.MarkSaw;
 
 import java.awt.event.ActionListener;
@@ -44,11 +42,11 @@
 				shp = dlg.mark.getShape();
 			if (portButton.isSelected() || prefPortButton.isSelected()) {
-				if (!(dlg.mark instanceof MarkLat)) {
-					dlg.mark = new MarkLat(dlg);
+//				if (!(dlg.mark instanceof MarkLat)) {
+//					dlg.mark = new MarkLat(dlg);
 					dlg.panelMain.topButton.setEnabled(true);
 					dlg.panelMain.fogButton.setEnabled(true);
 					dlg.panelMain.radButton.setEnabled(true);
 					dlg.panelMain.litButton.setEnabled(true);
-				}
+//				}
 				dlg.panelMain.panelTop.enableAll(false);
 				dlg.panelMain.panelTop.noTopButton.setEnabled(true);
@@ -109,11 +107,11 @@
 			}
 			if (stbdButton.isSelected() || prefStbdButton.isSelected()) {
-				if (!(dlg.mark instanceof MarkLat)) {
-					dlg.mark = new MarkLat(dlg);
+//				if (!(dlg.mark instanceof MarkLat)) {
+//					dlg.mark = new MarkLat(dlg);
 					dlg.panelMain.topButton.setEnabled(true);
 					dlg.panelMain.fogButton.setEnabled(true);
 					dlg.panelMain.radButton.setEnabled(true);
 					dlg.panelMain.litButton.setEnabled(true);
-				}
+//				}
 				dlg.panelMain.panelTop.enableAll(false);
 				dlg.panelMain.panelTop.noTopButton.setEnabled(true);
@@ -174,6 +172,6 @@
 			}
 			if (safeWaterButton.isSelected()) {
-				if (!(dlg.mark instanceof MarkSaw)) {
-					dlg.mark = new MarkSaw(dlg);
+//				if (!(dlg.mark instanceof MarkSaw)) {
+//					dlg.mark = new MarkSaw(dlg);
 					if (panelSaw.shapes.containsKey(shp)) {
 						panelSaw.shapes.get(shp).doClick();
@@ -188,5 +186,5 @@
 					dlg.panelMain.panelTop.panelCol.redButton.setEnabled(true);
 					dlg.panelMain.panelTop.panelCol.redButton.doClick();
-				}
+//				}
 				dlg.mark.setColour(Ent.BODY, Col.RED_WHITE);
 				safeWaterButton.setBorderPainted(true);
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelHaz.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelHaz.java	(revision 24924)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelHaz.java	(revision 24925)
@@ -16,7 +16,4 @@
 import oseam.Messages;
 import oseam.dialogs.OSeaMAction;
-import oseam.seamarks.MarkCard;
-import oseam.seamarks.MarkIsol;
-import oseam.seamarks.MarkLat;
 import oseam.seamarks.SeaMark.Cat;
 import oseam.seamarks.SeaMark.Col;
@@ -37,8 +34,8 @@
 		public void actionPerformed(java.awt.event.ActionEvent e) {
 			if (catButtons.getSelection() != null) {
-				if (!(dlg.mark instanceof MarkCard) && !isolButton.isSelected()) {
-					dlg.mark = new MarkCard(dlg);
-					alShape.actionPerformed(null);
-				}
+//				if (!(dlg.mark instanceof MarkCard) && !isolButton.isSelected()) {
+//					dlg.mark = new MarkCard(dlg);
+//					alShape.actionPerformed(null);
+//				}
 				dlg.panelMain.topButton.setEnabled(true);
 				dlg.panelMain.fogButton.setEnabled(true);
@@ -87,8 +84,8 @@
 			}
 			if (isolButton.isSelected()) {
-				if (!(dlg.mark instanceof MarkIsol)) {
-					dlg.mark = new MarkIsol(dlg);
-					alShape.actionPerformed(null);
-				}
+//				if (!(dlg.mark instanceof MarkIsol)) {
+//					dlg.mark = new MarkIsol(dlg);
+//					alShape.actionPerformed(null);
+//				}
 				dlg.mark.setColour(Ent.BODY, Col.BLACK_RED_BLACK);
 				dlg.panelMain.panelTop.spheres2TopButton.setEnabled(true);
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 24924)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMain.java	(revision 24925)
@@ -18,10 +18,4 @@
 import oseam.Messages;
 import oseam.dialogs.OSeaMAction;
-import oseam.seamarks.MarkLat;
-import oseam.seamarks.MarkSaw;
-import oseam.seamarks.MarkCard;
-import oseam.seamarks.MarkIsol;
-import oseam.seamarks.MarkSpec;
-import oseam.seamarks.MarkLight;
 
 public class PanelMain extends JPanel {
@@ -125,8 +119,8 @@
 				}
 				if (chanButton.isSelected()) {
-					if (!((dlg.mark instanceof MarkLat) || (dlg.mark instanceof MarkSaw))) {
-						dlg.mark = null;
-						clearType();
-					}
+//					if (!((dlg.mark instanceof MarkLat) || (dlg.mark instanceof MarkSaw))) {
+//						dlg.mark = null;
+//						clearType();
+//					}
 					chanButton.setBorderPainted(true);
 					panelChan.setVisible(true);
@@ -137,8 +131,8 @@
 				}
 				if (hazButton.isSelected()) {
-					if (!((dlg.mark instanceof MarkCard) || (dlg.mark instanceof MarkIsol))) {
-						dlg.mark = null;
-						clearType();
-					}
+//					if (!((dlg.mark instanceof MarkCard) || (dlg.mark instanceof MarkIsol))) {
+//						dlg.mark = null;
+//						clearType();
+//					}
 					hazButton.setBorderPainted(true);
 					panelHaz.setVisible(true);
@@ -149,7 +143,7 @@
 				}
 				if (specButton.isSelected()) {
-					if (!(dlg.mark instanceof MarkSpec)) {
-						dlg.mark = new MarkSpec(dlg);
-						clearType();
+//					if (!(dlg.mark instanceof MarkSpec)) {
+//						dlg.mark = new MarkSpec(dlg);
+//						clearType();
 						dlg.panelMain.panelSpec.panelCol.yellowButton.doClick();
 						dlg.panelMain.panelTop.enableAll(true);
@@ -161,5 +155,5 @@
 						radButton.setEnabled(true);
 						litButton.setEnabled(true);
-					}
+//					}
 					specButton.setBorderPainted(true);
 					panelSpec.setVisible(true);
@@ -170,12 +164,12 @@
 				}
 				if (lightsButton.isSelected()) {
-					if (!(dlg.mark instanceof MarkLight)) {
-						dlg.mark = new MarkLight(dlg);
-						clearType();
+//					if (!(dlg.mark instanceof MarkLight)) {
+//						dlg.mark = new MarkLight(dlg);
+//						clearType();
 						fogButton.setEnabled(true);
 						radButton.setEnabled(true);
 						litButton.setEnabled(true);
 						litButton.doClick();
-					}
+//					}
 					lightsButton.setBorderPainted(true);
 					panelLights.setVisible(true);
Index: plications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkCard.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkCard.java	(revision 24924)
+++ 	(revision )
@@ -1,82 +1,0 @@
-package oseam.seamarks;
-
-import java.util.Map;
-import javax.swing.ImageIcon;
-
-import oseam.dialogs.OSeaMAction;
-import oseam.seamarks.SeaMark;
-
-public class MarkCard extends SeaMark {
-
-	public MarkCard(OSeaMAction dia) {
-		super(dia);
-	}
-
-	public void parseMark() {
-		String str;
-		Map<String, String> keys;
-		keys = dlg.node.getKeys();
-
-		if (!dlg.panelMain.hazButton.isSelected())
-			dlg.panelMain.hazButton.doClick();
-
-		String cat = "";
-		String col = "";
-
-		if (keys.containsKey("seamark:buoy_cardinal:category"))
-			cat = keys.get("seamark:buoy_cardinal:category");
-		else if (keys.containsKey("seamark:beacon_cardinal:category"))
-			cat = keys.get("seamark:beacon_cardinal:category");
-
-		if (keys.containsKey("seamark:buoy_cardinal:colour"))
-			col = keys.get("seamark:buoy_cardinal:colour");
-		else if (keys.containsKey("seamark:beacon_cardinal:colour"))
-			col = keys.get("seamark:beacon_cardinal:colour");
-		else if (keys.containsKey("seamark:light_float:colour"))
-			col = keys.get("seamark:light_float:colour");
-
-		if (cat.isEmpty()) {
-			if (col.equals("black;yellow")) {
-				dlg.panelMain.panelHaz.northButton.doClick();
-			} else if (col.equals("black;yellow;black")) {
-				dlg.panelMain.panelHaz.eastButton.doClick();
-			} else if (col.equals("yellow;black")) {
-				dlg.panelMain.panelHaz.southButton.doClick();
-			} else if (col.equals("yellow;black;yellow")) {
-				dlg.panelMain.panelHaz.westButton.doClick();
-			}
-		} else if (cat.equals("north")) {
-			dlg.panelMain.panelHaz.northButton.doClick();
-		} else if (cat.equals("east")) {
-			dlg.panelMain.panelHaz.eastButton.doClick();
-		} else if (cat.equals("south")) {
-			dlg.panelMain.panelHaz.southButton.doClick();
-		} else if (cat.equals("west")) {
-			dlg.panelMain.panelHaz.westButton.doClick();
-		}
-
-		if (keys.containsKey("seamark:buoy_cardinal:shape")) {
-			str = keys.get("seamark:buoy_cardinal:shape");
-
-			if (str.equals("pillar")) {
-				dlg.panelMain.panelHaz.pillarButton.doClick();
-			} else if (str.equals("spar")) {
-				dlg.panelMain.panelHaz.sparButton.doClick();
-			}
-		} else if (keys.containsKey("seamark:beacon_cardinal:shape")) {
-			str = keys.get("seamark:beacon_cardinal:shape");
-			if (str.equals("tower")) {
-				dlg.panelMain.panelHaz.towerButton.doClick();
-			} else {
-				dlg.panelMain.panelHaz.beaconButton.doClick();
-			}
-		} else if (keys.containsKey("seamark:type") && (keys.get("seamark:type").equals("light_float"))) {
-			dlg.panelMain.panelHaz.floatButton.doClick();
-		} else {
-			dlg.panelMain.panelHaz.beaconButton.doClick();
-		}
-
-		super.parseMark();
-	}
-
-}
Index: plications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkIsol.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkIsol.java	(revision 24924)
+++ 	(revision )
@@ -1,51 +1,0 @@
-package oseam.seamarks;
-
-import java.util.Map;
-
-import javax.swing.ImageIcon;
-
-import oseam.dialogs.OSeaMAction;
-import oseam.seamarks.SeaMark;
-
-public class MarkIsol extends SeaMark {
-	public MarkIsol(OSeaMAction dia) {
-		super(dia);
-	}
-
-	public void parseMark() {
-
-		String str;
-		Map<String, String> keys;
-		keys = dlg.node.getKeys();
-
-		if (!dlg.panelMain.hazButton.isSelected())
-			dlg.panelMain.hazButton.doClick();
-
-		if (!dlg.panelMain.panelHaz.isolButton.isSelected())
-			dlg.panelMain.panelHaz.isolButton.doClick();
-
-		if (keys.containsKey("seamark:buoy_isolated_danger:shape")) {
-			str = keys.get("seamark:buoy_isolated_danger:shape");
-
-			if (str.equals("pillar")) {
-				dlg.panelMain.panelHaz.pillarButton.doClick();
-			} else if (str.equals("spar")) {
-				dlg.panelMain.panelHaz.sparButton.doClick();
-			}
-		} else if (keys.containsKey("seamark:beacon_isolated_danger:shape")) {
-			str = keys.get("seamark:beacon_isolated_danger:shape");
-			if (str.equals("tower")) {
-				dlg.panelMain.panelHaz.towerButton.doClick();
-			} else {
-				dlg.panelMain.panelHaz.beaconButton.doClick();
-			}
-		} else if (keys.containsKey("seamark:type") && (keys.get("seamark:type").equals("light_float"))) {
-			dlg.panelMain.panelHaz.floatButton.doClick();
-		} else {
-			dlg.panelMain.panelHaz.beaconButton.doClick();
-		}
-
-		super.parseMark();
-	}
-
-}
Index: plications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkLat.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkLat.java	(revision 24924)
+++ 	(revision )
@@ -1,200 +1,0 @@
-package oseam.seamarks;
-
-import java.util.Map;
-
-import javax.swing.ImageIcon;
-
-import oseam.dialogs.OSeaMAction;
-
-public class MarkLat extends SeaMark {
-	public MarkLat(OSeaMAction dia) {
-		super(dia);
-	}
-
-	public void parseMark() {
-
-		String str;
-		Map<String, String> keys;
-		keys = dlg.node.getKeys();
-
-		if (!dlg.panelMain.chanButton.isSelected())
-			dlg.panelMain.chanButton.doClick();
-
-		String cat = "";
-		String col = "";
-		String top = "";
-
-		if (keys.containsKey("seamark:buoy_lateral:category"))
-			cat = keys.get("seamark:buoy_lateral:category");
-		else if (keys.containsKey("seamark:beacon_lateral:category"))
-			cat = keys.get("seamark:beacon_lateral:category");
-
-		if (keys.containsKey("seamark:buoy_lateral:colour"))
-			col = keys.get("seamark:buoy_lateral:colour");
-		else if (keys.containsKey("seamark:beacon_lateral:colour"))
-			col = keys.get("seamark:beacon_lateral:colour");
-		else if (keys.containsKey("seamark:light_float:colour"))
-			col = keys.get("seamark:light_float:colour");
-
-		if (getShape() != Shp.PERCH) {
-			if (keys.containsKey("seamark:topmark:shape")) {
-				top = keys.get("seamark:topmark:shape");
-				// setTopMark(true);
-			}
-			if (keys.containsKey("seamark:topmark:colour")) {
-				if (col.isEmpty())
-					col = keys.get("seamark:topmark:colour");
-				// setTopMark(true);
-			}
-		}
-
-		if (col.isEmpty()) {
-			if (keys.containsKey("seamark:light:colour"))
-				col = keys.get("seamark:light:colour");
-		}
-
-		if (cat.isEmpty()) {
-			if (col.equals("red")) {
-				setColour(Ent.BODY, Col.RED);
-				if (top.equals("cylinder")) {
-					dlg.panelMain.panelChan.portButton.doClick();
-					dlg.panelMain.panelChan.panelPort.regionAButton.doClick();
-				} else if (top.equals("cone, point up")) {
-					dlg.panelMain.panelChan.stbdButton.doClick();
-					dlg.panelMain.panelChan.panelPort.regionBButton.doClick();
-				} else {
-					if (getRegion() == Reg.A)
-						dlg.panelMain.panelChan.portButton.doClick();
-					else
-						dlg.panelMain.panelChan.stbdButton.doClick();
-				}
-			} else if (col.equals("green")) {
-				setColour(Ent.BODY, Col.GREEN);
-				if (top.equals("cone, point up")) {
-					dlg.panelMain.panelChan.stbdButton.doClick();
-					dlg.panelMain.panelChan.panelPort.regionAButton.doClick();
-				} else if (top.equals("cylinder")) {
-					dlg.panelMain.panelChan.portButton.doClick();
-					dlg.panelMain.panelChan.panelPort.regionBButton.doClick();
-				} else {
-					if (getRegion() == Reg.A)
-						dlg.panelMain.panelChan.stbdButton.doClick();
-					else
-						dlg.panelMain.panelChan.portButton.doClick();
-				}
-			} else if (col.equals("red;green;red")) {
-				setColour(Ent.BODY, Col.RED_GREEN_RED);
-				if (top.equals("cylinder")) {
-					dlg.panelMain.panelChan.prefPortButton.doClick();
-					dlg.panelMain.panelChan.panelPort.regionAButton.doClick();
-				} else if (top.equals("cone, point up")) {
-					dlg.panelMain.panelChan.prefStbdButton.doClick();
-					dlg.panelMain.panelChan.panelPort.regionBButton.doClick();
-				} else {
-					if (getRegion() == Reg.A)
-						dlg.panelMain.panelChan.prefPortButton.doClick();
-					else
-						dlg.panelMain.panelChan.prefStbdButton.doClick();
-				}
-			} else if (col.equals("green;red;green")) {
-				setColour(Ent.BODY, Col.GREEN_RED_GREEN);
-				if (top.equals("cone, point up")) {
-					dlg.panelMain.panelChan.prefStbdButton.doClick();
-					dlg.panelMain.panelChan.panelPort.regionAButton.doClick();
-				} else if (top.equals("cylinder")) {
-					dlg.panelMain.panelChan.prefPortButton.doClick();
-					dlg.panelMain.panelChan.panelPort.regionBButton.doClick();
-				} else {
-					if (getRegion() == Reg.A)
-						dlg.panelMain.panelChan.prefStbdButton.doClick();
-					else
-						dlg.panelMain.panelChan.prefPortButton.doClick();
-				}
-			}
-		} else if (cat.equals("port")) {
-
-			dlg.panelMain.panelChan.portButton.doClick();
-
-			if (col.equals("red")) {
-				dlg.panelMain.panelChan.panelPort.regionAButton.doClick();
-			} else if (col.equals("green")) {
-				dlg.panelMain.panelChan.panelPort.regionBButton.doClick();
-			}
-		} else if (cat.equals("starboard")) {
-
-			dlg.panelMain.panelChan.stbdButton.doClick();
-
-			if (col.equals("green")) {
-				dlg.panelMain.panelChan.panelPort.regionAButton.doClick();
-			} else if (col.equals("red")) {
-				dlg.panelMain.panelChan.panelPort.regionBButton.doClick();
-			}
-		} else if (cat.equals("preferred_channel_port")) {
-
-			dlg.panelMain.panelChan.prefPortButton.doClick();
-
-			if (col.equals("red;green;red")) {
-				dlg.panelMain.panelChan.panelPort.regionAButton.doClick();
-			} else if (col.equals("green;red;green")) {
-				dlg.panelMain.panelChan.panelPort.regionBButton.doClick();
-			}
-
-		} else if (cat.equals("preferred_channel_starboard")) {
-
-			dlg.panelMain.panelChan.prefStbdButton.doClick();
-
-			if (col.equals("green;red;green")) {
-				dlg.panelMain.panelChan.panelPort.regionAButton.doClick();
-			} else if (col.equals("red;green;red")) {
-				dlg.panelMain.panelChan.panelPort.regionBButton.doClick();
-			}
-		}
-
-		if (keys.containsKey("seamark:buoy_lateral:shape"))
-			str = keys.get("seamark:buoy_lateral:shape");
-		else if (keys.containsKey("seamark:beacon_lateral:shape"))
-			str = keys.get("seamark:beacon_lateral:shape");
-		else str = "";
-
-		switch (getCategory()) {
-		case LAT_PORT:
-		case LAT_PREF_PORT:
-			if (str.equals("can"))
-				dlg.panelMain.panelChan.panelPort.canButton.doClick();
-			else if (str.equals("pillar"))
-				dlg.panelMain.panelChan.panelPort.pillarButton.doClick();
-			else if (str.equals("spar"))
-				dlg.panelMain.panelChan.panelPort.sparButton.doClick();
-			else if (str.equals("tower"))
-				setShape(Shp.TOWER);
-			else if (str.equals("perch"))
-				setShape(Shp.PERCH);
-			else if (keys.containsKey("seamark:type") && (keys.get("seamark:type").equals("light_float")))
-				dlg.panelMain.panelChan.panelPort.floatButton.doClick();
-			else
-				dlg.panelMain.panelChan.panelPort.beaconButton.doClick();
-			break;
-
-		case LAT_STBD:
-		case LAT_PREF_STBD:
-			if (str.equals("conical"))
-				dlg.panelMain.panelChan.panelStbd.coneButton.doClick();
-			else if (str.equals("pillar"))
-				dlg.panelMain.panelChan.panelStbd.pillarButton.doClick();
-			else if (str.equals("spar"))
-				dlg.panelMain.panelChan.panelStbd.sparButton.doClick();
-			else if (str.equals("tower"))
-				setShape(Shp.TOWER);
-			else if (str.equals("perch"))
-				setShape(Shp.PERCH);
-			else if (keys.containsKey("seamark:type") && (keys.get("seamark:type").equals("light_float")))
-				dlg.panelMain.panelChan.panelStbd.floatButton.doClick();
-			else
-				dlg.panelMain.panelChan.panelStbd.beaconButton.doClick();
-			break;
-		}
-
-		super.parseMark();
-	}
-
-}
Index: plications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkLight.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkLight.java	(revision 24924)
+++ 	(revision )
@@ -1,40 +1,0 @@
-package oseam.seamarks;
-
-import java.util.Map;
-
-import javax.swing.ImageIcon;
-
-import oseam.dialogs.OSeaMAction;
-import oseam.seamarks.SeaMark;
-
-public class MarkLight extends SeaMark {
-	public MarkLight(OSeaMAction dia) {
-		super(dia);
-	}
-
-	public void parseMark() {
-
-		Map<String, String> keys;
-		keys = dlg.node.getKeys();
-
-		if (!dlg.panelMain.lightsButton.isSelected())
-			dlg.panelMain.lightsButton.doClick();
-
-		if (keys.containsKey("seamark:type")) {
-			String type = keys.get("seamark:type");
-			if (type.equals("landmark"))
-				setCategory(Cat.LIGHT_HOUSE);
-			else if (type.equals("light_major"))
-				setCategory(Cat.LIGHT_MAJOR);
-			else if (type.equals("light_minor"))
-				setCategory(Cat.LIGHT_MINOR);
-			else if (type.equals("light_vessel"))
-				setCategory(Cat.LIGHT_VESSEL);
-			else if (type.equals("light_float"))
-				setCategory(Cat.LIGHT_FLOAT);
-		}
-
-		super.parseMark();
-	}
-
-}
Index: plications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkSaw.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkSaw.java	(revision 24924)
+++ 	(revision )
@@ -1,44 +1,0 @@
-package oseam.seamarks;
-
-import java.util.Map;
-
-import javax.swing.ImageIcon;
-
-import oseam.dialogs.OSeaMAction;
-import oseam.seamarks.SeaMark;
-
-public class MarkSaw extends SeaMark {
-	public MarkSaw(OSeaMAction dia) {
-		super(dia);
-	}
-
-	public void parseMark() {
-
-		String str;
-		Map<String, String> keys;
-		keys = dlg.node.getKeys();
-
-		if (!dlg.panelMain.chanButton.isSelected())
-			dlg.panelMain.chanButton.doClick();
-		if (!dlg.panelMain.panelChan.safeWaterButton.isSelected())
-			dlg.panelMain.panelChan.safeWaterButton.doClick();
-
-		if (keys.containsKey("seamark:buoy_safe_water:shape")) {
-			str = keys.get("seamark:buoy_safe_water:shape");
-
-			if (str.equals("pillar"))
-				dlg.panelMain.panelChan.panelSaw.pillarButton.doClick();
-			else if (str.equals("spar"))
-				dlg.panelMain.panelChan.panelSaw.sparButton.doClick();
-			else if (str.equals("sphere"))
-				dlg.panelMain.panelChan.panelSaw.sphereButton.doClick();
-			else if (str.equals("barrel"))
-				dlg.panelMain.panelChan.panelSaw.barrelButton.doClick();
-		} else if ((keys.containsKey("seamark:type")) && (keys.get("seamark:type").equals("light_float"))) {
-			dlg.panelMain.panelChan.panelSaw.floatButton.doClick();
-		}
-
-		super.parseMark();
-	}
-
-}
Index: plications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkSpec.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkSpec.java	(revision 24924)
+++ 	(revision )
@@ -1,77 +1,0 @@
-package oseam.seamarks;
-
-import java.util.Map;
-
-import oseam.dialogs.OSeaMAction;
-
-public class MarkSpec extends SeaMark {
-	public MarkSpec(OSeaMAction dia) {
-		super(dia);
-	}
-
-	public void parseMark() {
-
-		String str;
-		Map<String, String> keys;
-		keys = dlg.node.getKeys();
-
-		if (!dlg.panelMain.specButton.isSelected())
-			dlg.panelMain.specButton.doClick();
-
-		if (keys.containsKey("seamark:buoy_special_purpose:name"))
-			dlg.panelMain.nameBox.setText(keys.get("seamark:buoy_special_purpose:name"));
-		else if (keys.containsKey("seamark:beacon_special_purpose:name"))
-			dlg.panelMain.nameBox.setText(keys.get("seamark:beacon_special_purpose:name"));
-		else if (keys.containsKey("seamark:light_float:name"))
-			dlg.panelMain.nameBox.setText(keys.get("seamark:light_float:name"));
-
-		dlg.panelMain.panelSpec.panelCol.yellowButton.doClick();
-		dlg.panelMain.panelLit.panelCol.whiteButton.doClick();
-
-		if (keys.containsKey("seamark:buoy_special_purpose:shape")) {
-			str = keys.get("seamark:buoy_special_purpose:shape");
-
-			if (str.equals("pillar"))
-				dlg.panelMain.panelSpec.pillarButton.doClick();
-			else if (str.equals("can"))
-				dlg.panelMain.panelSpec.canButton.doClick();
-			else if (str.equals("conical"))
-				dlg.panelMain.panelSpec.coneButton.doClick();
-			else if (str.equals("spar"))
-				dlg.panelMain.panelSpec.sparButton.doClick();
-			else if (str.equals("sphere"))
-				dlg.panelMain.panelSpec.sphereButton.doClick();
-			else if (str.equals("barrel"))
-				dlg.panelMain.panelSpec.barrelButton.doClick();
-		}
-
-		if (keys.containsKey("seamark:beacon_special_purpose:shape")) {
-			str = keys.get("seamark:beacon_special_purpose:shape");
-			if (str.equals("tower"))
-				dlg.panelMain.panelSpec.towerButton.doClick();
-			else
-				dlg.panelMain.panelSpec.beaconButton.doClick();
-		}
-
-		if (keys.containsKey("seamark:light_float:colour")) {
-			dlg.panelMain.panelSpec.floatButton.doClick();
-		}
-
-		if ((keys.containsKey("seamark:type") && keys.get("seamark:type").equals("beacon_special_purpose"))
-				|| keys.containsKey("seamark:beacon_special_purpose:colour") || keys.containsKey("seamark:beacon_special_purpose:shape")) {
-			if (keys.containsKey("seamark:beacon_special_purpose:shape")
-					&& keys.get("seamark:beacon_special_purpose:shape").equals("tower"))
-				dlg.panelMain.panelSpec.towerButton.doClick();
-			else
-				dlg.panelMain.panelSpec.beaconButton.doClick();
-		} else if (keys.containsKey("seamark:light_float:colour") && keys.get("seamark:light_float:colour").equals("yellow"))
-			dlg.panelMain.panelSpec.floatButton.doClick();
-
-		if (keys.containsKey("seamark:topmark:shape")) {
-			str = keys.get("seamark:topmark:shape");
-		}
-
-		super.parseMark();
-	}
-
-}
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 24924)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java	(revision 24925)
@@ -15,7 +15,7 @@
 import oseam.dialogs.OSeaMAction;
 
-abstract public class SeaMark {
-
-	protected OSeaMAction dlg = null;
+public class SeaMark {
+
+	public OSeaMAction dlg = null;
 
 	public OSeaMAction getDlg() {
@@ -23,5 +23,5 @@
 	}
 
-	protected SeaMark(OSeaMAction dia) {
+	public SeaMark(OSeaMAction dia) {
 		dlg = dia;
 		region = Main.pref.get("tomsplugin.IALA").equals("A") ? Reg.A : Reg.B;
@@ -91,5 +91,5 @@
 
 	public enum Grp {
-		LAT, CAR, SAW, ISD, SPP, LIT
+		LAT, CAR, SAW, ISD, SPP, FLT, LIT
 	}
 
@@ -108,5 +108,5 @@
 		groups.put(Obj.LITMAJ, Grp.LIT);
 		groups.put(Obj.LITMIN, Grp.LIT);
-		groups.put(Obj.LITFLT, Grp.LIT);
+		groups.put(Obj.LITFLT, Grp.FLT);
 		groups.put(Obj.LITVES, Grp.LIT);
 		groups.put(Obj.LNDMRK, Grp.LIT);
