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 24884)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelChan.java	(revision 24885)
@@ -19,5 +19,5 @@
 import oseam.seamarks.SeaMark.Cat;
 import oseam.seamarks.SeaMark.Col;
-import oseam.seamarks.SeaMark.Obj;
+import oseam.seamarks.SeaMark.Ent;
 import oseam.seamarks.MarkLat;
 import oseam.seamarks.MarkSaw;
@@ -44,8 +44,8 @@
 				dlg.mark.setCategory(Cat.LAT_PORT);
 				if (dlg.mark.getRegion() == SeaMark.IALA_A) {
-					dlg.mark.setColour(Obj.BODY, Col.RED);
+					dlg.mark.setColour(Ent.BODY, Col.RED);
 					panelPort.regionAButton.doClick();
 				} else {
-					dlg.mark.setColour(Obj.BODY, Col.GREEN);
+					dlg.mark.setColour(Ent.BODY, Col.GREEN);
 					panelPort.regionBButton.doClick();
 				}
@@ -62,8 +62,8 @@
 				dlg.mark.setCategory(Cat.LAT_STBD);
 				if (dlg.mark.getRegion() == SeaMark.IALA_A) {
-					dlg.mark.setColour(Obj.BODY, Col.GREEN);
+					dlg.mark.setColour(Ent.BODY, Col.GREEN);
 					panelStbd.regionAButton.doClick();
 				} else {
-					dlg.mark.setColour(Obj.BODY, Col.RED);
+					dlg.mark.setColour(Ent.BODY, Col.RED);
 					panelStbd.regionBButton.doClick();
 				}
@@ -80,8 +80,8 @@
 				dlg.mark.setCategory(Cat.LAT_PREF_PORT);
 				if (dlg.mark.getRegion() == SeaMark.IALA_A) {
-					dlg.mark.setColour(Obj.BODY, Col.RED_GREEN_RED);
+					dlg.mark.setColour(Ent.BODY, Col.RED_GREEN_RED);
 					panelPort.regionAButton.doClick();
 				} else {
-					dlg.mark.setColour(Obj.BODY, Col.GREEN_RED_GREEN);
+					dlg.mark.setColour(Ent.BODY, Col.GREEN_RED_GREEN);
 					panelPort.regionBButton.doClick();
 				}
@@ -98,8 +98,8 @@
 				dlg.mark.setCategory(Cat.LAT_PREF_STBD);
 				if (dlg.mark.getRegion() == SeaMark.IALA_A) {
-					dlg.mark.setColour(Obj.BODY, Col.GREEN_RED_GREEN);
+					dlg.mark.setColour(Ent.BODY, Col.GREEN_RED_GREEN);
 					panelStbd.regionAButton.doClick();
 				} else {
-					dlg.mark.setColour(Obj.BODY, Col.RED_GREEN_RED);
+					dlg.mark.setColour(Ent.BODY, Col.RED_GREEN_RED);
 					panelStbd.regionBButton.doClick();
 				}
@@ -114,5 +114,5 @@
 				if (!(dlg.mark instanceof MarkSaw))
 					dlg.mark = new MarkSaw(dlg);
-				dlg.mark.setColour(Obj.BODY, Col.RED_WHITE);
+				dlg.mark.setColour(Ent.BODY, Col.RED_WHITE);
 				safeWaterButton.setBorderPainted(true);
 				panelSaw.setVisible(true);
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 24884)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelCol.java	(revision 24885)
@@ -18,10 +18,10 @@
 import oseam.dialogs.OSeaMAction;
 import oseam.seamarks.SeaMark.Col;
-import oseam.seamarks.SeaMark.Obj;
+import oseam.seamarks.SeaMark.Ent;
 
 public class PanelCol extends JPanel {
 
 	private OSeaMAction dlg;
-	private Obj obj;
+	private Ent ent;
 	private ButtonGroup colourButtons = new ButtonGroup();
 	public JRadioButton offButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/OffButton.png")));
@@ -43,5 +43,5 @@
 				JRadioButton button = colours.get(col);
 				if (button.isSelected()) {
-					if (dlg.mark != null) dlg.mark.setColour(obj, col);
+					if (dlg.mark != null) dlg.mark.setColour(ent, col);
 					button.setBorderPainted(true);
 				} else
@@ -51,7 +51,7 @@
 	};
 
-	public PanelCol(OSeaMAction dia, Obj object) {
+	public PanelCol(OSeaMAction dia, Ent entity) {
 		dlg = dia;
-		obj = object;
+		ent = entity;
 		this.setLayout(null);
 		this.add(getColButton(offButton, 0, 0, 34, 16, "No colour", Col.UNKNOWN), null);
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 24884)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelHaz.java	(revision 24885)
@@ -1,13 +1,16 @@
 package oseam.panels;
+
+import java.awt.event.ActionListener;
+import java.awt.Color;
+import java.awt.Rectangle;
 
 import javax.swing.BorderFactory;
 import javax.swing.JPanel;
-
-import java.awt.Color;
-import java.awt.Rectangle;
-
 import javax.swing.ButtonGroup;
 import javax.swing.ImageIcon;
 import javax.swing.JRadioButton;
+
+import java.util.EnumMap;
+import java.util.Iterator;
 
 import oseam.Messages;
@@ -17,10 +20,7 @@
 import oseam.seamarks.SeaMark.Cat;
 import oseam.seamarks.SeaMark.Col;
+import oseam.seamarks.SeaMark.Ent;
+import oseam.seamarks.SeaMark.Shp;
 import oseam.seamarks.SeaMark.Obj;
-import oseam.seamarks.SeaMark.Shp;
-
-import java.awt.event.ActionListener;
-import java.util.EnumMap;
-import java.util.Iterator;
 
 public class PanelHaz extends JPanel {
@@ -41,5 +41,5 @@
 				}
 				dlg.mark.setCategory(Cat.CARD_NORTH);
-				dlg.mark.setColour(Obj.BODY, Col.BLACK_YELLOW);
+				dlg.mark.setColour(Ent.BODY, Col.BLACK_YELLOW);
 				dlg.panelMain.panelTop.northTopButton.doClick();
 				dlg.panelMain.panelTop.panelCol.blackButton.doClick();
@@ -54,5 +54,5 @@
 				}
 				dlg.mark.setCategory(Cat.CARD_SOUTH);
-				dlg.mark.setColour(Obj.BODY, Col.YELLOW_BLACK);
+				dlg.mark.setColour(Ent.BODY, Col.YELLOW_BLACK);
 				dlg.panelMain.panelTop.southTopButton.doClick();
 				dlg.panelMain.panelTop.panelCol.blackButton.doClick();
@@ -67,5 +67,5 @@
 				}
 				dlg.mark.setCategory(Cat.CARD_EAST);
-				dlg.mark.setColour(Obj.BODY, Col.BLACK_YELLOW_BLACK);
+				dlg.mark.setColour(Ent.BODY, Col.BLACK_YELLOW_BLACK);
 				dlg.panelMain.panelTop.eastTopButton.doClick();
 				dlg.panelMain.panelTop.panelCol.blackButton.doClick();
@@ -80,5 +80,5 @@
 				}
 				dlg.mark.setCategory(Cat.CARD_WEST);
-				dlg.mark.setColour(Obj.BODY, Col.YELLOW_BLACK_YELLOW);
+				dlg.mark.setColour(Ent.BODY, Col.YELLOW_BLACK_YELLOW);
 				dlg.panelMain.panelTop.westTopButton.doClick();
 				dlg.panelMain.panelTop.panelCol.blackButton.doClick();
@@ -92,5 +92,5 @@
 					alShape.actionPerformed(null);
 				}
