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 24829)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/dialogs/OSeaMAction.java	(revision 24830)
@@ -7,5 +7,4 @@
 import java.awt.Dimension;
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
@@ -35,28 +34,31 @@
 
 	public SeaMark mark = null;
+	public Node node = null;
 	private Collection<? extends OsmPrimitive> Selection = null;
-	private OsmPrimitive SelNode = null;
+	private OsmPrimitive lastNode = null;
 
 	public SelectionChangedListener SmpListener = new SelectionChangedListener() {
-		public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
-			Node node = null;
+		public void selectionChanged(
+				Collection<? extends OsmPrimitive> newSelection) {
+			Node nextNode = null;
 			Selection = newSelection;
 
-//System.out.println(newSelection);
+			// System.out.println(newSelection);
 			for (OsmPrimitive osm : Selection) {
 				if (osm instanceof Node) {
-					node = (Node) osm;
+					nextNode = (Node) osm;
 					if (Selection.size() == 1) {
-						if (node.compareTo(SelNode) != 0) {
-							SelNode = node;
-							parseSeaMark();
-							mark.paintSign();
+						if (nextNode.compareTo(lastNode) != 0) {
+							lastNode = nextNode;
+							parseNode(nextNode);
 						}
-					}
+					} else
+						manager.showVisualMessage(Messages.getString("OneNode"));
 				}
 			}
-			if (node == null) {
+			if (nextNode == null) {
 				panelMain.clearSelections();
-				SelNode = null;
+				lastNode = null;
+				manager.showVisualMessage(Messages.getString("SelectNode"));
 			}
 		}
@@ -88,41 +90,11 @@
 	}
 
-	private void parseSeaMark() {
-
-		int nodes = 0;
-		Node node = null;
-		Collection<Node> selection = null;
+	private void parseNode(Node newNode) {
+
 		Map<String, String> keys;
-		DataSet ds;
-
-		ds = Main.main.getCurrentDataSet();
 
 		manager.showVisualMessage("");
-		if (ds == null) {
-			manager.showVisualMessage(Messages.getString("NoData"));
-			mark = new MarkUkn(this, null);
-			return;
-		}
-
-		selection = ds.getSelectedNodes();
-		nodes = selection.size();
-
-		if (nodes == 0) {
-			manager.showVisualMessage(Messages.getString("SelectNode"));
-			mark = new MarkUkn(this, null);
-			return;
-		}
-
-		if (nodes > 1) {
-			manager.showVisualMessage(Messages.getString("OneNode"));
-			mark = new MarkUkn(this, null);
-			return;
-		}
-		
+		node = newNode;
 		mark = null;
-
-		Iterator<Node> it = selection.iterator();
-		node = it.next();
-
 		String type = "";
 		String str = "";
@@ -133,20 +105,20 @@
 			type = keys.get("seamark:type");
 		if (type.equals("buoy_lateral") || type.equals("beacon_lateral")) {
-			mark = new MarkLat(this, node);
+			mark = new MarkLat(this);
 		} else if (type.equals("buoy_cardinal")
 				|| type.equals("beacon_cardinal")) {
-			mark = new MarkCard(this, node);
+			mark = new MarkCard(this);
 		} else if (type.equals("buoy_safe_water")
 				|| type.equals("beacon_safe_water")) {
-			mark = new MarkSaw(this, node);
+			mark = new MarkSaw(this);
 		} else if (type.equals("buoy_special_purpose")
 				|| type.equals("beacon_special_purpose")) {
-			mark = new MarkSpec(this, node);
+			mark = new MarkSpec(this);
 		} else if (type.equals("buoy_isolated_danger")
 				|| type.equals("beacon_isolated_danger")) {
-			mark = new MarkIsol(this, node);
+			mark = new MarkIsol(this);
 		} else if (type.equals("landmark") || type.equals("light_vessel")
 				|| type.equals("light_major") || type.equals("light_minor")) {
-			mark = new MarkLight(this, node);
+			mark = new MarkLight(this);
 		} else if (type.equals("light_float")) {
 			if (keys.containsKey("seamark:light_float:colour")) {
@@ -155,80 +127,81 @@
 						|| str.equals("red;green;red")
 						|| str.equals("green;red;green")) {
-					mark = new MarkLat(this, node);
+					mark = new MarkLat(this);
 				} else if (str.equals("black;yellow")
 						|| str.equals("black;yellow;black")
 						|| str.equals("yellow;black")
 						|| str.equals("yellow;black;yellow")) {
-					mark = new MarkCard(this, node);
+					mark = new MarkCard(this);
 				} else if (str.equals("black;red;black")) {
-					mark = new MarkIsol(this, node);
+					mark = new MarkIsol(this);
 				} else if (str.equals("red;white")) {
-					mark = new MarkSaw(this, node);
+					mark = new MarkSaw(this);
 				} else if (str.equals("yellow")) {
-					mark = new MarkSpec(this, node);
+					mark = new MarkSpec(this);
 				}
 			} else if (keys.containsKey("seamark:light_float:topmark:shape")) {
 				str = keys.get("seamark:light_float:topmark:shape");
 				if (str.equals("cylinder") || str.equals("cone, point up")) {
-					mark = new MarkLat(this, node);
+					mark = new MarkLat(this);
 				}
 			} else if (keys.containsKey("seamark:light_float:topmark:colour")) {
 				str = keys.get("seamark:light_float:topmark:colour");
 				if (str.equals("red") || str.equals("green")) {
-					mark = new MarkLat(this, node);
+					mark = new MarkLat(this);
 				}
 			}
 		} else if (keys.containsKey("buoy_lateral:category")
 				|| keys.containsKey("beacon_lateral:category")) {
-			mark = new MarkLat(this, node);
+			mark = new MarkLat(this);
 		} else if (keys.containsKey("buoy_cardinal:category")
 				|| keys.containsKey("beacon_cardinal:category")) {
-			mark = new MarkCard(this, node);
+			mark = new MarkCard(this);
 		} else if (keys.containsKey("buoy_isolated_danger:category")
 				|| keys.containsKey("beacon_isolated_danger:category")) {
-			mark = new MarkIsol(this, node);
+			mark = new MarkIsol(this);
 		} else if (keys.containsKey("buoy_safe_water:category")
 				|| keys.containsKey("beacon_safe_water:category")) {
-			mark = new MarkSaw(this, node);
+			mark = new MarkSaw(this);
 		} else if (keys.containsKey("buoy_special_purpose:category")
 				|| keys.containsKey("beacon_special_purpose:category")) {
-			mark = new MarkSpec(this, node);
+			mark = new MarkSpec(this);
 		} else if (keys.containsKey("buoy_lateral:shape")
 				|| keys.containsKey("beacon_lateral:shape")) {
-			mark = new MarkLat(this, node);
+			mark = new MarkLat(this);
 		} else if (keys.containsKey("buoy_cardinal:shape")
 				|| keys.containsKey("beacon_cardinal:shape")) {
-			mark = new MarkCard(this, node);
+			mark = new MarkCard(this);
 		} else if (keys.containsKey("buoy_isolated_danger:shape")
 				|| keys.containsKey("beacon_isolated_danger:shape")) {
-			mark = new MarkIsol(this, node);
+			mark = new MarkIsol(this);
 		} else if (keys.containsKey("buoy_safe_water:shape")
 				|| keys.containsKey("beacon_safe_water:shape")) {
-			mark = new MarkSaw(this, node);
+			mark = new MarkSaw(this);
 		} else if (keys.containsKey("buoy_special_purpose:shape")
 				|| keys.containsKey("beacon_special_purpose:shape")) {
-			mark = new MarkSpec(this, node);
+			mark = new MarkSpec(this);
 		} else if (keys.containsKey("buoy_lateral:colour")
 				|| keys.containsKey("beacon_lateral:colour")) {
-			mark = new MarkLat(this, node);
+			mark = new MarkLat(this);
 		} else if (keys.containsKey("buoy_cardinal:colour")
 				|| keys.containsKey("beacon_cardinal:colour")) {
-			mark = new MarkCard(this, node);
+			mark = new MarkCard(this);
 		} else if (keys.containsKey("buoy_isolated_danger:colour")
 				|| keys.containsKey("beacon_isolated_danger:colour")) {
-			mark = new MarkIsol(this, node);
+			mark = new MarkIsol(this);
 		} else if (keys.containsKey("buoy_safe_water:colour")
 				|| keys.containsKey("beacon_safe_water:colour")) {
-			mark = new MarkSaw(this, node);
+			mark = new MarkSaw(this);
 		} else if (keys.containsKey("buoy_special_purpose:colour")
 				|| keys.containsKey("beacon_special_purpose:colour")) {
-			mark = new MarkSpec(this, node);
-		}
-		
+			mark = new MarkSpec(this);
+		}
+
 		if (mark == null) {
-			manager.showVisualMessage(tr("No seamark recognised at this node"));
-			mark = new MarkUkn(this, node);
+			manager.showVisualMessage(Messages.getString("NoMark"));
+			mark = new MarkUkn(this);
 		} else {
 			mark.parseMark();
+			mark.paintSign();
 		}
 	}
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages.properties
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages.properties	(revision 24829)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages.properties	(revision 24830)
@@ -54,5 +54,5 @@
 SquareDayTip=Square daymark
 MooringTopTip=Mooring
-NoData=Active layer contains no OSM data
 SelectNode=Please select a node
 OneNode=Please select only one node
+NoMark=No seamark recognised at this node
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages_de.properties
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages_de.properties	(revision 24829)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages_de.properties	(revision 24830)
@@ -54,5 +54,5 @@
 SquareDayTip=Square daymark
 MooringTopTip=Mooring
-NoData=Active layer contains no OSM data
 SelectNode=Please select a node
 OneNode=Please select only one node
+NoMark=No seamark recognised at this node
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages_en.properties
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages_en.properties	(revision 24829)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages_en.properties	(revision 24830)
@@ -54,5 +54,5 @@
 SquareDayTip=Square daymark
 MooringTopTip=Mooring
-NoData=Active layer contains no OSM data
 SelectNode=Please select a node
 OneNode=Please select only one node
+NoMark=No seamark recognised at this node
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 24829)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelChan.java	(revision 24830)
@@ -5,23 +5,28 @@
 
 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 oseam.Messages;
-
-import java.awt.Cursor;
+import oseam.dialogs.OSeaMAction;
+import oseam.panels.PanelPort;
+import oseam.panels.PanelStbd;
+import oseam.panels.PanelPrefPort;
+import oseam.panels.PanelPrefStbd;
+import oseam.seamarks.SeaMark;
+import oseam.seamarks.SeaMark.Cat;
+import oseam.seamarks.SeaMark.Col;
+import oseam.seamarks.MarkLat;
+import oseam.seamarks.MarkSaw;
+
 import java.awt.event.ActionListener;
 
 public class PanelChan extends JPanel {
 
+	private OSeaMAction dlg;
+	private boolean region;
 	private ButtonGroup catButtons = null;
 	public JRadioButton portButton = null;
@@ -37,18 +42,19 @@
 	public PanelSafeWater panelSafeWater = null;
 
-	public PanelChan() {
-		panelPort = new PanelPort();
+	public PanelChan(OSeaMAction dia) {
+		dlg = dia;
+		panelPort = new PanelPort(dlg);
 		panelPort.setBounds(new Rectangle(55, 0, 225, 160));
 		panelPort.setVisible(false);
-		panelStbd = new PanelStbd();
+		panelStbd = new PanelStbd(dlg);
 		panelStbd.setBounds(new Rectangle(55, 0, 225, 160));
 		panelStbd.setVisible(false);
-		panelPrefPort = new PanelPrefPort();
+		panelPrefPort = new PanelPrefPort(dlg);
 		panelPrefPort.setBounds(new Rectangle(55, 0, 225, 160));
 		panelPrefPort.setVisible(false);
-		panelPrefStbd = new PanelPrefStbd();
+		panelPrefStbd = new PanelPrefStbd(dlg);
 		panelPrefStbd.setBounds(new Rectangle(55, 0, 225, 160));
 		panelPrefStbd.setVisible(false);
-		panelSafeWater = new PanelSafeWater();
+		panelSafeWater = new PanelSafeWater(dlg);
 		panelSafeWater.setBounds(new Rectangle(55, 0, 225, 160));
 		panelSafeWater.setVisible(false);
@@ -73,4 +79,14 @@
 			public void actionPerformed(java.awt.event.ActionEvent e) {
 				if (portButton.isSelected()) {
+					if (!(dlg.mark instanceof MarkLat))
+						dlg.mark = new MarkLat(dlg);
+					dlg.mark.setCategory(Cat.PORT_HAND);
+					if (dlg.mark.getRegion() == SeaMark.IALA_A) {
+						dlg.mark.setColour(Col.RED);
+						panelPort.regionAButton.doClick();
+					} else {
+						dlg.mark.setColour(Col.GREEN);
+						panelPort.regionBButton.doClick();
+					}
 					portButton.setBorderPainted(true);
 					panelPort.setVisible(true);
@@ -80,4 +96,14 @@
 				}
 				if (stbdButton.isSelected()) {
+					if (!(dlg.mark instanceof MarkLat))
+						dlg.mark = new MarkLat(dlg);
+					dlg.mark.setCategory(Cat.STARBOARD_HAND);
+					if (dlg.mark.getRegion() == SeaMark.IALA_A) {
+						dlg.mark.setColour(Col.GREEN);
+						panelStbd.regionAButton.doClick();
+					} else {
+						dlg.mark.setColour(Col.RED);
+						panelStbd.regionBButton.doClick();
+					}
 					stbdButton.setBorderPainted(true);
 					panelStbd.setVisible(true);
@@ -87,4 +113,14 @@
 				}
 				if (prefPortButton.isSelected()) {
+					if (!(dlg.mark instanceof MarkLat))
+						dlg.mark = new MarkLat(dlg);
+					dlg.mark.setCategory(Cat.PREF_PORT_HAND);
+					if (dlg.mark.getRegion() == SeaMark.IALA_A) {
+						dlg.mark.setColour(Col.RED_GREEN_RED);
+						panelPrefPort.regionAButton.doClick();
+					} else {
+						dlg.mark.setColour(Col.GREEN_RED_GREEN);
+						panelPrefPort.regionBButton.doClick();
+					}
 					prefPortButton.setBorderPainted(true);
 					panelPrefPort.setVisible(true);
@@ -94,4 +130,14 @@
 				}
 				if (prefStbdButton.isSelected()) {
+					if (!(dlg.mark instanceof MarkLat))
+						dlg.mark = new MarkLat(dlg);
+					dlg.mark.setCategory(Cat.PREF_STARBOARD_HAND);
+					if (dlg.mark.getRegion() == SeaMark.IALA_A) {
+						dlg.mark.setColour(Col.GREEN_RED_GREEN);
+						panelPrefStbd.regionAButton.doClick();
+					} else {
+						dlg.mark.setColour(Col.RED_GREEN_RED);
+						panelPrefStbd.regionBButton.doClick();
+					}
 					prefStbdButton.setBorderPainted(true);
 					panelPrefStbd.setVisible(true);
@@ -101,4 +147,7 @@
 				}
 				if (safeWaterButton.isSelected()) {
+					if (!(dlg.mark instanceof MarkSaw))
+						dlg.mark = new MarkSaw(dlg);
+					dlg.mark.setColour(Col.RED_WHITE);
 					safeWaterButton.setBorderPainted(true);
 					panelSafeWater.setVisible(true);
@@ -107,4 +156,5 @@
 					panelSafeWater.setVisible(false);
 				}
+				if (dlg.mark != null) dlg.mark.paintSign();
 			}
 		};
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 24829)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelCol.java	(revision 24830)
@@ -7,23 +7,18 @@
 
 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 oseam.Messages;
-
-import java.awt.Cursor;
+import oseam.dialogs.OSeaMAction;
+
 import java.awt.event.ActionListener;
 
 public class PanelCol extends JPanel {
 
+	private OSeaMAction dlg;
 	private ButtonGroup colourButtons = null;
 	public JRadioButton offButton = null;
@@ -39,8 +34,7 @@
 	private ActionListener alColour = null;
 
-	public PanelCol() {
-		super();
+	public PanelCol(OSeaMAction dia) {
+		dlg = dia;
 		this.setLayout(null);
-
 		this.add(getOffButton(), null);
 		this.add(getWhiteButton(), null);
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelFog.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelFog.java	(revision 24829)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelFog.java	(revision 24830)
@@ -17,4 +17,5 @@
 
 import oseam.Messages;
+import oseam.dialogs.OSeaMAction;
 
 import java.awt.Cursor;
@@ -23,6 +24,8 @@
 public class PanelFog extends JPanel {
 
-	public PanelFog() {
-		super();
+	private OSeaMAction dlg;
+
+	public PanelFog(OSeaMAction dia) {
+		dlg = dia;
 		this.setLayout(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 24829)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelHaz.java	(revision 24830)
@@ -13,7 +13,9 @@
 import oseam.Messages;
 import oseam.dialogs.OSeaMAction;
+import oseam.seamarks.MarkCard;
+import oseam.seamarks.MarkIsol;
 import oseam.seamarks.SeaMark.Cat;
 import oseam.seamarks.SeaMark.Col;
-import oseam.seamarks.SeaMark.Styl;
+import oseam.seamarks.SeaMark.Shp;
 
 import java.awt.event.ActionListener;
@@ -55,40 +57,58 @@
 			public void actionPerformed(java.awt.event.ActionEvent e) {
 				if (northButton.isSelected()) {
-					northButton.setBorderPainted(true);
+					if (!(dlg.mark instanceof MarkCard))
+						dlg.mark = new MarkCard(dlg);
 					dlg.mark.setCategory(Cat.CARD_NORTH);
 					dlg.mark.setColour(Col.BLACK_YELLOW);
 					dlg.panelMain.panelTop.northTopButton.doClick();
 					dlg.panelMain.panelTop.panelCol.blackButton.doClick();
+					northButton.setBorderPainted(true);
 				} else {
 					northButton.setBorderPainted(false);
 				}
 				if (southButton.isSelected()) {
-					southButton.setBorderPainted(true);
+					if (!(dlg.mark instanceof MarkCard))
+						dlg.mark = new MarkCard(dlg);
 					dlg.mark.setCategory(Cat.CARD_SOUTH);
 					dlg.mark.setColour(Col.YELLOW_BLACK);
 					dlg.panelMain.panelTop.southTopButton.doClick();
 					dlg.panelMain.panelTop.panelCol.blackButton.doClick();
+					southButton.setBorderPainted(true);
 				} else {
 					southButton.setBorderPainted(false);
 				}
 				if (eastButton.isSelected()) {
-					eastButton.setBorderPainted(true);
+					if (!(dlg.mark instanceof MarkCard))
+						dlg.mark = new MarkCard(dlg);
 					dlg.mark.setCategory(Cat.CARD_EAST);
 					dlg.mark.setColour(Col.BLACK_YELLOW_BLACK);
 					dlg.panelMain.panelTop.eastTopButton.doClick();
 					dlg.panelMain.panelTop.panelCol.blackButton.doClick();
+					eastButton.setBorderPainted(true);
 				} else {
 					eastButton.setBorderPainted(false);
 				}
 				if (westButton.isSelected()) {
-					westButton.setBorderPainted(true);
+					if (!(dlg.mark instanceof MarkCard))
+						dlg.mark = new MarkCard(dlg);
 					dlg.mark.setCategory(Cat.CARD_WEST);
 					dlg.mark.setColour(Col.YELLOW_BLACK_YELLOW);
 					dlg.panelMain.panelTop.westTopButton.doClick();
 					dlg.panelMain.panelTop.panelCol.blackButton.doClick();
+					westButton.setBorderPainted(true);
 				} else {
 					westButton.setBorderPainted(false);
 				}
-				isolButton.setBorderPainted(isolButton.isSelected());
+				if (isolButton.isSelected()) {
+					if (!(dlg.mark instanceof MarkIsol))
+						dlg.mark = new MarkIsol(dlg);
+					dlg.mark.setColour(Col.BLACK_RED_BLACK);
+					dlg.panelMain.panelTop.spheres2TopButton.doClick();
+					dlg.panelMain.panelTop.panelCol.blackButton.doClick();
+					isolButton.setBorderPainted(true);
+				} else {
+					isolButton.setBorderPainted(false);
+				}
+				if (dlg.mark != null) dlg.mark.paintSign();
 			}
 		};
@@ -114,5 +134,5 @@
 				if (pillarButton.isSelected()) {
 				pillarButton.setBorderPainted(true);
-				dlg.mark.setShape(Styl.PILLAR);
+				dlg.mark.setShape(Shp.PILLAR);
 				} else {
 					pillarButton.setBorderPainted(false);
@@ -120,5 +140,5 @@
 				if (sparButton.isSelected()) {
 				sparButton.setBorderPainted(true);
-				dlg.mark.setShape(Styl.SPAR);
+				dlg.mark.setShape(Shp.SPAR);
 				} else {
 					sparButton.setBorderPainted(false);
@@ -126,5 +146,5 @@
 				if (floatButton.isSelected()) {
 				floatButton.setBorderPainted(true);
-				dlg.mark.setShape(Styl.FLOAT);
+				dlg.mark.setShape(Shp.FLOAT);
 				} else {
 					floatButton.setBorderPainted(false);
@@ -132,5 +152,5 @@
 				if (beaconButton.isSelected()) {
 				beaconButton.setBorderPainted(true);
-				dlg.mark.setShape(Styl.BEACON);
+				dlg.mark.setShape(Shp.BEACON);
 				} else {
 					beaconButton.setBorderPainted(false);
@@ -138,5 +158,5 @@
 				if (towerButton.isSelected()) {
 				towerButton.setBorderPainted(true);
-				dlg.mark.setShape(Styl.TOWER);
+				dlg.mark.setShape(Shp.TOWER);
 				} else {
 					towerButton.setBorderPainted(false);
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 24829)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLights.java	(revision 24830)
@@ -18,4 +18,5 @@
 
 import oseam.Messages;
+import oseam.dialogs.OSeaMAction;
 
 import java.awt.Cursor;
@@ -24,4 +25,5 @@
 public class PanelLights extends JPanel {
 
+	private OSeaMAction dlg;
 	private ButtonGroup catButtons = null;
 	private JRadioButton houseButton = null;
@@ -31,6 +33,6 @@
 	private JRadioButton floatButton = null;
 
-	public PanelLights() {
-		super();
+	public PanelLights(OSeaMAction dia) {
+		dlg = dia;
 		this.setLayout(null);
 		this.add(getHouseButton(), null);
@@ -52,4 +54,5 @@
 				vesselButton.setBorderPainted(vesselButton.isSelected());
 				floatButton.setBorderPainted(floatButton.isSelected());
+				if (dlg.mark != null) dlg.mark.paintSign();
 			}
 		};
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 24829)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLit.java	(revision 24830)
@@ -17,4 +17,5 @@
 
 import oseam.Messages;
+import oseam.dialogs.OSeaMAction;
 
 import java.awt.Cursor;
@@ -23,9 +24,10 @@
 public class PanelLit extends JPanel {
 
+	private OSeaMAction dlg;
 	private PanelCol panelCol = null;
 
-	public PanelLit() {
-		super();
-		panelCol = new PanelCol();
+	public PanelLit(OSeaMAction dia) {
+		dlg = dia;
+		panelCol = new PanelCol(dlg);
 		panelCol.setBounds(new Rectangle(0, 0, 34, 160));
 		this.setLayout(null);
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 24829)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMain.java	(revision 24830)
@@ -18,4 +18,6 @@
 import oseam.Messages;
 import oseam.dialogs.OSeaMAction;
+import oseam.seamarks.MarkSpec;
+import oseam.seamarks.MarkLight;
 
 public class PanelMain extends JPanel {
@@ -55,26 +57,26 @@
 
 		dlg = dia;
-		panelChan = new PanelChan();
+		panelChan = new PanelChan(dlg);
 		panelChan.setBounds(new Rectangle(65, 0, 335, 160));
 		panelChan.setVisible(false);
-		panelHaz = new PanelHaz(dia);
+		panelHaz = new PanelHaz(dlg);
 		panelHaz.setBounds(new Rectangle(65, 0, 335, 160));
 		panelHaz.setVisible(false);
-		panelSpec = new PanelSpec();
+		panelSpec = new PanelSpec(dlg);
 		panelSpec.setBounds(new Rectangle(65, 0, 335, 160));
 		panelSpec.setVisible(false);
-		panelLights = new PanelLights();
+		panelLights = new PanelLights(dlg);
 		panelLights.setBounds(new Rectangle(65, 0, 335, 160));
 		panelLights.setVisible(false);
-		panelTop = new PanelTop();
+		panelTop = new PanelTop(dlg);
 		panelTop.setBounds(new Rectangle(40, 165, 220, 160));
 		panelTop.setVisible(false);
-		panelFog = new PanelFog();
+		panelFog = new PanelFog(dlg);
 		panelFog.setBounds(new Rectangle(40, 165, 220, 160));
 		panelFog.setVisible(false);
-		panelRadar = new PanelRadar();
+		panelRadar = new PanelRadar(dlg);
 		panelRadar.setBounds(new Rectangle(40, 165, 220, 160));
 		panelRadar.setVisible(false);
-		panelLit = new PanelLit();
+		panelLit = new PanelLit(dlg);
 		panelLit.setBounds(new Rectangle(40, 165, 220, 160));
 		panelLit.setVisible(false);
@@ -118,6 +120,8 @@
 		alType = new ActionListener() {
 			public void actionPerformed(java.awt.event.ActionEvent e) {
-				if (dlg.mark == null)
+				if (dlg.mark == null) {
 					typeButtons.clearSelection();
+					return;
+				}
 				if (chanButton.isSelected()) {
 					chanButton.setBorderPainted(true);
@@ -135,4 +139,6 @@
 				}
 				if (specButton.isSelected()) {
+					if (!(dlg.mark instanceof MarkSpec))
+						dlg.mark = new MarkSpec(dlg);
 					specButton.setBorderPainted(true);
 					panelSpec.setVisible(true);
@@ -142,4 +148,6 @@
 				}
 				if (lightsButton.isSelected()) {
+					if (!(dlg.mark instanceof MarkLight))
+						dlg.mark = new MarkLight(dlg);
 					lightsButton.setBorderPainted(true);
 					panelLights.setVisible(true);
@@ -166,6 +174,8 @@
 		alMisc = new ActionListener() {
 			public void actionPerformed(java.awt.event.ActionEvent e) {
-				if (dlg.mark == null)
+				if (dlg.mark == null) {
 					miscButtons.clearSelection();
+					return;
+				}
 				if (topButton.isSelected()) {
 					topButton.setBorderPainted(true);
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 24829)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPort.java	(revision 24830)
@@ -18,4 +18,5 @@
 
 import oseam.Messages;
+import oseam.dialogs.OSeaMAction;
 
 import java.awt.Cursor;
@@ -24,18 +25,19 @@
 public class PanelPort extends JPanel {
 
+	private OSeaMAction dlg;
 	private ButtonGroup regionButtons = null;
-	private JRadioButton regionAButton = null;
-	private JRadioButton regionBButton = null;
+	public JRadioButton regionAButton = null;
+	public JRadioButton regionBButton = null;
 	private ButtonGroup shapeButtons = null;
-	private JRadioButton pillarButton = null;
-	private JRadioButton sparButton = null;
-	private JRadioButton canButton = null;
-	private JRadioButton floatButton = null;
-	private JRadioButton beaconButton = null;
-	private JRadioButton towerButton = null;
-	private JRadioButton perchButton = null;
+	public JRadioButton pillarButton = null;
+	public JRadioButton sparButton = null;
+	public JRadioButton canButton = null;
+	public JRadioButton floatButton = null;
+	public JRadioButton beaconButton = null;
+	public JRadioButton towerButton = null;
+	public JRadioButton perchButton = null;
 
-	public PanelPort() {
-		super();
+	public PanelPort(OSeaMAction dia) {
+		dlg = dia;
 		this.setLayout(null);
 		this.add(getRegionAButton(), null);
@@ -56,4 +58,5 @@
 				regionAButton.setBorderPainted(regionAButton.isSelected());
 				regionBButton.setBorderPainted(regionBButton.isSelected());
+				dlg.mark.paintSign();
 			}
 		};
@@ -78,4 +81,5 @@
 				towerButton.setBorderPainted(towerButton.isSelected());
 				perchButton.setBorderPainted(perchButton.isSelected());
+				dlg.mark.paintSign();
 			}
 		};
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPrefPort.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPrefPort.java	(revision 24829)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPrefPort.java	(revision 24830)
@@ -18,4 +18,5 @@
 
 import oseam.Messages;
+import oseam.dialogs.OSeaMAction;
 
 import java.awt.Cursor;
@@ -24,17 +25,18 @@
 public class PanelPrefPort extends JPanel {
 
+	private OSeaMAction dlg;
 	private ButtonGroup regionButtons = null;
-	private JRadioButton regionAButton = null;
-	private JRadioButton regionBButton = null;
+	public JRadioButton regionAButton = null;
+	public JRadioButton regionBButton = null;
 	private ButtonGroup shapeButtons = null;
-	private JRadioButton pillarButton = null;
-	private JRadioButton sparButton = null;
-	private JRadioButton canButton = null;
-	private JRadioButton floatButton = null;
-	private JRadioButton beaconButton = null;
-	private JRadioButton towerButton = null;
+	public JRadioButton pillarButton = null;
+	public JRadioButton sparButton = null;
+	public JRadioButton canButton = null;
+	public JRadioButton floatButton = null;
+	public JRadioButton beaconButton = null;
+	public JRadioButton towerButton = null;
 
-	public PanelPrefPort() {
-		super();
+	public PanelPrefPort(OSeaMAction dia) {
+		dlg = dia;
 		this.setLayout(null);
 		this.add(getRegionAButton(), null);
@@ -54,4 +56,5 @@
 				regionAButton.setBorderPainted(regionAButton.isSelected());
 				regionBButton.setBorderPainted(regionBButton.isSelected());
+				dlg.mark.paintSign();
 			}
 		};
@@ -74,4 +77,5 @@
 				beaconButton.setBorderPainted(beaconButton.isSelected());
 				towerButton.setBorderPainted(towerButton.isSelected());
+				dlg.mark.paintSign();
 			}
 		};
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPrefStbd.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPrefStbd.java	(revision 24829)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPrefStbd.java	(revision 24830)
@@ -18,4 +18,5 @@
 
 import oseam.Messages;
+import oseam.dialogs.OSeaMAction;
 
 import java.awt.Cursor;
@@ -24,17 +25,18 @@
 public class PanelPrefStbd extends JPanel {
 
+	private OSeaMAction dlg;
 	private ButtonGroup regionButtons = null;
-	private JRadioButton regionAButton = null;
-	private JRadioButton regionBButton = null;
+	public JRadioButton regionAButton = null;
+	public JRadioButton regionBButton = null;
 	private ButtonGroup shapeButtons = null;
-	private JRadioButton pillarButton = null;
-	private JRadioButton sparButton = null;
-	private JRadioButton coneButton = null;
-	private JRadioButton floatButton = null;
-	private JRadioButton beaconButton = null;
-	private JRadioButton towerButton = null;
+	public JRadioButton pillarButton = null;
+	public JRadioButton sparButton = null;
+	public JRadioButton coneButton = null;
+	public JRadioButton floatButton = null;
+	public JRadioButton beaconButton = null;
+	public JRadioButton towerButton = null;
 
-	public PanelPrefStbd() {
-		super();
+	public PanelPrefStbd(OSeaMAction dia) {
+		dlg = dia;
 		this.setLayout(null);
 		this.add(getRegionAButton(), null);
@@ -54,4 +56,5 @@
 				regionAButton.setBorderPainted(regionAButton.isSelected());
 				regionBButton.setBorderPainted(regionBButton.isSelected());
+				dlg.mark.paintSign();
 			}
 		};
@@ -74,4 +77,5 @@
 				beaconButton.setBorderPainted(beaconButton.isSelected());
 				towerButton.setBorderPainted(towerButton.isSelected());
+				dlg.mark.paintSign();
 			}
 		};
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelRadar.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelRadar.java	(revision 24829)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelRadar.java	(revision 24830)
@@ -17,4 +17,5 @@
 
 import oseam.Messages;
+import oseam.dialogs.OSeaMAction;
 
 import java.awt.Cursor;
@@ -23,7 +24,8 @@
 public class PanelRadar extends JPanel {
 
+	private OSeaMAction dlg;
 
-	public PanelRadar() {
-		super();
+	public PanelRadar(OSeaMAction dia) {
+		dlg = dia;
 		this.setLayout(null);
 	}
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSafeWater.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSafeWater.java	(revision 24829)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSafeWater.java	(revision 24830)
@@ -18,4 +18,5 @@
 
 import oseam.Messages;
+import oseam.dialogs.OSeaMAction;
 
 import java.awt.Cursor;
@@ -24,4 +25,5 @@
 public class PanelSafeWater extends JPanel {
 
+	private OSeaMAction dlg;
 	private ButtonGroup shapeButtons = null;
 	private JRadioButton pillarButton = null;
@@ -31,6 +33,6 @@
 	private JRadioButton floatButton = null;
 
-	public PanelSafeWater() {
-		super();
+	public PanelSafeWater(OSeaMAction dia) {
+		dlg = dia;
 		this.setLayout(null);
 		this.add(getPillarButton(), null);
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 24829)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSpec.java	(revision 24830)
@@ -20,4 +20,5 @@
 
 import oseam.Messages;
+import oseam.dialogs.OSeaMAction;
 
 import java.awt.Cursor;
@@ -26,4 +27,5 @@
 public class PanelSpec extends JPanel {
 
+	private OSeaMAction dlg;
 	private ButtonGroup shapeButtons = null;
 	private JRadioButton pillarButton = null;
@@ -39,10 +41,10 @@
 	private PanelCol panelCol = null;
 
-	public PanelSpec() {
-		super();
-		panelCol = new PanelCol();
+	public PanelSpec(OSeaMAction dia) {
+		dlg = dia;
+		panelCol = new PanelCol(dlg);
 		panelCol.setBounds(new Rectangle(9, 0, 34, 160));
+
 		this.setLayout(null);
-
 		this.add(panelCol, null);
 		this.add(getPillarButton(), null);
@@ -79,4 +81,5 @@
 				beaconButton.setBorderPainted(beaconButton.isSelected());
 				towerButton.setBorderPainted(towerButton.isSelected());
+				if (dlg.mark != null) dlg.mark.paintSign();
 			}
 		};
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 24829)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelStbd.java	(revision 24830)
@@ -18,4 +18,5 @@
 
 import oseam.Messages;
+import oseam.dialogs.OSeaMAction;
 
 import java.awt.Cursor;
@@ -24,18 +25,19 @@
 public class PanelStbd extends JPanel {
 
+	private OSeaMAction dlg;
 	private ButtonGroup regionButtons = null;
-	private JRadioButton regionAButton = null;
-	private JRadioButton regionBButton = null;
+	public JRadioButton regionAButton = null;
+	public JRadioButton regionBButton = null;
 	private ButtonGroup shapeButtons = null;
-	private JRadioButton pillarButton = null;
-	private JRadioButton sparButton = null;
-	private JRadioButton coneButton = null;
-	private JRadioButton floatButton = null;
-	private JRadioButton beaconButton = null;
-	private JRadioButton towerButton = null;
-	private JRadioButton perchButton = null;
+	public JRadioButton pillarButton = null;
+	public JRadioButton sparButton = null;
+	public JRadioButton coneButton = null;
+	public JRadioButton floatButton = null;
+	public JRadioButton beaconButton = null;
+	public JRadioButton towerButton = null;
+	public JRadioButton perchButton = null;
 
-	public PanelStbd() {
-		super();
+	public PanelStbd(OSeaMAction dia) {
+		dlg = dia;
 		this.setLayout(null);
 		this.add(getRegionAButton(), null);
@@ -56,4 +58,5 @@
 				regionAButton.setBorderPainted(regionAButton.isSelected());
 				regionBButton.setBorderPainted(regionBButton.isSelected());
+				dlg.mark.paintSign();
 			}
 		};
@@ -78,4 +81,5 @@
 				towerButton.setBorderPainted(towerButton.isSelected());
 				perchButton.setBorderPainted(perchButton.isSelected());
+				dlg.mark.paintSign();
 			}
 		};
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 24829)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelTop.java	(revision 24830)
@@ -19,4 +19,5 @@
 
 import oseam.Messages;
+import oseam.dialogs.OSeaMAction;
 
 import java.awt.Cursor;
@@ -25,4 +26,5 @@
 public class PanelTop extends JPanel {
 
+	private OSeaMAction dlg;
 	public PanelCol panelCol = null;
 	private ButtonGroup topButtons = null;
@@ -45,7 +47,7 @@
 	ActionListener alTop = null;
 
-	public PanelTop() {
-		super();
-		panelCol = new PanelCol();
+	public PanelTop(OSeaMAction dia) {
+		dlg = dia;
+		panelCol = new PanelCol(dlg);
 		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 24829)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkCard.java	(revision 24830)
@@ -6,5 +6,4 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.ChangePropertyCommand;
-import org.openstreetmap.josm.data.osm.Node;
 
 import oseam.dialogs.OSeaMAction;
@@ -13,6 +12,6 @@
 public class MarkCard extends SeaMark {
 
-	public MarkCard(OSeaMAction dia, Node node) {
-		super(dia, node);
+	public MarkCard(OSeaMAction dia) {
+		super(dia);
 	}
 	
@@ -20,5 +19,5 @@
 		String str;
 		Map<String, String> keys;
-		keys = getNode().getKeys();
+		keys = dlg.node.getKeys();
 
 		if (!dlg.panelMain.hazButton.isSelected())
@@ -102,9 +101,4 @@
 	}
 
-	public boolean isValid() {
-		return (getCategory() != Cat.UNKNOWN_CAT)
-				&& (getShape() != Styl.UNKNOWN_SHAPE);
-	}
-
 	public void setLightColour() {
 		super.setLightColour("W");
@@ -115,5 +109,5 @@
 		if (dlg.paintlock) return; super.paintSign();
 		 */
-		if (isValid()) {
+		if ((getCategory() != Cat.UNKNOWN) && (getShape() != Shp.UNKNOWN)) {
 			String image = "/images/Cardinal";
 			switch (getShape()) {
@@ -164,6 +158,5 @@
 
 	public void saveSign() {
-		Node node = getNode();
-		if (node == null)
+		if (dlg.node == null)
 			return;
 
@@ -173,10 +166,10 @@
 		case PILLAR:
 			super.saveSign("buoy_cardinal");
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:buoy_cardinal:shape", "pillar"));
 			break;
 		case SPAR:
 			super.saveSign("buoy_cardinal");
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:buoy_cardinal:shape", "spar"));
 			break;
@@ -186,5 +179,5 @@
 		case TOWER:
 			super.saveSign("beacon_cardinal");
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:beacon_cardinal:shape", "tower"));
 			break;
@@ -200,7 +193,7 @@
 			switch (getCategory()) {
 			case CARD_NORTH:
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:buoy_cardinal:category", "north"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:buoy_cardinal:colour", "black;yellow"));
 				shape = "2 cones up";
@@ -208,7 +201,7 @@
 
 			case CARD_EAST:
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:buoy_cardinal:category", "east"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:buoy_cardinal:colour", "black;yellow;black"));
 				shape = "2 cones base together";
@@ -216,7 +209,7 @@
 
 			case CARD_SOUTH:
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:buoy_cardinal:category", "south"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:buoy_cardinal:colour", "yellow;black"));
 				shape = "2 cones down";
@@ -224,12 +217,12 @@
 
 			case CARD_WEST:
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:buoy_cardinal:category", "west"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				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(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:buoy_cardinal:colour_pattern",
 					"horizontal stripes"));
@@ -240,7 +233,7 @@
 			switch (getCategory()) {
 			case CARD_NORTH:
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:beacon_cardinal:category", "north"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:beacon_cardinal:colour", "black;yellow"));
 				shape = "2 cones up";
@@ -248,8 +241,8 @@
 
 			case CARD_EAST:
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:beacon_cardinal:category", "east"));
 				Main.main.undoRedo
-						.add(new ChangePropertyCommand(node,
+						.add(new ChangePropertyCommand(dlg.node,
 								"seamark:beacon_cardinal:colour",
 								"black;yellow;black"));
@@ -258,7 +251,7 @@
 
 			case CARD_SOUTH:
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:beacon_cardinal:category", "south"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:beacon_cardinal:colour", "yellow;black"));
 				shape = "2 cones down";
@@ -266,8 +259,8 @@
 
 			case CARD_WEST:
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:beacon_cardinal:category", "west"));
 				Main.main.undoRedo
-						.add(new ChangePropertyCommand(node,
+						.add(new ChangePropertyCommand(dlg.node,
 								"seamark:beacon_cardinal:colour",
 								"yellow;black;yellow"));
@@ -275,5 +268,5 @@
 				break;
 			}
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:beacon_cardinal:colour_pattern",
 					"horizontal stripes"));
@@ -283,5 +276,5 @@
 			switch (getCategory()) {
 			case CARD_NORTH:
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:light_float:colour", "black;yellow"));
 				shape = "2 cones up";
@@ -289,5 +282,5 @@
 
 			case CARD_EAST:
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:light_float:colour", "black;yellow;black"));
 				shape = "2 cones base together";
@@ -295,5 +288,5 @@
 
 			case CARD_SOUTH:
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:light_float:colour", "yellow;black"));
 				shape = "2 cones down";
@@ -301,5 +294,5 @@
 
 			case CARD_WEST:
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:light_float:colour", "yellow;black;yellow"));
 				shape = "2 cones point together";
@@ -307,5 +300,5 @@
 			}
 			Main.main.undoRedo
-					.add(new ChangePropertyCommand(node,
+					.add(new ChangePropertyCommand(dlg.node,
 							"seamark:light_float:colour_pattern",
 							"horizontal stripes"));
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 24829)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkIsol.java	(revision 24830)
@@ -7,5 +7,4 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.ChangePropertyCommand;
-import org.openstreetmap.josm.data.osm.Node;
 
 import oseam.dialogs.OSeaMAction;
@@ -13,6 +12,6 @@
 
 public class MarkIsol extends SeaMark {
-	public MarkIsol(OSeaMAction dia, Node node) {
-		super(dia, node);
+	public MarkIsol(OSeaMAction dia) {
+		super(dia);
 	}
 	
@@ -21,5 +20,5 @@
 		String str;
 		Map<String, String> keys;
-		keys = getNode().getKeys();
+		keys = dlg.node.getKeys();
 
 		if (!dlg.panelMain.hazButton.isSelected())
@@ -70,9 +69,4 @@
 	}
 
-	public boolean isValid() {
-		return (getCategory() != Cat.UNKNOWN_CAT)
-				&& (getShape() != Styl.UNKNOWN_SHAPE);
-	}
-
 	public void setLightColour() {
 		super.setLightColour("W");
@@ -85,5 +79,5 @@
 		super.paintSign();
 */
-		if (isValid()) {
+		if ((getCategory() != Cat.UNKNOWN) && (getShape() != Shp.UNKNOWN)) {
 
 			String image = "/images/Cardinal";
@@ -118,7 +112,6 @@
 
 	public void saveSign() {
-		Node node = getNode();
 
-		if (node == null) {
+		if (dlg.node == null) {
 			return;
 		}
@@ -127,10 +120,10 @@
 		case PILLAR:
 			super.saveSign("buoy_isolated_danger");
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:buoy_isolated_danger:shape", "pillar"));
 			break;
 		case SPAR:
 			super.saveSign("buoy_isolated_danger");
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:buoy_isolated_danger:shape", "spar"));
 			break;
@@ -140,5 +133,5 @@
 		case TOWER:
 			super.saveSign("beacon_isolated_danger");
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:beacon_isolated_danger:shape", "tower"));
 			break;
@@ -152,21 +145,21 @@
 		case PILLAR:
 		case SPAR:
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:buoy_isolated_danger:colour_pattern", "horizontal stripes"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			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(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:beacon_isolated_danger:colour_pattern",
 					"horizontal stripes"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			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(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:light_float:colour_pattern", "horizontal stripes"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:light_float:colour", "black;red;black"));
 			break;
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 24829)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkLat.java	(revision 24830)
@@ -5,15 +5,12 @@
 import javax.swing.ImageIcon;
 
-import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.ChangePropertyCommand;
 
 import oseam.dialogs.OSeaMAction;
-import oseam.seamarks.SeaMark.Cat;
-import oseam.seamarks.SeaMark.Styl;
 
 public class MarkLat extends SeaMark {
-	public MarkLat(OSeaMAction dia, Node node) {
-		super(dia, node);
+	public MarkLat(OSeaMAction dia) {
+		super(dia);
 	}
 	
@@ -22,5 +19,5 @@
 		String str;
 		Map<String, String> keys;
-		keys = getNode().getKeys();
+		keys = dlg.node.getKeys();
 
 		if (!dlg.panelMain.chanButton.isSelected())
@@ -56,5 +53,5 @@
 			col = keys.get("seamark:light_float:colour");
 
-		if (getShape() != Styl.PERCH) {
+		if (getShape() != Shp.PERCH) {
 			if (keys.containsKey("seamark:topmark:shape")) {
 				top = keys.get("seamark:topmark:shape");
@@ -260,9 +257,4 @@
 */	}
 
-	public boolean isValid() {
-		return (getCategory() != Cat.UNKNOWN_CAT)
-				&& (getShape() != Styl.UNKNOWN_SHAPE);
-	}
-
 	public void setLightColour() {
 		if (getRegion() == IALA_A) {
@@ -284,7 +276,7 @@
 		super.paintSign();
 */
-		if (isValid()) {
+		if ((getCategory() != Cat.UNKNOWN) && (getShape() != Shp.UNKNOWN)) {
 		boolean region = getRegion();
-			Styl style = getShape();
+			Shp style = getShape();
 
 			String image = "/images/Lateral";
@@ -589,7 +581,6 @@
 
 	public void saveSign() {
-		Node node = getNode();
-
-		if (node == null) {
+
+		if (dlg.node == null) {
 			return;
 		}
@@ -605,15 +596,15 @@
 			case CAN:
 				super.saveSign("buoy_lateral");
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:buoy_lateral:shape", "can"));
 				break;
 			case PILLAR:
 				super.saveSign("buoy_lateral");
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:buoy_lateral:shape", "pillar"));
 				break;
 			case SPAR:
 				super.saveSign("buoy_lateral");
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:buoy_lateral:shape", "spar"));
 				break;
@@ -623,5 +614,5 @@
 			case TOWER:
 				super.saveSign("beacon_lateral");
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:beacon_lateral:shape", "tower"));
 				break;
@@ -631,5 +622,5 @@
 			case PERCH:
 				super.saveSign("beacon_lateral");
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:beacon_lateral:shape", "perch"));
 				break;
@@ -640,12 +631,12 @@
 			case PILLAR:
 			case SPAR:
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:buoy_lateral:category", "port"));
 				if (getRegion() == IALA_A) {
-					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 							"seamark:buoy_lateral:colour", "red"));
 					colour = "red";
 				} else {
-					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 							"seamark:buoy_lateral:colour", "green"));
 					colour = "green";
@@ -653,17 +644,17 @@
 				break;
 			case PERCH:
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:beacon_lateral:category", "port"));
 				break;
 			case BEACON:
 			case TOWER:
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:beacon_lateral:category", "port"));
 				if (getRegion() == IALA_A) {
-					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 							"seamark:beacon_lateral:colour", "red"));
 					colour = "red";
 				} else {
-					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 							"seamark:beacon_lateral:colour", "green"));
 					colour = "green";
@@ -672,9 +663,9 @@
 			case FLOAT:
 				if (getRegion() == IALA_A) {
-					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 							"seamark:light_float:colour", "red"));
 					colour = "red";
 				} else {
-					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 							"seamark:light_float:colour", "green"));
 					colour = "green";
@@ -689,15 +680,15 @@
 			case CAN:
 				super.saveSign("buoy_lateral");
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:buoy_lateral:shape", "can"));
 				break;
 			case PILLAR:
 				super.saveSign("buoy_lateral");
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:buoy_lateral:shape", "pillar"));
 				break;
 			case SPAR:
 				super.saveSign("buoy_lateral");
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:buoy_lateral:shape", "spar"));
 				break;
@@ -707,5 +698,5 @@
 			case TOWER:
 				super.saveSign("beacon_lateral");
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:beacon_lateral:shape", "tower"));
 				break;
@@ -719,14 +710,14 @@
 			case PILLAR:
 			case SPAR:
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:buoy_lateral:category", "preferred_channel_port"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				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(node,
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 							"seamark:buoy_lateral:colour", "red;green;red"));
 					colour = "red";
 				} else {
-					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 							"seamark:buoy_lateral:colour", "green;red;green"));
 					colour = "green";
@@ -735,14 +726,14 @@
 			case BEACON:
 			case TOWER:
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:beacon_lateral:category", "preferred_channel_port"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				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(node,
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 							"seamark:beacon_lateral:colour", "red;green;red"));
 					colour = "red";
 				} else {
-					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 							"seamark:beacon_lateral:colour", "green;red;green"));
 					colour = "green";
@@ -750,12 +741,12 @@
 				break;
 			case FLOAT:
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				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(node,
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 							"seamark:light_float:colour", "red;green;red"));
 					colour = "red";
 				} else {
-					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 							"seamark:light_float:colour", "green;red;green"));
 					colour = "green";
@@ -770,25 +761,25 @@
 			case CONE:
 				super.saveSign("buoy_lateral");
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:buoy_lateral:shape", "conical"));
 				break;
 			case PILLAR:
 				super.saveSign("buoy_lateral");
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:buoy_lateral:shape", "pillar"));
 				break;
 			case SPAR:
 				super.saveSign("buoy_lateral");
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:buoy_lateral:shape", "spar"));
 				break;
 			case BEACON:
 				super.saveSign("beacon_lateral");
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:beacon_lateral:shape", "stake"));
 				break;
 			case TOWER:
 				super.saveSign("beacon_lateral");
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:beacon_lateral:shape", "tower"));
 				break;
@@ -798,5 +789,5 @@
 			case PERCH:
 				super.saveSign("beacon_lateral");
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:beacon_lateral:shape", "perch"));
 				break;
@@ -807,12 +798,12 @@
 			case PILLAR:
 			case SPAR:
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:buoy_lateral:category", "starboard"));
 				if (getRegion() == IALA_A) {
-					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 							"seamark:buoy_lateral:colour", "green"));
 					colour = "green";
 				} else {
-					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 							"seamark:buoy_lateral:colour", "red"));
 					colour = "red";
@@ -821,12 +812,12 @@
 			case BEACON:
 			case TOWER:
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:beacon_lateral:category", "starboard"));
 				if (getRegion() == IALA_A) {
-					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 							"seamark:beacon_lateral:colour", "green"));
 					colour = "green";
 				} else {
-					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 							"seamark:beacon_lateral:colour", "red"));
 					colour = "red";
@@ -835,9 +826,9 @@
 			case FLOAT:
 				if (getRegion() == IALA_A) {
-					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 							"seamark:light_float:colour", "green"));
 					colour = "green";
 				} else {
-					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 							"seamark:light_float:colour", "red"));
 					colour = "red";
@@ -845,5 +836,5 @@
 				break;
 			case PERCH:
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:beacon_lateral:category", "starboard"));
 				break;
@@ -856,25 +847,25 @@
 			case CONE:
 				super.saveSign("buoy_lateral");
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:buoy_lateral:shape", "conical"));
 				break;
 			case PILLAR:
 				super.saveSign("buoy_lateral");
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:buoy_lateral:shape", "pillar"));
 				break;
 			case SPAR:
 				super.saveSign("buoy_lateral");
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:buoy_lateral:shape", "spar"));
 				break;
 			case BEACON:
 				super.saveSign("beacon_lateral");
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:beacon_lateral:shape", "stake"));
 				break;
 			case TOWER:
 				super.saveSign("beacon_lateral");
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:beacon_lateral:shape", "tower"));
 				break;
@@ -888,14 +879,14 @@
 			case PILLAR:
 			case SPAR:
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:buoy_lateral:category", "preferred_channel_starboard"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				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(node,
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 							"seamark:buoy_lateral:colour", "green;red;green"));
 					colour = "green";
 				} else {
-					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 							"seamark:buoy_lateral:colour", "red;green;red"));
 					colour = "red";