-				dlg.mark.setColour(Obj.BODY, Col.BLACK_RED_BLACK);
+				dlg.mark.setColour(Ent.BODY, Col.BLACK_RED_BLACK);
 				dlg.panelMain.panelTop.spheres2TopButton.doClick();
 				dlg.panelMain.panelTop.panelCol.blackButton.doClick();
@@ -111,4 +111,6 @@
 	public JRadioButton towerButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/TowerButton.png")));
 	private EnumMap<Shp, JRadioButton> shapes = new EnumMap<Shp, JRadioButton>(Shp.class);
+	private EnumMap<Shp, Obj> carObjects = new EnumMap<Shp, Obj>(Shp.class);
+	private EnumMap<Shp, Obj> isdObjects = new EnumMap<Shp, Obj>(Shp.class);
 	private ActionListener alShape = new ActionListener() {
 		public void actionPerformed(java.awt.event.ActionEvent e) {
@@ -119,4 +121,8 @@
 				if (button.isSelected()) {
 					dlg.mark.setShape(shp);
+					if (isolButton.isSelected())
+						dlg.mark.setObject(isdObjects.get(shp));
+					else
+						dlg.mark.setObject(carObjects.get(shp));
 					button.setBorderPainted(true);
 				} else
@@ -137,9 +143,9 @@
 		this.add(getCatButton(isolButton, 0, 128, 52, 32, "IsolTip"), null);
 
-		this.add(getShapeButton(pillarButton, 55, 0, 34, 32, "PillarTip", Shp.PILLAR), null);
-		this.add(getShapeButton(sparButton, 55, 32, 34, 32, "SparTip", Shp.SPAR), null);
-		this.add(getShapeButton(floatButton, 55, 64, 34, 32, "FloatTip", Shp.FLOAT), null);
-		this.add(getShapeButton(beaconButton, 55, 96, 34, 32, "BeaconTip", Shp.BEACON), null);
-		this.add(getShapeButton(towerButton, 55, 128, 34, 32, "TowerTip", Shp.TOWER), null);
+		this.add(getShapeButton(pillarButton, 55, 0, 34, 32, "PillarTip", Shp.PILLAR, Obj.BOYCAR, Obj.BOYISD), null);
+		this.add(getShapeButton(sparButton, 55, 32, 34, 32, "SparTip", Shp.SPAR, Obj.BOYCAR, Obj.BOYISD), null);
+		this.add(getShapeButton(floatButton, 55, 64, 34, 32, "FloatTip", Shp.FLOAT, Obj.LITFLT, Obj.LITFLT), null);
+		this.add(getShapeButton(beaconButton, 55, 96, 34, 32, "BeaconTip", Shp.BEACON, Obj.BCNCAR, Obj.BCNISD), null);
+		this.add(getShapeButton(towerButton, 55, 128, 34, 32, "TowerTip", Shp.TOWER, Obj.BCNCAR, Obj.BCNISD), null);
 	}
 
@@ -160,5 +166,5 @@
 	}
 