@@ -904,14 +895,14 @@
 			case BEACON:
 			case TOWER:
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 						"seamark:beacon_lateral:category", "preferred_channel_starboard"));
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				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(node,
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 							"seamark:beacon_lateral:colour", "green;red;green"));
 					colour = "green";
 				} else {
-					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 							"seamark:beacon_lateral:colour", "red;green;red"));
 					colour = "red";
@@ -919,12 +910,12 @@
 				break;
 			case FLOAT:
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+				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(node,
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 							"seamark:light_float:colour", "green;red;green"));
 					colour = "green";
 				} else {
-					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 							"seamark:light_float:colour", "red;green;red"));
 					colour = "red";
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 24829)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkLight.java	(revision 24830)
@@ -5,12 +5,10 @@
 import javax.swing.ImageIcon;
 
-import org.openstreetmap.josm.data.osm.Node;
-
 import oseam.dialogs.OSeaMAction;
 import oseam.seamarks.SeaMark;
 
 public class MarkLight extends SeaMark {
-	public MarkLight(OSeaMAction dia, Node node) {
-		super(dia, node);
+	public MarkLight(OSeaMAction dia) {
+		super(dia);
 	}
 	
@@ -18,5 +16,5 @@
 
 		Map<String, String> keys;
-		keys = getNode().getKeys();
+		keys = dlg.node.getKeys();
 
 		if (!dlg.panelMain.lightsButton.isSelected())
@@ -63,9 +61,5 @@
 		dlg.cM01Fired.setSelected(true);
 */	}
-/*
-	public boolean isValid() {
-		return (getBuoyIndex() > 0);
-	}
-*/
+
 	public void paintSign() {
 /*		if (dlg.paintlock)
@@ -73,5 +67,5 @@
 		super.paintSign();
 */
-		if (isValid()) {
+		if (getCategory() != Cat.UNKNOWN) {
 
 			switch (getCategory()) {
@@ -102,7 +96,5 @@
 
 	public void saveSign() {
-		Node node = getNode();
-
-		if (node == null) {
+		if (dlg.node == null) {
 			return;
 		}
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 24829)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkSaw.java	(revision 24830)
@@ -5,5 +5,4 @@
 import javax.swing.ImageIcon;
 
-import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.ChangePropertyCommand;
@@ -13,6 +12,6 @@
 
 public class MarkSaw extends SeaMark {
-	public MarkSaw(OSeaMAction dia, Node node) {
-		super(dia, node);
+	public MarkSaw(OSeaMAction dia) {
+		super(dia);
 	}
 
@@ -21,5 +20,5 @@
 		String str;
 		Map<String, String> keys;
-		keys = getNode().getKeys();
+		keys = dlg.node.getKeys();
 
 		if (!dlg.panelMain.chanButton.isSelected())
@@ -84,7 +83,4 @@
 	 * dlg.cbM01Kennung.setSelectedIndex(0); }
 	 * 
-	 * public boolean isValid() { return (getBuoyIndex() > 0) &&
-	 * (getStyleIndex() > 0); }
-	 * 
 	 * public void setLightColour() { super.setLightColour("W"); }
 	 */
@@ -93,5 +89,5 @@
 		 * if (dlg.paintlock) return; super.paintSign();
 		 */
-		if (isValid()) {
+		if ((getCategory() != Cat.UNKNOWN) && (getShape() != Shp.UNKNOWN)) {
 
 			String image = "/images/Safe_Water";
@@ -150,7 +146,5 @@
 
 	public void saveSign() {
-		Node node = getNode();
-
-		if (node == null) {
+		if (dlg.node == null) {
 			return;
 		}
@@ -159,15 +153,15 @@
 		case PILLAR:
 			super.saveSign("buoy_safe_water");
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:buoy_safe_water:shape", "pillar"));
 			break;
 		case SPAR:
 			super.saveSign("buoy_safe_water");
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:buoy_safe_water:shape", "spar"));
 			break;
 		case SPHERE:
 			super.saveSign("buoy_safe_water");
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:buoy_safe_water:shape", "sphere"));
 			break;
@@ -185,21 +179,21 @@
 		case SPAR:
 		case SPHERE:
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:buoy_safe_water:colour_pattern",
 					"vertical stripes"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:buoy_safe_water:colour", "red;white"));
 			break;
 		case BEACON:
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:beacon_safe_water:colour_pattern",
 					"vertical stripes"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:beacon_safe_water:colour", "red;white"));
 			break;
 		case FLOAT:
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:light_float:colour_pattern", "vertical stripes"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:light_float:colour", "red;white"));
 			break;
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 24829)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkSpec.java	(revision 24830)
@@ -5,5 +5,4 @@
 import javax.swing.ImageIcon;
 
-import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.ChangePropertyCommand;
@@ -11,10 +10,8 @@
 import oseam.dialogs.OSeaMAction;
 import oseam.seamarks.SeaMark;
-import oseam.seamarks.SeaMark.Cat;
-import oseam.seamarks.SeaMark.Styl;
 
 public class MarkSpec extends SeaMark {
-	public MarkSpec(OSeaMAction dia, Node node) {
-		super(dia, node);
+	public MarkSpec(OSeaMAction dia) {
+		super(dia);
 	}
 	
@@ -23,5 +20,5 @@
 		String str;
 		Map<String, String> keys;
-		keys = getNode().getKeys();
+		keys = dlg.node.getKeys();
 
 		if (!dlg.panelMain.specButton.isSelected())
@@ -120,9 +117,4 @@
 */	}
 
-	public boolean isValid() {
-		return (getCategory() != Cat.UNKNOWN_CAT)
-				&& (getShape() != Styl.UNKNOWN_SHAPE);
-	}
-
 	public void setLightColour() {
 		super.setLightColour("W");
@@ -134,5 +126,5 @@
 		super.paintSign();
 */
-		if (isValid()) {
+		if ((getCategory() != Cat.UNKNOWN) && (getShape() != Shp.UNKNOWN)) {
 
 			String image = "/images/Special_Purpose";
@@ -255,7 +247,5 @@
 
 	public void saveSign() {
-		Node node = getNode();
-
-		if (node == null) {
+		if (dlg.node == null) {
 			return;
 		}
@@ -264,59 +254,59 @@
 		case PILLAR:
 			super.saveSign("buoy_special_purpose");
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:buoy_special_purpose:shape", "pillar"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:buoy_special_purpose:colour", "yellow"));
 			break;
 		case SPAR:
 			super.saveSign("buoy_special_purpose");
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:buoy_special_purpose:shape", "spar"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:buoy_special_purpose:colour", "yellow"));
 			break;
 		case CAN:
 			super.saveSign("buoy_special_purpose");
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:buoy_special_purpose:shape", "can"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:buoy_special_purpose:colour", "yellow"));
 			break;
 		case CONE:
 			super.saveSign("buoy_special_purpose");
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:buoy_special_purpose:shape", "conical"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:buoy_special_purpose:colour", "yellow"));
 			break;
 		case SPHERE:
 			super.saveSign("buoy_special_purpose");
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:buoy_special_purpose:shape", "sphere"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:buoy_special_purpose:colour", "yellow"));
 			break;
 		case BARREL:
 			super.saveSign("buoy_special_purpose");
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:buoy_special_purpose:shape", "barrel"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:buoy_special_purpose:colour", "yellow"));
 			break;
 		case FLOAT:
 			super.saveSign("light_float");
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:light_float:colour", "yellow"));
 			break;
 		case BEACON:
 			super.saveSign("beacon_special_purpose");
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:beacon_special_purpose:colour", "yellow"));
 			break;
 		case TOWER:
 			super.saveSign("beacon_special_purpose");
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:beacon_special_purpose:shape", "tower"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:beacon_special_purpose:colour", "yellow"));
 			break;
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkUkn.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkUkn.java	(revision 24829)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkUkn.java	(revision 24830)
@@ -1,11 +1,9 @@
 package oseam.seamarks;
-
-import org.openstreetmap.josm.data.osm.Node;
 
 import oseam.dialogs.OSeaMAction;
 
 public class MarkUkn extends SeaMark {
-	public MarkUkn(OSeaMAction dia, Node node) {
-		super(dia, node);
+	public MarkUkn(OSeaMAction dia) {
+		super(dia);
 		dlg.panelMain.clearSelections();
 	}
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 24829)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java	(revision 24830)
@@ -14,58 +14,33 @@
 abstract public class SeaMark {
 
-	public enum Type {
-		UNKNOWN_TYPE, LATERAL, CARDINAL, SAFE_WATER, ISOLATED_DANGER, SPECIAL_PURPOSE, LIGHT
-	}
-
-	public enum Cat {
-		UNKNOWN_CAT, PORT_HAND, STARBOARD_HAND, PREF_PORT_HAND, PREF_STARBOARD_HAND, CARD_NORTH, CARD_EAST, CARD_SOUTH, CARD_WEST, LIGHT_HOUSE, LIGHT_MAJOR, LIGHT_MINOR, LIGHT_VESSEL
-	}
-
 	public final static boolean IALA_A = false;
 	public final static boolean IALA_B = true;
 
-	public enum Styl {
-		UNKNOWN_SHAPE, PILLAR, SPAR, CAN, CONE, SPHERE, BARREL, FLOAT, SUPER, BEACON, TOWER, STAKE, PERCH
+	public enum Cat {
+		UNKNOWN, PORT_HAND, STARBOARD_HAND, PREF_PORT_HAND, PREF_STARBOARD_HAND,
+		CARD_NORTH, CARD_EAST, CARD_SOUTH, CARD_WEST,
+		LIGHT_HOUSE, LIGHT_MAJOR, LIGHT_MINOR, LIGHT_VESSEL, LIGHT_FLOAT
+	}
+
+	public enum Shp {
+		UNKNOWN, PILLAR, SPAR, CAN, CONE, SPHERE, BARREL, FLOAT, SUPER, BEACON, TOWER, STAKE, PERCH
 	}
 
 	public enum Col {
-		UNKNOWN_COLOUR, RED, GREEN, RED_GREEN_RED, GREEN_RED_GREEN, RED_WHITE, BLACK_YELLOW, BLACK_YELLOW_BLACK, YELLOW_BLACK, YELLOW_BLACK_YELLOW, BLACK_RED_BLACK, YELLOW
-	}
-
-	public final static int WHITE_LIGHT = 1;
-	public final static int RED_LIGHT = 2;
-	public final static int GREEN_LIGHT = 3;
-
-	/**
-	 * Topmark Shapes - correspond to TopMarkIndex
-	 */
-
-	public final static int UNKNOWN_TOPMARK = 0;
-	public final static int TOP_YELLOW_X = 1;
-	public final static int TOP_RED_X = 2;
-	public final static int TOP_YELLOW_CAN = 3;
-	public final static int TOP_YELLOW_CONE = 4;
-
-	/**
-	 * Radar Beacons - correspond to Ratyp Index
-	 */
-
-	public final static int UNKNOWN_RATYPE = 0;
-	public final static int RATYPE_RACON = 1;
-	public final static int RATYPE_RAMARK = 2;
-	public final static int RATYPE_LEADING = 3;
-
-	/**
-	 * Fog Signals - correspond to FogSound Index
-	 */
-
-	public final static int UNKNOWN_FOG = 0;
-	public final static int FOG_HORN = 1;
-	public final static int FOG_SIREN = 2;
-	public final static int FOG_DIA = 3;
-	public final static int FOG_BELL = 4;
-	public final static int FOG_WHIS = 5;
-	public final static int FOG_GONG = 6;
-	public final static int FOG_EXPLOS = 7;
+		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 Top {
+		UNKNOWN, X_SHAPE, CAN, CONE
+	}
+
+	public enum Rtb {
+		UNKNOWN, RACON, RAMARK, LEADING
+	}
+
+	public enum Fog {
+		UNKNOWN, HORN, SIREN, DIA, BELL, WHIS, GONG, EXPLOS
+	}
 
 	/**
@@ -79,17 +54,7 @@
 	}
 
-	protected SeaMark(OSeaMAction dia, Node node) {
+	protected SeaMark(OSeaMAction dia) {
 		dlg = dia;
-		this.node = node;
-	}
-
-	private Node node = null;
-
-	public Node getNode() {
-		return node;
-	}
-
-	public void setNode(Node nod) {
-		node = nod;
+		region = Main.pref.get("tomsplugin.IALA").equals("B");
 	}
 
@@ -104,5 +69,5 @@
 	}
 
-	private Col colour = Col.UNKNOWN_COLOUR;
+	private Col colour = Col.UNKNOWN;
 
 	public Col getColour() {
@@ -114,14 +79,4 @@
 	}
 
-	private String errMsg = null;
-
-	public String getErrMsg() {
-		return errMsg;
-	}
-
-	public void setErrMsg(String msg) {
-		errMsg = msg;
-	}
-
 	private String name;
 
@@ -134,5 +89,5 @@
 	}
 
-	private Cat category = Cat.UNKNOWN_CAT;
+	private Cat category = Cat.UNKNOWN;
 
 	public Cat getCategory() {
@@ -144,22 +99,12 @@
 	}
 
-	private Styl shape = Styl.UNKNOWN_SHAPE;
-
-	public Styl getShape() {
+	private Shp shape = Shp.UNKNOWN;
+
+	public Shp getShape() {
 		return shape;
 	}
 
-	public void setShape(Styl styl) {
+	public void setShape(Shp styl) {
 		shape = styl;
-	}
-
-	private boolean valid = true;
-
-	public boolean isValid() {
-		return valid;
-	}
-
-	public void setValid(boolean val) {
-		valid = val;
 	}
 
@@ -194,11 +139,11 @@
 	}
 
-	private int RaType = 0;
-
-	public int getRaType() {
+	private Rtb RaType = Rtb.UNKNOWN;
+
+	public Rtb getRaType() {
 		return RaType;
 	}
 
-	public void setRaType(int type) {
+	public void setRaType(Rtb type) {
 		RaType = type;
 	}
@@ -214,21 +159,21 @@
 	}
 
-	private boolean Fog = false;
+	private boolean FogSignal = false;
 
 	public boolean hasFog() {
-		return Fog;
+		return FogSignal;
 	}
 
 	public void setFog(boolean fog) {
-		Fog = fog;
-	}
-
-	private int FogSound = 0;
-
-	public int getFogSound() {
+		FogSignal = fog;
+	}
+
+	private Fog FogSound = Fog.UNKNOWN;
+
+	public Fog getFogSound() {
 		return FogSound;
 	}
 
-	public void setFogSound(int sound) {
+	public void setFogSound(Fog sound) {
 		FogSound = sound;
 	}
@@ -434,7 +379,7 @@
 
 			if (matcher.find()) {
-				setErrMsg(null);
+//				setErrMsg(null);
 			} else {
-				setErrMsg("Must be a number");
+//				setErrMsg("Must be a number");
 				lightPeriod = "";
 //				dlg.tfM01RepeatTime.requestFocus();
@@ -529,19 +474,19 @@
 				str = k.get("seamark:fog_signal:category");
 				if (str.equals("horn"))
-					setFogSound(FOG_HORN);
+					setFogSound(Fog.HORN);
 				else if (str.equals("siren"))
-					setFogSound(FOG_SIREN);
+					setFogSound(Fog.SIREN);
 				else if (str.equals("diaphone"))
-					setFogSound(FOG_DIA);
+					setFogSound(Fog.DIA);
 				else if (str.equals("bell"))
-					setFogSound(FOG_BELL);
+					setFogSound(Fog.BELL);
 				else if (str.equals("whis"))
-					setFogSound(FOG_WHIS);
+					setFogSound(Fog.WHIS);
 				else if (str.equals("gong"))
-					setFogSound(FOG_GONG);
+					setFogSound(Fog.GONG);
 				else if (str.equals("explosive"))
-					setFogSound(FOG_EXPLOS);
+					setFogSound(Fog.EXPLOS);
 				else
-					setFogSound(UNKNOWN_FOG);
+					setFogSound(Fog.UNKNOWN);
 			}
 			if (k.containsKey("seamark:fog_signal:group"))
@@ -562,11 +507,11 @@
 				str = k.get("seamark:radar_transponder:category");
 				if (str.equals("racon"))
-					setRaType(RATYPE_RACON);
+					setRaType(Rtb.RACON);
 				else if (str.equals("ramark"))
-					setRaType(RATYPE_RAMARK);
+					setRaType(Rtb.RAMARK);
 				else if (str.equals("leading"))
-					setRaType(RATYPE_LEADING);
+					setRaType(Rtb.LEADING);
 				else
-					setRaType(UNKNOWN_RATYPE);
+					setRaType(Rtb.UNKNOWN);
 			}
 			if (k.containsKey("seamark:radar_transponder:group"))
@@ -583,11 +528,11 @@
 
 	public void saveSign(String type) {
-		delSeaMarkKeys(node);
+		delSeaMarkKeys(dlg.node);
 
 		String str = dlg.panelMain.nameBox.getText();
 		if (!str.isEmpty())
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
 					"seamark:name", str));
-		Main.main.undoRedo.add(new ChangePropertyCommand(node, "seamark:type",
+		Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type",
 				type));
 	}