-	private JRadioButton getShapeButton(JRadioButton button, int x, int y, int w, int h, String tip, Shp shp) {
+	private JRadioButton getShapeButton(JRadioButton button, int x, int y, int w, int h, String tip, Shp shp, Obj car, Obj isd) {
 		button.setBounds(new Rectangle(x, y, w, h));
 		button.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
@@ -167,4 +173,6 @@
 		shapeButtons.add(button);
 		shapes.put(shp, button);
+		carObjects.put(shp, car);
+		isdObjects.put(shp, isd);
 		return button;
 	}
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLights.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLights.java	(revision 24884)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLights.java	(revision 24885)
@@ -1,7 +1,7 @@
 package oseam.panels;
 
+import java.awt.event.ActionListener;
 import java.awt.Color;
 import java.awt.Rectangle;
-import java.awt.event.ActionListener;
 
 import javax.swing.BorderFactory;
@@ -17,4 +17,5 @@
 import oseam.dialogs.OSeaMAction;
 import oseam.seamarks.SeaMark.Cat;
+import oseam.seamarks.SeaMark.Obj;
 
 public class PanelLights extends JPanel {
@@ -28,4 +29,5 @@
 	private JRadioButton floatButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/LightFloatButton.png")));
 	private EnumMap<Cat, JRadioButton> categories = new EnumMap<Cat, JRadioButton>(Cat.class);
+	private EnumMap<Cat, Obj> objects = new EnumMap<Cat, Obj>(Cat.class);
 	private ActionListener alCat = new ActionListener() {
 		public void actionPerformed(java.awt.event.ActionEvent e) {
@@ -36,4 +38,5 @@
 				if (button.isSelected()) {
 					dlg.mark.setCategory(cat);
+					dlg.mark.setObject(objects.get(cat));
 					button.setBorderPainted(true);
 				} else
@@ -48,9 +51,9 @@
 		dlg = dia;
 		this.setLayout(null);
-		this.add(getCatButton(houseButton, 0, 0, 34, 32, "LighthouseTip", Cat.LIGHT_HOUSE), null);
-		this.add(getCatButton(majorButton, 0, 32, 34, 32, "MajorLightTip", Cat.LIGHT_MAJOR), null);
-		this.add(getCatButton(minorButton, 0, 64, 34, 32, "MinorLightTip", Cat.LIGHT_MINOR), null);
-		this.add(getCatButton(vesselButton, 0, 96, 34, 32, "LightVesselTip", Cat.LIGHT_VESSEL), null);
-		this.add(getCatButton(floatButton, 0, 128, 34, 32, "LightFloatTip", Cat.LIGHT_FLOAT), null);
+		this.add(getCatButton(houseButton, 0, 0, 34, 32, "LighthouseTip", Cat.LIGHT_HOUSE, Obj.LNDMRK), null);
+		this.add(getCatButton(majorButton, 0, 32, 34, 32, "MajorLightTip", Cat.LIGHT_MAJOR, Obj.LIGHTS), null);
+		this.add(getCatButton(minorButton, 0, 64, 34, 32, "MinorLightTip", Cat.LIGHT_MINOR, Obj.LIGHTS), null);
+		this.add(getCatButton(vesselButton, 0, 96, 34, 32, "LightVesselTip", Cat.LIGHT_VESSEL, Obj.LITVES), null);
+		this.add(getCatButton(floatButton, 0, 128, 34, 32, "LightFloatTip", Cat.LIGHT_FLOAT, Obj.LITFLT), null);
 	}
 
@@ -59,11 +62,12 @@
 	}
 
-	private JRadioButton getCatButton(JRadioButton button, int x, int y, int w, int h, String tip, Cat cat) {
+	private JRadioButton getCatButton(JRadioButton button, int x, int y, int w, int h, String tip, Cat cat, Obj obj) {
 		button.setBounds(new Rectangle(x, y, w, h));
 		button.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
 		button.setToolTipText(Messages.getString(tip));
 		button.addActionListener(alCat);
+		catButtons.add(button);
 		categories.put(cat, button);
-		catButtons.add(button);
+		objects.put(cat, obj);
 		return button;
 	}
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLit.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLit.java	(revision 24884)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLit.java	(revision 24885)
@@ -7,5 +7,5 @@
 import oseam.Messages;
 import oseam.dialogs.OSeaMAction;
-import oseam.seamarks.SeaMark.Obj;
+import oseam.seamarks.SeaMark.Ent;
 
 public class PanelLit extends JPanel {
@@ -16,5 +16,5 @@
 	public PanelLit(OSeaMAction dia) {
 		dlg = dia;
-		panelCol = new PanelCol(dlg, Obj.LIGHT);
+		panelCol = new PanelCol(dlg, Ent.LIGHT);
 		panelCol.setBounds(new Rectangle(0, 0, 34, 160));
 		this.setLayout(null);
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 24884)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPort.java	(revision 24885)
@@ -1,29 +1,21 @@
 package oseam.panels;
 
+import java.awt.event.ActionListener;
+import java.awt.Color;
+import java.awt.Rectangle;
+
+import javax.swing.ButtonGroup;
+import javax.swing.ImageIcon;
+import javax.swing.JRadioButton;
 import javax.swing.BorderFactory;
 import javax.swing.JPanel;
 
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Rectangle;
-import java.awt.Font;
-
-import javax.swing.ButtonGroup;
-import javax.swing.ImageIcon;
-import javax.swing.JLabel;
-import javax.swing.JTextField;
-import javax.swing.JComboBox;
-import javax.swing.JCheckBox;
-import javax.swing.JRadioButton;
+import java.util.EnumMap;
+import java.util.Iterator;
 
 import oseam.Messages;
 import oseam.dialogs.OSeaMAction;
-import oseam.seamarks.SeaMark;
 import oseam.seamarks.SeaMark.Shp;
-
-import java.awt.Cursor;
-import java.awt.event.ActionListener;
-import java.util.EnumMap;
-import java.util.Iterator;
+import oseam.seamarks.SeaMark.Obj;
 
 public class PanelPort extends JPanel {
@@ -49,4 +41,5 @@
 	public JRadioButton perchButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PerchPButton.png")));
 	private EnumMap<Shp, JRadioButton> shapes = new EnumMap<Shp, JRadioButton>(Shp.class);
+	private EnumMap<Shp, Obj> objects = new EnumMap<Shp, Obj>(Shp.class);
 	private ActionListener alShape = new ActionListener() {
 		public void actionPerformed(java.awt.event.ActionEvent e) {
@@ -57,4 +50,5 @@
 				if (button.isSelected()) {
 					dlg.mark.setShape(shp);
+					dlg.mark.setObject(objects.get(shp));
 					button.setBorderPainted(true);
 				} else
@@ -71,11 +65,11 @@
 		this.add(getRegionButton(regionAButton, 0, 2, 34, 30, "RegionATip"), null);
 		this.add(getRegionButton(regionBButton, 0, 32, 34, 30, "RegionBTip"), null);
-		this.add(getShapeButton(pillarButton, 0, 64, 34, 32, "PillarTip", Shp.PILLAR), null);
-		this.add(getShapeButton(sparButton, 0, 96, 34, 32, "SparTip", Shp.SPAR), null);
-		this.add(getShapeButton(canButton, 0, 128, 34, 32, "CanTip", Shp.CAN), null);
-		this.add(getShapeButton(floatButton, 35, 0, 34, 32, "FloatTip", Shp.FLOAT), null);
-		this.add(getShapeButton(beaconButton, 35, 32, 34, 32, "BeaconTip", Shp.BEACON), null);
-		this.add(getShapeButton(towerButton, 35, 64, 34, 32, "TowerTip", Shp.TOWER), null);
-		this.add(getShapeButton(perchButton, 35, 96, 34, 32, "PerchTip", Shp.PERCH), null);
+		this.add(getShapeButton(pillarButton, 0, 64, 34, 32, "PillarTip", Shp.PILLAR, Obj.BOYLAT), null);
+		this.add(getShapeButton(sparButton, 0, 96, 34, 32, "SparTip", Shp.SPAR, Obj.BOYLAT), null);
+		this.add(getShapeButton(canButton, 0, 128, 34, 32, "CanTip", Shp.CAN, Obj.BOYLAT), null);
+		this.add(getShapeButton(floatButton, 35, 0, 34, 32, "FloatTip", Shp.FLOAT, Obj.LITFLT), null);
+		this.add(getShapeButton(beaconButton, 35, 32, 34, 32, "BeaconTip", Shp.BEACON, Obj.BCNLAT), null);
+		this.add(getShapeButton(towerButton, 35, 64, 34, 32, "TowerTip", Shp.TOWER, Obj.BCNLAT), null);
+		this.add(getShapeButton(perchButton, 35, 96, 34, 32, "PerchTip", Shp.PERCH, Obj.BCNLAT), null);
 	}
 
@@ -94,5 +88,5 @@
 	}
 
-	private JRadioButton getShapeButton(JRadioButton button, int x, int y, int w, int h, String tip, Shp shp) {
+	private JRadioButton getShapeButton(JRadioButton button, int x, int y, int w, int h, String tip, Shp shp, Obj obj) {
 		button.setBounds(new Rectangle(x, y, w, h));
 		button.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
@@ -101,4 +95,5 @@
 		shapeButtons.add(button);
 		shapes.put(shp, button);
+		objects.put(shp, obj);
 		return button;
 	}
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSaw.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSaw.java	(revision 24884)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSaw.java	(revision 24885)
@@ -1,28 +1,21 @@
 package oseam.panels;
 
+import java.awt.event.ActionListener;
+import java.awt.Color;
+import java.awt.Rectangle;
+
+import javax.swing.ButtonGroup;
+import javax.swing.ImageIcon;
+import javax.swing.JRadioButton;
 import javax.swing.BorderFactory;
 import javax.swing.JPanel;
 
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Rectangle;
-import java.awt.Font;
-
-import javax.swing.ButtonGroup;
-import javax.swing.ImageIcon;
-import javax.swing.JLabel;
-import javax.swing.JTextField;
-import javax.swing.JComboBox;
-import javax.swing.JCheckBox;
-import javax.swing.JRadioButton;
+import java.util.EnumMap;
+import java.util.Iterator;
 
 import oseam.Messages;
 import oseam.dialogs.OSeaMAction;
 import oseam.seamarks.SeaMark.Shp;
-
-import java.awt.Cursor;
-import java.awt.event.ActionListener;
-import java.util.EnumMap;
-import java.util.Iterator;
+import oseam.seamarks.SeaMark.Obj;
 
 public class PanelSaw extends JPanel {
@@ -36,4 +29,5 @@
 	private JRadioButton floatButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/FloatButton.png")));
 	private EnumMap<Shp, JRadioButton> shapes = new EnumMap<Shp, JRadioButton>(Shp.class);
+	private EnumMap<Shp, Obj> objects = new EnumMap<Shp, Obj>(Shp.class);
 	private ActionListener alShape = new ActionListener() {
 		public void actionPerformed(java.awt.event.ActionEvent e) {
@@ -44,4 +38,5 @@
 				if (button.isSelected()) {
 					dlg.mark.setShape(shp);
+					dlg.mark.setObject(objects.get(shp));
 					button.setBorderPainted(true);
 				} else
@@ -56,9 +51,9 @@
 		dlg = dia;
 		this.setLayout(null);
-		this.add(getShapeButton(pillarButton, 0, 0, 34, 32, "PillarTip", Shp.PILLAR), null);
-		this.add(getShapeButton(sparButton, 0, 32, 34, 32, "SparTip", Shp.SPAR), null);
-		this.add(getShapeButton(sphereButton, 0, 64, 34, 32, "SphereTip", Shp.SPHERE), null);
-		this.add(getShapeButton(barrelButton, 0, 96, 34, 32, "BarrelTip", Shp.BARREL), null);
-		this.add(getShapeButton(floatButton, 0, 128, 34, 32, "FloatTip", Shp.FLOAT), null);
+		this.add(getShapeButton(pillarButton, 0, 0, 34, 32, "PillarTip", Shp.PILLAR, Obj.BOYSAW), null);
+		this.add(getShapeButton(sparButton, 0, 32, 34, 32, "SparTip", Shp.SPAR, Obj.BOYSAW), null);
+		this.add(getShapeButton(sphereButton, 0, 64, 34, 32, "SphereTip", Shp.SPHERE, Obj.BOYSAW), null);
+		this.add(getShapeButton(barrelButton, 0, 96, 34, 32, "BarrelTip", Shp.BARREL, Obj.BOYSAW), null);
+		this.add(getShapeButton(floatButton, 0, 128, 34, 32, "FloatTip", Shp.FLOAT, Obj.LITFLT), null);
 	}
 
@@ -68,5 +63,5 @@
 	}
 
-	private JRadioButton getShapeButton(JRadioButton button, int x, int y, int w, int h, String tip, Shp shp) {
+	private JRadioButton getShapeButton(JRadioButton button, int x, int y, int w, int h, String tip, Shp shp, Obj obj) {
 		button.setBounds(new Rectangle(x, y, w, h));
 		button.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
@@ -75,4 +70,5 @@
 		shapeButtons.add(button);
 		shapes.put(shp, button);
+		objects.put(shp, obj);
 		return button;
 	}
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 24884)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSpec.java	(revision 24885)
@@ -1,13 +1,10 @@
 package oseam.panels;
 
-import static org.openstreetmap.josm.tools.I18n.tr;
+import java.awt.event.ActionListener;
+import java.awt.Color;
+import java.awt.Rectangle;
 
 import javax.swing.BorderFactory;
 import javax.swing.JPanel;
-
-import java.awt.Color;
-import java.awt.Rectangle;
-import java.awt.event.ActionListener;
-
 import javax.swing.ButtonGroup;
 import javax.swing.ImageIcon;
@@ -21,4 +18,5 @@
 import oseam.seamarks.SeaMark.Shp;
 import oseam.seamarks.SeaMark.Obj;
+import oseam.seamarks.SeaMark.Ent;
 
 public class PanelSpec extends JPanel {
@@ -37,4 +35,5 @@
 	private JRadioButton towerButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/TowerButton.png")));
 	private EnumMap<Shp, JRadioButton> shapes = new EnumMap<Shp, JRadioButton>(Shp.class);
+	private EnumMap<Shp, Obj> objects = new EnumMap<Shp, Obj>(Shp.class);
 	private PanelCol panelCol = null;
 	private ActionListener alShape = new ActionListener() {
@@ -46,4 +45,5 @@
 				if (button.isSelected()) {
 					dlg.mark.setShape(shp);
+					dlg.mark.setObject(objects.get(shp));
 					button.setBorderPainted(true);
 				} else
@@ -57,19 +57,19 @@
 	public PanelSpec(OSeaMAction dia) {
 		dlg = dia;
-		panelCol = new PanelCol(dlg, Obj.BODY);
+		panelCol = new PanelCol(dlg, Ent.BODY);
 		panelCol.setBounds(new Rectangle(9, 0, 34, 160));
 
 		this.setLayout(null);
 		this.add(panelCol, null);
-		this.add(getShapeButton(pillarButton, 55, 0, 34, 32, "PillarTip", Shp.PILLAR), null);
-		this.add(getShapeButton(sparButton, 55, 32, 34, 32, "SparTip", Shp.SPAR), null);
-		this.add(getShapeButton(canButton, 55, 64, 34, 32, "CanTip", Shp.CAN), null);
-		this.add(getShapeButton(coneButton, 55, 96, 34, 32, "ConeTip", Shp.CONE), null);
-		this.add(getShapeButton(sphereButton, 55, 128, 34, 32, "SphereTip", Shp.SPHERE), null);
-		this.add(getShapeButton(barrelButton, 90, 0, 34, 32, "BarrelTip", Shp.BARREL), null);
-		this.add(getShapeButton(superButton, 90, 32, 34, 32, "SuperTip", Shp.SUPER), null);
-		this.add(getShapeButton(floatButton, 90, 64, 34, 32, "FloatTip", Shp.FLOAT), null);
-		this.add(getShapeButton(beaconButton, 90, 96, 34, 32, "BeaconTip", Shp.BEACON), null);
-		this.add(getShapeButton(towerButton, 90, 128, 34, 32, "TowerTip", Shp.TOWER), null);
+		this.add(getShapeButton(pillarButton, 55, 0, 34, 32, "PillarTip", Shp.PILLAR, Obj.BOYSPP), null);
+		this.add(getShapeButton(sparButton, 55, 32, 34, 32, "SparTip", Shp.SPAR, Obj.BOYSPP), null);
+		this.add(getShapeButton(canButton, 55, 64, 34, 32, "CanTip", Shp.CAN, Obj.BOYSPP), null);
+		this.add(getShapeButton(coneButton, 55, 96, 34, 32, "ConeTip", Shp.CONE, Obj.BOYSPP), null);
+		this.add(getShapeButton(sphereButton, 55, 128, 34, 32, "SphereTip", Shp.SPHERE, Obj.BOYSPP), null);
+		this.add(getShapeButton(barrelButton, 90, 0, 34, 32, "BarrelTip", Shp.BARREL, Obj.BOYSPP), null);
+		this.add(getShapeButton(superButton, 90, 32, 34, 32, "SuperTip", Shp.SUPER, Obj.BOYSPP), null);
+		this.add(getShapeButton(floatButton, 90, 64, 34, 32, "FloatTip", Shp.FLOAT, Obj.LITFLT), null);
+		this.add(getShapeButton(beaconButton, 90, 96, 34, 32, "BeaconTip", Shp.BEACON, Obj.BCNSPP), null);
+		this.add(getShapeButton(towerButton, 90, 128, 34, 32, "TowerTip", Shp.TOWER, Obj.BCNSPP), null);
 	}
 
@@ -78,11 +78,12 @@
 	}
 
-	private JRadioButton getShapeButton(JRadioButton button, int x, int y, int w, int h, String tip, Shp shp) {
+	private JRadioButton getShapeButton(JRadioButton button, int x, int y, int w, int h, String tip, Shp shp, Obj obj) {
 		button.setBounds(new Rectangle(x, y, w, h));
 		button.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
 		button.setToolTipText(Messages.getString(tip));
 		button.addActionListener(alShape);
+		shapeButtons.add(button);
 		shapes.put(shp, button);
-		shapeButtons.add(button);
+		objects.put(shp, obj);
 		return button;
 	}
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 24884)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelStbd.java	(revision 24885)
@@ -1,28 +1,21 @@
 package oseam.panels;
 
+import java.awt.event.ActionListener;
+import java.awt.Color;
+import java.awt.Rectangle;
+
+import javax.swing.ButtonGroup;
+import javax.swing.ImageIcon;
+import javax.swing.JRadioButton;
 import javax.swing.BorderFactory;
 import javax.swing.JPanel;
 
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Rectangle;
-import java.awt.Font;
-
-import javax.swing.ButtonGroup;
-import javax.swing.ImageIcon;
-import javax.swing.JLabel;
-import javax.swing.JTextField;
-import javax.swing.JComboBox;
-import javax.swing.JCheckBox;
-import javax.swing.JRadioButton;
+import java.util.EnumMap;
+import java.util.Iterator;
 
 import oseam.Messages;
 import oseam.dialogs.OSeaMAction;
 import oseam.seamarks.SeaMark.Shp;
-
-import java.awt.Cursor;
-import java.awt.event.ActionListener;
-import java.util.EnumMap;
-import java.util.Iterator;
+import oseam.seamarks.SeaMark.Obj;
 
 public class PanelStbd extends JPanel {
@@ -48,4 +41,5 @@
 	public JRadioButton perchButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PerchSButton.png")));
 	private EnumMap<Shp, JRadioButton> shapes = new EnumMap<Shp, JRadioButton>(Shp.class);
+	private EnumMap<Shp, Obj> objects = new EnumMap<Shp, Obj>(Shp.class);
 	private ActionListener alShape = new ActionListener() {
 		public void actionPerformed(java.awt.event.ActionEvent e) {
@@ -56,4 +50,5 @@
 				if (button.isSelected()) {
 					dlg.mark.setShape(shp);
+					dlg.mark.setObject(objects.get(shp));
 					button.setBorderPainted(true);
 				} else
@@ -70,11 +65,11 @@
 		this.add(getRegionButton(regionAButton, 0, 2, 34, 30, "RegionATip"), null);
 		this.add(getRegionButton(regionBButton, 0, 32, 34, 30, "RegionBTip"), null);
-		this.add(getShapeButton(pillarButton, 0, 64, 34, 32, "PillarTip", Shp.PILLAR), null);
-		this.add(getShapeButton(sparButton, 0, 96, 34, 32, "SparTip", Shp.SPAR), null);
-		this.add(getShapeButton(coneButton, 0, 128, 34, 32, "ConeTip", Shp.CONE), null);
-		this.add(getShapeButton(floatButton, 35, 0, 34, 32, "FloatTip", Shp.FLOAT), null);
-		this.add(getShapeButton(beaconButton, 35, 32, 34, 32, "BeaconTip", Shp.BEACON), null);
-		this.add(getShapeButton(towerButton, 35, 64, 34, 32, "TowerTip", Shp.TOWER), null);
-		this.add(getShapeButton(perchButton, 35, 96, 34, 32, "PerchTip", Shp.PERCH), null);
+		this.add(getShapeButton(pillarButton, 0, 64, 34, 32, "PillarTip", Shp.PILLAR, Obj.BOYLAT), null);
+		this.add(getShapeButton(sparButton, 0, 96, 34, 32, "SparTip", Shp.SPAR, Obj.BOYLAT), null);
+		this.add(getShapeButton(coneButton, 0, 128, 34, 32, "ConeTip", Shp.CONE, Obj.BOYLAT), null);
+		this.add(getShapeButton(floatButton, 35, 0, 34, 32, "FloatTip", Shp.FLOAT, Obj.LITFLT), null);
+		this.add(getShapeButton(beaconButton, 35, 32, 34, 32, "BeaconTip", Shp.BEACON, Obj.BCNLAT), null);
+		this.add(getShapeButton(towerButton, 35, 64, 34, 32, "TowerTip", Shp.TOWER, Obj.BCNLAT), null);
+		this.add(getShapeButton(perchButton, 35, 96, 34, 32, "PerchTip", Shp.PERCH, Obj.BCNLAT), null);
 	}
 
@@ -93,5 +88,5 @@
 	}
 
-	private JRadioButton getShapeButton(JRadioButton button, int x, int y, int w, int h, String tip, Shp shp) {
+	private JRadioButton getShapeButton(JRadioButton button, int x, int y, int w, int h, String tip, Shp shp, Obj obj) {
 		button.setBounds(new Rectangle(x, y, w, h));
 		button.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
@@ -100,4 +95,5 @@
 		shapeButtons.add(button);
 		shapes.put(shp, button);
+		objects.put(shp, obj);
 		return button;
 	}
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelTop.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelTop.java	(revision 24884)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelTop.java	(revision 24885)
@@ -16,5 +16,5 @@
 import oseam.dialogs.OSeaMAction;
 import oseam.seamarks.SeaMark.Top;
-import oseam.seamarks.SeaMark.Obj;
+import oseam.seamarks.SeaMark.Ent;
 
 public class PanelTop extends JPanel {
@@ -57,5 +57,5 @@
 	public PanelTop(OSeaMAction dia) {
 		dlg = dia;
-		panelCol = new PanelCol(dlg, Obj.TOPMARK);
+		panelCol = new PanelCol(dlg, Ent.TOPMARK);
 		panelCol.setBounds(new Rectangle(0, 0, 34, 160));
 		this.setLayout(null);
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkCard.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkCard.java	(revision 24884)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkCard.java	(revision 24885)
@@ -149,112 +149,3 @@
 		super.paintSign();
 	}
-
-	public void saveSign() {
-		if (dlg.node == null)
-			return;
-		else
-			super.saveSign();
-
-		String shape = "";
-
-		switch (getShape()) {
-		case PILLAR:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_cardinal"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_cardinal:shape", "pillar"));
-			break;
-		case SPAR:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_cardinal"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_cardinal:shape", "spar"));
-			break;
-		case BEACON:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "beacon_cardinal"));
-			break;
-		case TOWER:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "beacon_cardinal"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_cardinal:shape", "tower"));
-			break;
-		case FLOAT:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "light_float"));
-			break;
-		default:
-		}
-		switch (getShape()) {
-		case PILLAR:
-		case SPAR:
-			switch (getCategory()) {
-			case CARD_NORTH:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_cardinal:category", "north"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_cardinal:colour", "black;yellow"));
-				shape = "2 cones up";
-				break;
-			case CARD_EAST:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_cardinal:category", "east"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_cardinal:colour", "black;yellow;black"));
-				shape = "2 cones base together";
-				break;
-			case CARD_SOUTH:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_cardinal:category", "south"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_cardinal:colour", "yellow;black"));
-				shape = "2 cones down";
-				break;
-			case CARD_WEST:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_cardinal:category", "west"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_cardinal:colour", "yellow;black;yellow"));
-				shape = "2 cones point together";
-				break;
-			}
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_cardinal:colour_pattern", "horizontal stripes"));
-			break;
-		case BEACON:
-		case TOWER:
-			switch (getCategory()) {
-			case CARD_NORTH:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_cardinal:category", "north"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_cardinal:colour", "black;yellow"));
-				shape = "2 cones up";
-				break;
-			case CARD_EAST:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_cardinal:category", "east"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_cardinal:colour", "black;yellow;black"));
-				shape = "2 cones base together";
-				break;
-			case CARD_SOUTH:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_cardinal:category", "south"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_cardinal:colour", "yellow;black"));
-				shape = "2 cones down";
-				break;
-			case CARD_WEST:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_cardinal:category", "west"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_cardinal:colour", "yellow;black;yellow"));
-				shape = "2 cones point together";
-				break;
-			}
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_cardinal:colour_pattern", "horizontal stripes"));
-			break;
-		case FLOAT:
-			switch (getCategory()) {
-			case CARD_NORTH:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light_float:colour", "black;yellow"));
-				shape = "2 cones up";
-				break;
-			case CARD_EAST:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light_float:colour", "black;yellow;black"));
-				shape = "2 cones base together";
-				break;
-			case CARD_SOUTH:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light_float:colour", "yellow;black"));
-				shape = "2 cones down";
-				break;
-			case CARD_WEST:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light_float:colour", "yellow;black;yellow"));
-				shape = "2 cones point together";
-				break;
-			}
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light_float:colour_pattern", "horizontal stripes"));
-			break;
-		}
-		Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:topmark:shape", shape));
-		Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:topmark:colour", "black"));
-	}
-
 }
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkIsol.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkIsol.java	(revision 24884)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkIsol.java	(revision 24885)
@@ -102,52 +102,3 @@
 		super.paintSign();
 	}
-
-	public void saveSign() {
-
-		if (dlg.node == null)
-			return;
-		else
-			super.saveSign();
-		switch (getShape()) {
-		case PILLAR:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_isolated_danger"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_isolated_danger:shape", "pillar"));
-			break;
-		case SPAR:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_isolated_danger"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_isolated_danger:shape", "spar"));
-			break;
-		case BEACON:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "beacon_isolated_danger"));
-			break;
-		case TOWER:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "beacon_isolated_danger"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_isolated_danger:shape", "tower"));
-			break;
-		case FLOAT:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "light_float"));
-			break;
-		default:
-		}
-		switch (getShape()) {
-		case PILLAR:
-		case SPAR:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_isolated_danger:colour_pattern",
-					"horizontal stripes"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_isolated_danger:colour", "black;red;black"));
-			break;
-		case BEACON:
-		case TOWER:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_isolated_danger:colour_pattern",
-					"horizontal stripes"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_isolated_danger:colour", "black;red;black"));
-			break;
-		case FLOAT:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light_float:colour_pattern", "horizontal stripes"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light_float:colour", "black;red;black"));
-			break;
-		}
-		Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:topmark:shape", "2 spheres"));
-		Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:topmark:colour", "black"));
-	}
 }
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 24884)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkLat.java	(revision 24885)
@@ -470,299 +470,3 @@
 		super.paintSign();
 	}
-
-	public void saveSign() {
-
-		if (dlg.node == null)
-			return;
-		else
-			super.saveSign();
-
-		Cat cat = getCategory();
-		String shape = "";
-		String colour = "";
-
-		switch (cat) {
-
-		case LAT_PORT:
-			switch (getShape()) {
-			case CAN:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_lateral"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_lateral:shape", "can"));
-				break;
-			case PILLAR:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_lateral"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_lateral:shape", "pillar"));
-				break;
-			case SPAR:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_lateral"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_lateral:shape", "spar"));
-				break;
-			case BEACON:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "beacon_lateral"));
-				break;
-			case TOWER:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "beacon_lateral"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_lateral:shape", "tower"));
-				break;
-			case FLOAT:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "light_float"));
-				break;
-			case PERCH:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "beacon_lateral"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_lateral:shape", "perch"));
-				break;
-			default:
-			}
-			switch (getShape()) {
-			case CAN:
-			case PILLAR:
-			case SPAR:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_lateral:category", "port"));
-				if (getRegion() == IALA_A) {
-					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_lateral:colour", "red"));
-					colour = "red";
-				} else {
-					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_lateral:colour", "green"));
-					colour = "green";
-				}
-				break;
-			case PERCH:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_lateral:category", "port"));
-				break;
-			case BEACON:
-			case TOWER:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_lateral:category", "port"));
-				if (getRegion() == IALA_A) {
-					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_lateral:colour", "red"));
-					colour = "red";
-				} else {
-					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_lateral:colour", "green"));
-					colour = "green";
-				}
-				break;
-			case FLOAT:
-				if (getRegion() == IALA_A) {
-					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light_float:colour", "red"));
-					colour = "red";
-				} else {
-					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light_float:colour", "green"));
-					colour = "green";
-				}
-				break;
-			}
-			shape = "cylinder";
-			break;
-
-		case LAT_PREF_PORT:
-			switch (getShape()) {
-			case CAN:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_lateral"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_lateral:shape", "can"));
-				break;
-			case PILLAR:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_lateral"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_lateral:shape", "pillar"));
-				break;
-			case SPAR:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_lateral"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_lateral:shape", "spar"));
-				break;
-			case BEACON:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "beacon_lateral"));
-				break;
-			case TOWER:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "beacon_lateral"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_lateral:shape", "tower"));
-				break;
-			case FLOAT:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "light_float"));
-				break;
-			default:
-			}
-			switch (getShape()) {
-			case CAN:
-			case PILLAR:
-			case SPAR:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_lateral:category", "preferred_channel_port"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_lateral:colour_pattern", "horizontal stripes"));
-				if (getRegion() == IALA_A) {
-					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_lateral:colour", "red;green;red"));
-					colour = "red";
-				} else {
-					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_lateral:colour", "green;red;green"));
-					colour = "green";
-				}
-				break;
-			case BEACON:
-			case TOWER:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_lateral:category", "preferred_channel_port"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_lateral:colour_pattern", "horizontal stripes"));
-				if (getRegion() == IALA_A) {
-					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_lateral:colour", "red;green;red"));
-					colour = "red";
-				} else {
-					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_lateral:colour", "green;red;green"));
-					colour = "green";
-				}
-				break;
-			case FLOAT:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light_float:colour_pattern", "horizontal stripes"));
-				if (getRegion() == IALA_A) {
-					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light_float:colour", "red;green;red"));
-					colour = "red";
-				} else {
-					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light_float:colour", "green;red;green"));
-					colour = "green";
-				}
-				break;
-			}
-			shape = "cylinder";
-			break;
-
-		case LAT_STBD:
-			switch (getShape()) {
-			case CONE:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_lateral"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_lateral:shape", "conical"));
-				break;
-			case PILLAR:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_lateral"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_lateral:shape", "pillar"));
-				break;
-			case SPAR:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_lateral"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_lateral:shape", "spar"));
-				break;
-			case BEACON:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "beacon_lateral"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_lateral:shape", "stake"));
-				break;
-			case TOWER:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "beacon_lateral"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_lateral:shape", "tower"));
-				break;
-			case FLOAT:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "light_float"));
-				break;
-			case PERCH:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "beacon_lateral"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_lateral:shape", "perch"));
-				break;
-			default:
-			}
-			switch (getShape()) {
-			case CAN:
-			case PILLAR:
-			case SPAR:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_lateral:category", "starboard"));
-				if (getRegion() == IALA_A) {
-					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_lateral:colour", "green"));
-					colour = "green";
-				} else {
-					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_lateral:colour", "red"));
-					colour = "red";
-				}
-				break;
-			case BEACON:
-			case TOWER:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_lateral:category", "starboard"));
-				if (getRegion() == IALA_A) {
-					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_lateral:colour", "green"));
-					colour = "green";
-				} else {
-					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_lateral:colour", "red"));
-					colour = "red";
-				}
-				break;
-			case FLOAT:
-				if (getRegion() == IALA_A) {
-					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light_float:colour", "green"));
-					colour = "green";
-				} else {
-					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light_float:colour", "red"));
-					colour = "red";
-				}
-				break;
-			case PERCH:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_lateral:category", "starboard"));
-				break;
-			}
-			shape = "cone, point up";
-			break;
-
-		case LAT_PREF_STBD:
-			switch (getShape()) {
-			case CONE:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_lateral"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_lateral:shape", "conical"));
-				break;
-			case PILLAR:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_lateral"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_lateral:shape", "pillar"));
-				break;
-			case SPAR:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_lateral"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_lateral:shape", "spar"));
-				break;
-			case BEACON:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "beacon_lateral"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_lateral:shape", "stake"));
-				break;
-			case TOWER:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "beacon_lateral"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_lateral:shape", "tower"));
-				break;
-			case FLOAT:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "light_float"));
-				break;
-			default:
-			}
-			switch (getShape()) {
-			case CAN:
-			case PILLAR:
-			case SPAR:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_lateral:category", "preferred_channel_starboard"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_lateral:colour_pattern", "horizontal stripes"));
-				if (getRegion() == IALA_A) {
-					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_lateral:colour", "green;red;green"));
-					colour = "green";
-				} else {
-					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_lateral:colour", "red;green;red"));
-					colour = "red";
-				}
-				break;
-			case BEACON:
-			case TOWER:
-				Main.main.undoRedo
-						.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_lateral:category", "preferred_channel_starboard"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_lateral:colour_pattern", "horizontal stripes"));
-				if (getRegion() == IALA_A) {
-					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_lateral:colour", "green;red;green"));
-					colour = "green";
-				} else {
-					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_lateral:colour", "red;green;red"));
-					colour = "red";
-				}
-				break;
-			case FLOAT:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light_float:colour_pattern", "horizontal stripes"));
-				if (getRegion() == IALA_A) {
-					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light_float:colour", "green;red;green"));
-					colour = "green";
-				} else {
-					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light_float:colour", "red;green;red"));
-					colour = "red";
-				}
-				break;
-			}
-			shape = "cone, point up";
-			break;
-
-		default:
-		}
-		Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:topmark:shape", shape));
-		Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:topmark:colour", colour));
-
-		Main.pref.put("tomsplugin.IALA", getRegion() ? "B" : "A");
-	}
 }
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkLight.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkLight.java	(revision 24884)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkLight.java	(revision 24885)
@@ -82,29 +82,3 @@
 	}
 
-	public void saveSign() {
-		if (dlg.node == null)
-			return;
-		else
-			super.saveSign();
-
-		switch (getCategory()) {
-		case LIGHT_HOUSE:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "landmark"));
-			break;
-		case LIGHT_MAJOR:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "light_major"));
-			break;
-		case LIGHT_MINOR:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "light_minor"));
-			break;
-		case LIGHT_VESSEL:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "light_vessel"));
-			break;
-		case LIGHT_FLOAT:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "light_float"));
-			break;
-		default:
-		}
-	}
-
 }
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 24884)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkSaw.java	(revision 24885)
@@ -133,51 +133,3 @@
 		super.paintSign();
 	}
-
-	public void saveSign() {
-		if (dlg.node == null)
-			return;
-		else
-			super.saveSign();
-
-		switch (getShape()) {
-		case PILLAR:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_safe_water"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_safe_water:shape", "pillar"));
-			break;
-		case SPAR:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_safe_water"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_safe_water:shape", "spar"));
-			break;
-		case SPHERE:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_safe_water"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_safe_water:shape", "sphere"));
-			break;
-		case BEACON:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "beacon_safe_water"));
-			break;
-		case FLOAT:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "light_float"));
-			break;
-		default:
-		}
-		switch (getShape()) {
-		case PILLAR:
-		case SPAR:
-		case SPHERE:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_safe_water:colour_pattern", "vertical stripes"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_safe_water:colour", "red;white"));
-			break;
-		case BEACON:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_safe_water:colour_pattern", "vertical stripes"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_safe_water:colour", "red;white"));
-			break;
-		case FLOAT:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light_float:colour_pattern", "vertical stripes"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light_float:colour", "red;white"));
-			break;
-		default:
-		}
-		Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:topmark:shape", "sphere"));
-		Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:topmark:colour", "red"));
-	}
 }
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkSpec.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkSpec.java	(revision 24884)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkSpec.java	(revision 24885)
@@ -11,4 +11,5 @@
 import oseam.seamarks.SeaMark;
 import oseam.seamarks.SeaMark.Col;
+import oseam.seamarks.SeaMark.Ent;
 
 public class MarkSpec extends SeaMark {
@@ -161,117 +162,3 @@
 		super.paintSign();
 	}
-
-	public void saveSign() {
-		if (dlg.node == null)
-			return;
-		else
-			super.saveSign();
-
-		switch (getShape()) {
-		case PILLAR:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_special_purpose"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_special_purpose:shape", "pillar"));
-			saveColour(Obj.BUOY);
-			break;
-		case SPAR:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_special_purpose"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_special_purpose:shape", "spar"));
-			saveColour(Obj.BUOY);
-			break;
-		case CAN:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_special_purpose"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_special_purpose:shape", "can"));
-			saveColour(Obj.BUOY);
-			break;
-		case CONE:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_special_purpose"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_special_purpose:shape", "conical"));
-			saveColour(Obj.BUOY);
-			break;
-		case SPHERE:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_special_purpose"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_special_purpose:shape", "sphere"));
-			saveColour(Obj.BUOY);
-			break;
-		case BARREL:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_special_purpose"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_special_purpose:shape", "barrel"));
-			saveColour(Obj.BUOY);
-			break;
-		case SUPER:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_special_purpose"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_special_purpose:shape", "super-buoy"));
-			saveColour(Obj.BUOY);
-			break;
-		case FLOAT:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "light_float"));
-			saveColour(Obj.FLOAT);
-			break;
-		case BEACON:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "beacon_special_purpose"));
-			saveColour(Obj.BEACON);
-			break;
-		case TOWER:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "beacon_special_purpose"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_special_purpose:shape", "tower"));
-			saveColour(Obj.BEACON);
-			break;
-		default:
-		}
-		if (hasTopmark()) {
-			switch (getTopmark()) {
-			case X_SHAPE:
-				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:topmark:shape", "x-shape"));
-				break;
-			}
-			saveColour(Obj.TOPMARK);
-		}
-	}
-	
-	private void saveColour(Obj obj) {
-		String str = "";
-		switch (obj) {
-		case BUOY:
-			str = "seamark:buoy_special_purpose:colour";
-			break;
-		case BEACON:
-			str = "seamark:beacon_special_purpose:colour";
-			break;
-		case FLOAT:
-			str = "seamark:light_float:colour";
-			break;
-		case TOPMARK:
-			str = "seamark:topmark:colour";
-			break;
-		}
-		switch (getColour(obj)) {
-		case WHITE:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, str, "white"));
-			break;
-		case RED:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, str, "red"));
-			break;
-		case ORANGE:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, str, "orange"));
-			break;
-		case AMBER:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, str, "amber"));
-			break;
-		case YELLOW:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, str, "yellow"));
-			break;
-		case GREEN:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, str, "green"));
-			break;
-		case BLUE:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, str, "blue"));
-			break;
-		case VIOLET:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, str, "violet"));
-			break;
-		case BLACK:
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, str, "black"));
-			break;
-		}
-	}
 }
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 24884)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java	(revision 24885)
@@ -6,9 +6,6 @@
 import java.util.regex.Pattern;
 
-import javax.swing.ImageIcon;
-
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.ChangePropertyCommand;
-import org.openstreetmap.josm.data.osm.Node;
 
 import oseam.dialogs.OSeaMAction;
@@ -44,16 +41,40 @@
 	}
 
+	private String name;
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String nam) {
+		name = nam;
+	}
+
+	public enum Obj {
+		UNKNOWN, BCNCAR, BCNISD, BCNLAT, BCNSAW, BCNSPP, BOYCAR, BOYISD, BOYLAT, BOYSAW, BOYSPP, LIGHTS, LITFLT, LITVES, LNDMRK
+	}
+
+	private Obj object = Obj.UNKNOWN;
+
+	public Obj getObject() {
+		return object;
+	}
+
+	public void setObject(Obj obj) {
+		object = obj;
+	}
+
+	public enum Ent {
+		BODY, BUOY, BEACON, FLOAT, TOPMARK, LIGHT
+	}
+
 	public enum Col {
 		UNKNOWN, WHITE, RED, ORANGE, AMBER, YELLOW, GREEN, BLUE, VIOLET, BLACK, RED_GREEN_RED, GREEN_RED_GREEN, RED_WHITE, BLACK_YELLOW, BLACK_YELLOW_BLACK, YELLOW_BLACK, YELLOW_BLACK_YELLOW, BLACK_RED_BLACK
 	}
 
-	public enum Obj {
-		BODY, BUOY, BEACON, FLOAT, TOPMARK, LIGHT
-	}
-
 	private Col bodyColour = Col.UNKNOWN;
 
-	public Col getColour(Obj obj) {
-		switch (obj) {
+	public Col getColour(Ent ent) {
+		switch (ent) {
 		case BODY:
 		case BUOY:
@@ -69,6 +90,6 @@
 	}
 
-	public void setColour(Obj obj, Col col) {
-		switch (obj) {
+	public void setColour(Ent ent, Col col) {
+		switch (ent) {
 		case BODY:
 		case BUOY:
@@ -84,14 +105,4 @@
 			break;
 		}
-	}
-
-	private String name;
-
-	public String getName() {
-		return name;
-	}
-
-	public void setName(String nam) {
-		name = nam;
 	}
 
@@ -636,4 +647,6 @@
 		String str;
 
+		Main.pref.put("tomsplugin.IALA", getRegion() ? "B" : "A");
+
 		while (it.hasNext()) {
 			str = it.next();
@@ -643,8 +656,272 @@
 				}
 		}
-		str = dlg.panelMain.nameBox.getText();
-		if (!str.isEmpty())
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:name", str));
-
+		if (!name.isEmpty())
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:name", name));
+		
+		String objStr = "";
+		switch (object) {
+		case BCNCAR:
+			objStr = "beacon_cardinal";
+			break;
+		case BCNISD:
+			objStr = "beacon_isolated_danger";
+			break;
+		case BCNLAT:
+			objStr = "beacon_lateral";
+			break;
+		case BCNSAW:
+			objStr = "beacon_safe_water";
+			break;
+		case BCNSPP:
+			objStr = "beacon_special_purpose";
+			break;
+		case BOYCAR:
+			objStr = "buoy_cardinal";
+			break;
+		case BOYISD:
+			objStr = "buoy_isolated_danger";
+			break;
+		case BOYLAT:
+			objStr = "buoy_lateral";
+			break;
+		case BOYSAW:
+			objStr = "buoy_safe_water";
+			break;
+		case BOYSPP:
+			objStr = "buoy_special_purpose";
+			break;
+		case LIGHTS:
+			if (category == Cat.LIGHT_MAJOR)
+				objStr = "light_major";
+			else
+				objStr = "light_minor";
+			break;
+		case LITFLT:
+			objStr = "light_float";
+			break;
+		case LITVES:
+			objStr = "light_vessel";
+			break;
+		case LNDMRK:
+			objStr = "landmark";
+			break;
+		}
+		if (!objStr.isEmpty()) {
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", objStr));
+
+			switch (category) {
+			case LAT_PORT:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":category", "port"));
+				break;
+			case LAT_STBD:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":category", "starboard"));
+				break;
+			case LAT_PREF_PORT:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":category", "preferred_channel_port"));
+				break;
+			case LAT_PREF_STBD:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":category", "preferred_channel_starboard"));
+				break;
+			case CARD_NORTH:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":category", "north"));
+				break;
+			case CARD_EAST:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":category", "east"));
+				break;
+			case CARD_SOUTH:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":category", "south"));
+				break;
+			case CARD_WEST:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":category", "west"));
+				break;
+			}
+
+			switch (shape) {
+			case PILLAR:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":shape", "pillar"));
+				break;
+			case SPAR:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":shape", "spar"));
+				break;
+			case CAN:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":shape", "can"));
+				break;
+			case CONE:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":shape", "conical"));
+				break;
+			case SPHERE:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":shape", "sphere"));
+				break;
+			case BARREL:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":shape", "barrel"));
+				break;
+			case SUPER:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":shape", "super-buoy"));
+				break;
+			case TOWER:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":shape", "tower"));
+				break;
+			case STAKE:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":shape", "stake"));
+				break;
+			case PERCH:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":shape", "perch"));
+				break;
+			}
+			
+			switch (bodyColour) {
+			case WHITE:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":colour", "white"));
+				break;
+			case RED:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":colour", "red"));
+				break;
+			case ORANGE:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":colour", "orange"));
+				break;
+			case AMBER:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":colour", "amber"));
+				break;
+			case YELLOW:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":colour", "yellow"));
+				break;
+			case GREEN:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":colour", "green"));
+				break;
+			case BLUE:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":colour", "blue"));
+				break;
+			case VIOLET:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":colour", "violet"));
+				break;
+			case BLACK:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":colour", "black"));
+				break;
+			case RED_GREEN_RED:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":colour", "red;green;red"));
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":colour_pattern",	"horizontal stripes"));
+				break;
+			case GREEN_RED_GREEN:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":colour", "green;red;green"));
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":colour_pattern",	"horizontal stripes"));
+				break;
+			case RED_WHITE:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":colour", "red;white"));
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":colour_pattern",	"vertical stripes"));
+				break;
+			case BLACK_YELLOW:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":colour", "black;yellow"));
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":colour_pattern",	"horizontal stripes"));
+				break;
+			case BLACK_YELLOW_BLACK:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":colour", "black;yellow;black"));
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":colour_pattern",	"horizontal stripes"));
+				break;
+			case YELLOW_BLACK:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":colour", "yellow;black"));
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":colour_pattern",	"horizontal stripes"));
+				break;
+			case YELLOW_BLACK_YELLOW:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":colour", "yellow;black;yellow"));
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":colour_pattern",	"horizontal stripes"));
+				break;
+			case BLACK_RED_BLACK:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":colour", "black;red;black"));
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + objStr + ":colour_pattern",	"horizontal stripes"));
+				break;
+			}
+		}
+			
+		String top = "";
+		switch (topShape) {
+		case CAN:
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:topmark:shape", "cylinder"));
+			top = "top";
+			break;
+		case CONE:
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:topmark:shape", "cone, point up"));
+			top = "top";
+			break;
+		case SPHERE:
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:topmark:shape", "sphere"));
+			top = "top";
+			break;
+		case X_SHAPE:
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:topmark:shape", "x-shape"));
+			top = "top";
+			break;
+		case NORTH:
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:topmark:shape", "2 cones up"));
+			top = "top";
+			break;
+		case SOUTH:
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:topmark:shape", "2 cones down"));
+			top = "top";
+			break;
+		case EAST:
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:topmark:shape", "2 cones base together"));
+			top = "top";
+			break;
+		case WEST:
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:topmark:shape", "2 cones points together"));
+			top = "top";
+			break;
+		case SPHERES2:
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:topmark:shape", "2 spheres"));
+			top = "top";
+			break;
+		case BOARD:
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:daymark:shape", "board"));
+			top = "day";
+			break;
+		case DIAMOND:
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:daymark:shape", "diamond"));
+			top = "day";
+			break;
+		case TRIANGLE:
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:daymark:shape", "triangle, point up"));
+			top = "day";
+			break;
+		case TRIANGLE_INV:
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:daymark:shape", "triangle, point down"));
+			top = "day";
+			break;
+		case SQUARE:
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:daymark:shape", "square"));
+			top = "day";
+			break;
+		}
+		if (!top.isEmpty()) {
+			switch (topColour) {
+			case WHITE:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + top + "mark:colour", "white"));
+				break;
+			case RED:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + top + "mark:colour", "red"));
+				break;
+			case ORANGE:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + top + "mark:colour", "orange"));
+				break;
+			case AMBER:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + top + "mark:colour", "amber"));
+				break;
+			case YELLOW:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + top + "mark:colour", "yellow"));
+				break;
+			case GREEN:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + top + "mark:colour", "green"));
+				break;
+			case BLUE:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + top + "mark:colour", "blue"));
+				break;
+			case VIOLET:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + top + "mark:colour", "violet"));
+				break;
+			case BLACK:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:" + top + "mark:colour", "black"));
+				break;
+			}
+		}
+		
 		Col colour;
 		if (isFired()) {
