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 24867)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelChan.java	(revision 24870)
@@ -30,9 +30,9 @@
 	private boolean region;
 	private ButtonGroup catButtons = null;
-	public JRadioButton portButton = null;
-	public JRadioButton stbdButton = null;
-	public JRadioButton prefPortButton = null;
-	public JRadioButton prefStbdButton = null;
-	public JRadioButton safeWaterButton = null;
+	public JRadioButton portButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PortButton.png")));
+	public JRadioButton stbdButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/StbdButton.png")));
+	public JRadioButton prefPortButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PrefPortButton.png")));
+	public JRadioButton prefStbdButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PrefStbdButton.png")));
+	public JRadioButton safeWaterButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SafeWaterButton.png")));
 	private ActionListener alCat = null;
 	public PanelPort panelPort = null;
@@ -65,9 +65,9 @@
 		this.add(panelPrefStbd, null);
 		this.add(panelSafeWater, null);
-		this.add(getPortButton(), null);
-		this.add(getStbdButton(), null);
-		this.add(getPrefPortButton(), null);
-		this.add(getPrefStbdButton(), null);
-		this.add(getSafeWaterButton(), null);
+		this.add(getButton(portButton, 0, 0, 52, 32, "PortTip"), null);
+		this.add(getButton(stbdButton, 0, 32, 52, 32, "StbdTip"), null);
+		this.add(getButton(prefPortButton, 0, 64, 52, 32, "PrefPortTip"), null);
+		this.add(getButton(prefStbdButton, 0, 96, 52, 32, "PrefStbdTip"), null);
+		this.add(getButton(safeWaterButton, 0, 128, 52, 32, "SafeWaterTip"), null);
 		catButtons = new ButtonGroup();
 		catButtons.add(portButton);
@@ -182,52 +182,9 @@
 	}
 
-	private JRadioButton getPortButton() {
-		if (portButton == null) {
-			portButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PortButton.png")));
-			portButton.setBounds(new Rectangle(0, 0, 52, 32));
-			portButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			portButton.setToolTipText(Messages.getString("PortTip"));
-		}
-		return portButton;
-	}
-
-	private JRadioButton getStbdButton() {
-		if (stbdButton == null) {
-			stbdButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/StbdButton.png")));
-			stbdButton.setBounds(new Rectangle(0, 32, 52, 32));
-			stbdButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			stbdButton.setToolTipText(Messages.getString("StbdTip"));
-		}
-		return stbdButton;
-	}
-
-	private JRadioButton getPrefPortButton() {
-		if (prefPortButton == null) {
-			prefPortButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PrefPortButton.png")));
-			prefPortButton.setBounds(new Rectangle(0, 64, 52, 32));
-			prefPortButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			prefPortButton.setToolTipText(Messages.getString("PrefPortTip"));
-		}
-		return prefPortButton;
-	}
-
-	private JRadioButton getPrefStbdButton() {
-		if (prefStbdButton == null) {
-			prefStbdButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PrefStbdButton.png")));
-			prefStbdButton.setBounds(new Rectangle(0, 96, 52, 32));
-			prefStbdButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			prefStbdButton.setToolTipText(Messages.getString("PrefStbdTip"));
-		}
-		return prefStbdButton;
-	}
-
-	private JRadioButton getSafeWaterButton() {
-		if (safeWaterButton == null) {
-			safeWaterButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SafeWaterButton.png")));
-			safeWaterButton.setBounds(new Rectangle(0, 128, 52, 32));
-			safeWaterButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			safeWaterButton.setToolTipText(Messages.getString("SafeWaterTip"));
-		}
-		return safeWaterButton;
+	private JRadioButton getButton(JRadioButton button, int x, int y, int w, int h, String tip) {
+		button.setBounds(new Rectangle(x, y, w, h));
+		button.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
+		button.setToolTipText(Messages.getString(tip));
+		return button;
 	}
 
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 24867)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelCol.java	(revision 24870)
@@ -3,18 +3,20 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.awt.Color;
+import java.awt.Rectangle;
+import java.awt.event.ActionListener;
+
 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 oseam.Messages;
+
+import java.util.EnumMap;
+import java.util.Iterator;
+
 import oseam.dialogs.OSeaMAction;
-
-import java.awt.event.ActionListener;
+import oseam.seamarks.SeaMark.Col;
 
 public class PanelCol extends JPanel {
@@ -22,32 +24,33 @@
 	private OSeaMAction dlg;
 	private ButtonGroup colourButtons = null;
-	public JRadioButton offButton = null;
-	public JRadioButton whiteButton = null;
-	public JRadioButton redButton = null;
-	public JRadioButton orangeButton = null;
-	public JRadioButton amberButton = null;
-	public JRadioButton yellowButton = null;
-	public JRadioButton greenButton = null;
-	public JRadioButton blueButton = null;
-	public JRadioButton violetButton = null;
-	public JRadioButton blackButton = null;
+	public JRadioButton offButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/OffButton.png")));
+	public JRadioButton whiteButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/WhiteButton.png")));
+	public JRadioButton redButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RedButton.png")));
+	public JRadioButton orangeButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/OrangeButton.png")));
+	public JRadioButton amberButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/AmberButton.png")));
+	public JRadioButton yellowButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/YellowButton.png")));
+	public JRadioButton greenButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/GreenButton.png")));
+	public JRadioButton blueButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/BlueButton.png")));
+	public JRadioButton violetButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/VioletButton.png")));
+	public JRadioButton blackButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/BlackButton.png")));
 	private ActionListener alColour = null;
+	private EnumMap<Col, JRadioButton> colours = new EnumMap<Col, JRadioButton>(Col.class);
 
 	public PanelCol(OSeaMAction dia) {
 		dlg = dia;
 		this.setLayout(null);
-		this.add(getOffButton(), null);
-		this.add(getWhiteButton(), null);
-		this.add(getRedButton(), null);
-		this.add(getOrangeButton(), null);
-		this.add(getAmberButton(), null);
-		this.add(getYellowButton(), null);
-		this.add(getGreenButton(), null);
-		this.add(getBlueButton(), null);
-		this.add(getVioletButton(), null);
-		this.add(getBlackButton(), null);
+		this.add(getButton(offButton, 0, 0, 34, 16, "No colour", Col.UNKNOWN), null);
+		this.add(getButton(whiteButton, 0, 16, 34, 16, "White", Col.WHITE), null);
+		this.add(getButton(redButton, 0, 32, 34, 16, "Red", Col.RED), null);
+		this.add(getButton(orangeButton, 0, 48, 34, 16, "Orange", Col.ORANGE), null);
+		this.add(getButton(amberButton, 0, 64, 34, 16, "Amber", Col.AMBER), null);
+		this.add(getButton(yellowButton, 0, 80, 34, 16, "Yellow", Col.YELLOW), null);
+		this.add(getButton(greenButton, 0, 96, 34, 16, "Green", Col.GREEN), null);
+		this.add(getButton(blueButton, 0, 112, 34, 16, "Blue", Col.BLUE), null);
+		this.add(getButton(violetButton, 0, 128, 34, 16, "Violet", Col.VIOLET), null);
+		this.add(getButton(blackButton, 0, 144, 34, 16, "Black", Col.BLACK), null);
 		colourButtons = new ButtonGroup();
+		colourButtons.add(offButton);
 		colourButtons.add(whiteButton);
-		colourButtons.add(offButton);
 		colourButtons.add(redButton);
 		colourButtons.add(orangeButton);
@@ -60,5 +63,18 @@
 		alColour = new ActionListener() {
 			public void actionPerformed(java.awt.event.ActionEvent e) {
-				offButton.setBorderPainted(offButton.isSelected());
+				Iterator<Col> it = colours.keySet().iterator();
+				while (it.hasNext()) {
+					Col col = it.next();
+					JRadioButton button = colours.get(col);
+					if (button.isSelected()) {
+						switch (col) {
+						case UNKNOWN: {
+							break;
+						}
+						}
+						button.setBorderPainted(true);
+					} else button.setBorderPainted(false);
+				}
+/*				offButton.setBorderPainted(offButton.isSelected());
 				whiteButton.setBorderPainted(whiteButton.isSelected());
 				redButton.setBorderPainted(redButton.isSelected());
@@ -70,5 +86,5 @@
 				violetButton.setBorderPainted(violetButton.isSelected());
 				blackButton.setBorderPainted(blackButton.isSelected());
-			}
+*/			}
 		};
 		offButton.addActionListener(alColour);
@@ -89,102 +105,10 @@
 	}
 
-	private JRadioButton getOffButton() {
-		if (offButton == null) {
-			offButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/OffButton.png")));
-			offButton.setBounds(new Rectangle(0, 0, 34, 16));
-			offButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			offButton.setToolTipText(tr("No colour"));
-		}
-		return offButton;
-	}
-
-	private JRadioButton getWhiteButton() {
-		if (whiteButton == null) {
-			whiteButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/WhiteButton.png")));
-			whiteButton.setBounds(new Rectangle(0, 16, 34, 16));
-			whiteButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			whiteButton.setToolTipText(tr("White"));
-		}
-		return whiteButton;
-	}
-
-	private JRadioButton getRedButton() {
-		if (redButton == null) {
-			redButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RedButton.png")));
-			redButton.setBounds(new Rectangle(0, 32, 34, 16));
-			redButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			redButton.setToolTipText(tr("Red"));
-		}
-		return redButton;
-	}
-
-	private JRadioButton getOrangeButton() {
-		if (orangeButton == null) {
-			orangeButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/OrangeButton.png")));
-			orangeButton.setBounds(new Rectangle(0, 48, 34, 16));
-			orangeButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			orangeButton.setToolTipText(tr("Orange"));
-		}
-		return orangeButton;
-	}
-
-	private JRadioButton getAmberButton() {
-		if (amberButton == null) {
-			amberButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/AmberButton.png")));
-			amberButton.setBounds(new Rectangle(0, 64, 34, 16));
-			amberButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			amberButton.setToolTipText(tr("Amber"));
-		}
-		return amberButton;
-	}
-
-	private JRadioButton getYellowButton() {
-		if (yellowButton == null) {
-			yellowButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/YellowButton.png")));
-			yellowButton.setBounds(new Rectangle(0, 80, 34, 16));
-			yellowButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			yellowButton.setToolTipText(tr("Yellow"));
-		}
-		return yellowButton;
-	}
-
-	private JRadioButton getGreenButton() {
-		if (greenButton == null) {
-			greenButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/GreenButton.png")));
-			greenButton.setBounds(new Rectangle(0, 96, 34, 16));
-			greenButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			greenButton.setToolTipText(tr("Green"));
-		}
-		return greenButton;
-	}
-
-	private JRadioButton getBlueButton() {
-		if (blueButton == null) {
-			blueButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/BlueButton.png")));
-			blueButton.setBounds(new Rectangle(0, 112, 34, 16));
-			blueButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			blueButton.setToolTipText(tr("Blue"));
-		}
-		return blueButton;
-	}
-
-	private JRadioButton getVioletButton() {
-		if (violetButton == null) {
-			violetButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/VioletButton.png")));
-			violetButton.setBounds(new Rectangle(0, 128, 34, 16));
-			violetButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			violetButton.setToolTipText(tr("Violet"));
-		}
-		return violetButton;
-	}
-
-	private JRadioButton getBlackButton() {
-		if (blackButton == null) {
-			blackButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/BlackButton.png")));
-			blackButton.setBounds(new Rectangle(0, 144, 34, 16));
-			blackButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			blackButton.setToolTipText(tr("Black"));
-		}
-		return blackButton;
+	private JRadioButton getButton(JRadioButton button, int x, int y, int w, int h, String tip, Col col) {
+		button.setBounds(new Rectangle(x, y, w, h));
+		button.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
+		button.setToolTipText(tr(tip));
+		colours.put(col, button);
+		return button;
 	}
 
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 24867)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelHaz.java	(revision 24870)
@@ -25,17 +25,17 @@
 	private OSeaMAction dlg;
 	private ButtonGroup catButtons = null;
-	public JRadioButton northButton = null;
-	public JRadioButton southButton = null;
-	public JRadioButton eastButton = null;
-	public JRadioButton westButton = null;
-	public JRadioButton isolButton = null;
+	public JRadioButton northButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/CardNButton.png")));
+	public JRadioButton southButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/CardSButton.png")));
+	public JRadioButton eastButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/CardEButton.png")));
+	public JRadioButton westButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/CardWButton.png")));
+	public JRadioButton isolButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/IsolButton.png")));
 	private ActionListener alCat = null;
 
 	private ButtonGroup shapeButtons = null;
-	public JRadioButton pillarButton = null;
-	public JRadioButton sparButton = null;
-	public JRadioButton floatButton = null;
-	public JRadioButton beaconButton = null;
-	public JRadioButton towerButton = null;
+	public JRadioButton pillarButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PillarButton.png")));
+	public JRadioButton sparButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SparButton.png")));
+	public JRadioButton floatButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/FloatButton.png")));
+	public JRadioButton beaconButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/BeaconButton.png")));
+	public JRadioButton towerButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/TowerButton.png")));
 	private ActionListener alShape = null;
 
@@ -43,9 +43,9 @@
 		dlg = dia;
 		this.setLayout(null);
-		this.add(getNothButton(), null);
-		this.add(getSouthButton(), null);
-		this.add(getEastButton(), null);
-		this.add(getWestButton(), null);
-		this.add(getIsolButton(), null);
+		this.add(getButton(northButton, 0, 0, 52, 32, "NorthTip"), null);
+		this.add(getButton(southButton, 0, 32, 52, 32, "SouthTip"), null);
+		this.add(getButton(eastButton, 0, 64, 52, 32, "EastTip"), null);
+		this.add(getButton(westButton, 0, 96, 52, 32, "WestTip"), null);
+		this.add(getButton(isolButton, 0, 128, 52, 32, "IsolTip"), null);
 		catButtons = new ButtonGroup();
 		catButtons.add(northButton);
@@ -130,9 +130,9 @@
 		isolButton.addActionListener(alCat);
 
-		this.add(getPillarButton(), null);
-		this.add(getSparButton(), null);
-		this.add(getFloatButton(), null);
-		this.add(getBeaconButton(), null);
-		this.add(getTowerButton(), null);
+		this.add(getButton(pillarButton, 55, 0, 34, 32, "PillarTip"), null);
+		this.add(getButton(sparButton, 55, 32, 34, 32, "SparTip"), null);
+		this.add(getButton(floatButton, 55, 64, 34, 32, "FloatTip"), null);
+		this.add(getButton(beaconButton, 55, 96, 34, 32, "BeaconTip"), null);
+		this.add(getButton(towerButton, 55, 128, 34, 32, "TowerTip"), null);
 		shapeButtons = new ButtonGroup();
 		shapeButtons.add(pillarButton);
@@ -191,103 +191,10 @@
 	}
 
-	private JRadioButton getNothButton() {
-		if (northButton == null) {
-			northButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/CardNButton.png")));
-			northButton.setBounds(new Rectangle(0, 0, 52, 32));
-			northButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			northButton.setToolTipText(Messages.getString("NorthTip"));
-		}
-		return northButton;
+	private JRadioButton getButton(JRadioButton button, int x, int y, int w, int h, String tip) {
+		button.setBounds(new Rectangle(x, y, w, h));
+		button.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
+		button.setToolTipText(Messages.getString(tip));
+		return button;
 	}
 
-	private JRadioButton getSouthButton() {
-		if (southButton == null) {
-			southButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/CardSButton.png")));
-			southButton.setBounds(new Rectangle(0, 32, 52, 32));
-			southButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			southButton.setToolTipText(Messages.getString("SouthTip"));
-		}
-		return southButton;
-	}
-
-	private JRadioButton getEastButton() {
-		if (eastButton == null) {
-			eastButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/CardEButton.png")));
-			eastButton.setBounds(new Rectangle(0, 64, 52, 32));
-			eastButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			eastButton.setToolTipText(Messages.getString("EastTip"));
-		}
-		return eastButton;
-	}
-
-	private JRadioButton getWestButton() {
-		if (westButton == null) {
-			westButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/CardWButton.png")));
-			westButton.setBounds(new Rectangle(0, 96, 52, 32));
-			westButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			westButton.setToolTipText(Messages.getString("WestTip"));
-		}
-		return westButton;
-	}
-
-	private JRadioButton getIsolButton() {
-		if (isolButton == null) {
-			isolButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/IsolButton.png")));
-			isolButton.setBounds(new Rectangle(0, 128, 52, 32));
-			isolButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			isolButton.setToolTipText(Messages.getString("IsolTip"));
-		}
-		return isolButton;
-	}
-
-	private JRadioButton getPillarButton() {
-		if (pillarButton == null) {
-			pillarButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PillarButton.png")));
-			pillarButton.setBounds(new Rectangle(55, 0, 34, 32));
-			pillarButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			pillarButton.setToolTipText(Messages.getString("PillarTip"));
-		}
-		return pillarButton;
-	}
-
-	private JRadioButton getSparButton() {
-		if (sparButton == null) {
-			sparButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SparButton.png")));
-			sparButton.setBounds(new Rectangle(55, 32, 34, 32));
-			sparButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			sparButton.setToolTipText(Messages.getString("SparTip"));
-		}
-		return sparButton;
-	}
-
-	private JRadioButton getFloatButton() {
-		if (floatButton == null) {
-			floatButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/FloatButton.png")));
-			floatButton.setBounds(new Rectangle(55, 64, 34, 32));
-			floatButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			floatButton.setToolTipText(Messages.getString("FloatTip"));
-		}
-		return floatButton;
-	}
-
-	private JRadioButton getBeaconButton() {
-		if (beaconButton == null) {
-			beaconButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/BeaconButton.png")));
-			beaconButton.setBounds(new Rectangle(55, 96, 34, 32));
-			beaconButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			beaconButton.setToolTipText(Messages.getString("BeaconTip"));
-		}
-		return beaconButton;
-	}
-
-	private JRadioButton getTowerButton() {
-		if (towerButton == null) {
-			towerButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/TowerButton.png")));
-			towerButton.setBounds(new Rectangle(55, 128, 34, 32));
-			towerButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			towerButton.setToolTipText(Messages.getString("TowerTip"));
-		}
-		return towerButton;
-	}
-
 }
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 24867)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLights.java	(revision 24870)
@@ -1,19 +1,16 @@
 package oseam.panels;
+
+import java.awt.Color;
+import java.awt.Rectangle;
+import java.awt.event.ActionListener;
 
 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;
@@ -21,72 +18,39 @@
 import oseam.seamarks.SeaMark.Cat;
 
-import java.awt.Cursor;
-import java.awt.event.ActionListener;
-
 public class PanelLights extends JPanel {
 
 	private OSeaMAction dlg;
-	private ButtonGroup catButtons = null;
-	private JRadioButton houseButton = null;
-	private JRadioButton majorButton = null;
-	private JRadioButton minorButton = null;
-	private JRadioButton vesselButton = null;
-	private JRadioButton floatButton = null;
+	private ButtonGroup catButtons = new ButtonGroup();
+	private JRadioButton houseButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/LighthouseButton.png")));
+	private JRadioButton majorButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/LightMajorButton.png")));
+	private JRadioButton minorButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/LightMinorButton.png")));
+	private JRadioButton vesselButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/LightVesselButton.png")));
+	private JRadioButton floatButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/LightFloatButton.png")));
+	private EnumMap<Cat, JRadioButton> categories = new EnumMap<Cat, JRadioButton>(Cat.class);
+	private ActionListener alCat = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			Iterator<Cat> it = categories.keySet().iterator();
+			while (it.hasNext()) {
+				Cat cat = it.next();
+				JRadioButton button = categories.get(cat);
+				if (button.isSelected()) {
+					dlg.mark.setCategory(cat);
+					button.setBorderPainted(true);
+				} else
+					button.setBorderPainted(false);
+			}
+			if (dlg.mark != null)
+				dlg.mark.paintSign();
+		}
+	};
 
 	public PanelLights(OSeaMAction dia) {
 		dlg = dia;
 		this.setLayout(null);
-		this.add(getHouseButton(), null);
-		this.add(getMajorButton(), null);
-		this.add(getMinorButton(), null);
-		this.add(getVesselButton(), null);
-		this.add(getFloatButton(), null);
-		catButtons = new ButtonGroup();
-		catButtons.add(houseButton);
-		catButtons.add(majorButton);
-		catButtons.add(minorButton);
-		catButtons.add(vesselButton);
-		catButtons.add(floatButton);
-		ActionListener alCat = new ActionListener() {
-			public void actionPerformed(java.awt.event.ActionEvent e) {
-				if (houseButton.isSelected()) {
-					dlg.mark.setCategory(Cat.LIGHT_HOUSE);
-					houseButton.setBorderPainted(true);
-				} else {
-					houseButton.setBorderPainted(false);
-				}
-				if (majorButton.isSelected()) {
-					dlg.mark.setCategory(Cat.LIGHT_MAJOR);
-					majorButton.setBorderPainted(true);
-				} else {
-					majorButton.setBorderPainted(false);
-				}
-				if (minorButton.isSelected()) {
-					dlg.mark.setCategory(Cat.LIGHT_MINOR);
-					minorButton.setBorderPainted(true);
-				} else {
-					minorButton.setBorderPainted(false);
-				}
-				if (vesselButton.isSelected()) {
-					dlg.mark.setCategory(Cat.LIGHT_VESSEL);
-					vesselButton.setBorderPainted(true);
-				} else {
-					vesselButton.setBorderPainted(false);
-				}
-				if (floatButton.isSelected()) {
-					dlg.mark.setCategory(Cat.LIGHT_FLOAT);
-					floatButton.setBorderPainted(true);
-				} else {
-					floatButton.setBorderPainted(false);
-				}
-				if (dlg.mark != null)
-					dlg.mark.paintSign();
-			}
-		};
-		houseButton.addActionListener(alCat);
-		majorButton.addActionListener(alCat);
-		minorButton.addActionListener(alCat);
-		vesselButton.addActionListener(alCat);
-		floatButton.addActionListener(alCat);
+		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);
 	}
 
@@ -95,52 +59,12 @@
 	}
 
-	private JRadioButton getHouseButton() {
-		if (houseButton == null) {
-			houseButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/LighthouseButton.png")));
-			houseButton.setBounds(new Rectangle(0, 0, 34, 32));
-			houseButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			houseButton.setToolTipText(Messages.getString("LighthouseTip"));
-		}
-		return houseButton;
-	}
-
-	private JRadioButton getMajorButton() {
-		if (majorButton == null) {
-			majorButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/LightMajorButton.png")));
-			majorButton.setBounds(new Rectangle(0, 32, 34, 32));
-			majorButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			majorButton.setToolTipText(Messages.getString("MajorLightTip"));
-		}
-		return majorButton;
-	}
-
-	private JRadioButton getMinorButton() {
-		if (minorButton == null) {
-			minorButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/LightMinorButton.png")));
-			minorButton.setBounds(new Rectangle(0, 64, 34, 32));
-			minorButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			minorButton.setToolTipText(Messages.getString("MinorLightTip"));
-		}
-		return minorButton;
-	}
-
-	private JRadioButton getVesselButton() {
-		if (vesselButton == null) {
-			vesselButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/LightVesselButton.png")));
-			vesselButton.setBounds(new Rectangle(0, 96, 34, 32));
-			vesselButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			vesselButton.setToolTipText(Messages.getString("LightVesselTip"));
-		}
-		return vesselButton;
-	}
-
-	private JRadioButton getFloatButton() {
-		if (floatButton == null) {
-			floatButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/LightFloatButton.png")));
-			floatButton.setBounds(new Rectangle(0, 128, 34, 32));
-			floatButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			floatButton.setToolTipText(Messages.getString("LightFloatTip"));
-		}
-		return floatButton;
+	private JRadioButton getCatButton(JRadioButton button, int x, int y, int w, int h, String tip, Cat cat) {
+		button.setBounds(new Rectangle(x, y, w, h));
+		button.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
+		button.setToolTipText(Messages.getString(tip));
+		button.addActionListener(alCat);
+		categories.put(cat, button);
+		catButtons.add(button);
+		return button;
 	}
 
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 24867)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMain.java	(revision 24870)
@@ -24,5 +24,4 @@
 import oseam.seamarks.MarkSpec;
 import oseam.seamarks.MarkLight;
-import oseam.seamarks.SeaMark.Cat;
 
 public class PanelMain extends JPanel {
@@ -39,14 +38,14 @@
 	private JButton saveButton = null;
 	public ButtonGroup typeButtons = null;
-	public JRadioButton chanButton = null;
-	public JRadioButton hazButton = null;
-	public JRadioButton specButton = null;
-	public JRadioButton lightsButton = null;
+	public JRadioButton chanButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/ChanButton.png")));
+	public JRadioButton hazButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/HazButton.png")));
+	public JRadioButton specButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SpecButton.png")));
+	public JRadioButton lightsButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/LightsButton.png")));
 	private ActionListener alType = null;
 	private ButtonGroup miscButtons = null;
-	public JRadioButton topButton = null;
-	public JRadioButton fogButton = null;
-	public JRadioButton radarButton = null;
-	public JRadioButton litButton = null;
+	public JRadioButton topButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/TopButton.png")));
+	public JRadioButton fogButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/FogButton.png")));
+	public JRadioButton radarButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RadarButton.png")));
+	public JRadioButton litButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/LitButton.png")));
 	private ActionListener alMisc = null;
 	public PanelChan panelChan = null;
@@ -106,8 +105,8 @@
 		this.add(fogIcon, null);
 
-		this.add(getChanButton(), null);
-		this.add(getHazButton(), null);
-		this.add(getSpecButton(), null);
-		this.add(getLightsButton(), null);
+		this.add(getButton(chanButton, 0, 0, 62, 40, "ChanTip"), null);
+		this.add(getButton(hazButton, 0, 40, 62, 40, "HazTip"), null);
+		this.add(getButton(specButton, 0, 80, 62, 40, "SpecTip"), null);
+		this.add(getButton(lightsButton, 0, 120, 62, 40, "LightsTip"), null);
 		this.add(panelChan, null);
 		this.add(panelHaz, null);
@@ -183,8 +182,8 @@
 		lightsButton.addActionListener(alType);
 
-		this.add(getTopButton(), null);
-		this.add(getFogButton(), null);
-		this.add(getRadarButton(), null);
-		this.add(getLitButton(), null);
+		this.add(getButton(topButton, 0, 165, 34, 32, "TopmarksTip"), null);
+		this.add(getButton(fogButton, 0, 205, 34, 32, "FogSignalsTip"), null);
+		this.add(getButton(radarButton, 0, 245, 34, 32, "RadarTip"), null);
+		this.add(getButton(litButton, 0, 285, 34, 32, "LitTip"), null);
 		miscButtons = new ButtonGroup();
 		miscButtons.add(topButton);
@@ -271,82 +270,9 @@
 	}
 
-	private JRadioButton getChanButton() {
-		if (chanButton == null) {
-			chanButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/ChanButton.png")));
-			chanButton.setBounds(new Rectangle(0, 0, 62, 40));
-			chanButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			chanButton.setToolTipText(Messages.getString("ChanTip"));
-		}
-		return chanButton;
-	}
-
-	private JRadioButton getHazButton() {
-		if (hazButton == null) {
-			hazButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/HazButton.png")));
-			hazButton.setBounds(new Rectangle(0, 40, 62, 40));
-			hazButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			hazButton.setToolTipText(Messages.getString("HazTip"));
-		}
-		return hazButton;
-	}
-
-	private JRadioButton getSpecButton() {
-		if (specButton == null) {
-			specButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SpecButton.png")));
-			specButton.setBounds(new Rectangle(0, 80, 62, 40));
-			specButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			specButton.setToolTipText(Messages.getString("SpecTip"));
-		}
-		return specButton;
-	}
-
-	private JRadioButton getLightsButton() {
-		if (lightsButton == null) {
-			lightsButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/LightsButton.png")));
-			lightsButton.setBounds(new Rectangle(0, 120, 62, 40));
-			lightsButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			lightsButton.setToolTipText(Messages.getString("LightsTip"));
-		}
-		return lightsButton;
-	}
-
-	private JRadioButton getTopButton() {
-		if (topButton == null) {
-			topButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/TopButton.png")));
-			topButton.setBounds(new Rectangle(0, 165, 34, 32));
-			topButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			topButton.setToolTipText(Messages.getString("TopmarksTip"));
-		}
-		return topButton;
-	}
-
-	private JRadioButton getFogButton() {
-		if (fogButton == null) {
-			fogButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/FogButton.png")));
-			fogButton.setBounds(new Rectangle(0, 205, 34, 32));
-			fogButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			fogButton.setToolTipText(Messages.getString("FogSignalsTip"));
-		}
-		return fogButton;
-	}
-
-	private JRadioButton getRadarButton() {
-		if (radarButton == null) {
-			radarButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RadarButton.png")));
-			radarButton.setBounds(new Rectangle(0, 245, 34, 32));
-			radarButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			radarButton.setToolTipText(Messages.getString("RadarTip"));
-		}
-		return radarButton;
-	}
-
-	private JRadioButton getLitButton() {
-		if (litButton == null) {
-			litButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/LitButton.png")));
-			litButton.setBounds(new Rectangle(0, 285, 34, 32));
-			litButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			litButton.setToolTipText(Messages.getString("LitTip"));
-		}
-		return litButton;
+	private JRadioButton getButton(JRadioButton button, int x, int y, int w, int h, String tip) {
+		button.setBounds(new Rectangle(x, y, w, h));
+		button.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
+		button.setToolTipText(Messages.getString(tip));
+		return button;
 	}
 
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 24867)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPort.java	(revision 24870)
@@ -29,14 +29,14 @@
 	private OSeaMAction dlg;
 	private ButtonGroup regionButtons = null;
-	public JRadioButton regionAButton = null;
-	public JRadioButton regionBButton = null;
+	public JRadioButton regionAButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RegionAButton.png")));
+	public JRadioButton regionBButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RegionBButton.png")));
 	private ButtonGroup shapeButtons = 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 JRadioButton pillarButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PillarButton.png")));
+	public JRadioButton sparButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SparButton.png")));
+	public JRadioButton canButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/CanButton.png")));
+	public JRadioButton floatButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/FloatButton.png")));
+	public JRadioButton beaconButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/BeaconButton.png")));
+	public JRadioButton towerButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/TowerButton.png")));
+	public JRadioButton perchButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PerchPButton.png")));
 	private ActionListener alShape = null;
 
@@ -44,13 +44,13 @@
 		dlg = dia;
 		this.setLayout(null);
-		this.add(getRegionAButton(), null);
-		this.add(getRegionBButton(), null);
-		this.add(getPillarButton(), null);
-		this.add(getSparButton(), null);
-		this.add(getCanButton(), null);
-		this.add(getFloatButton(), null);
-		this.add(getBeaconButton(), null);
-		this.add(getTowerButton(), null);
-		this.add(getPerchButton(), null);
+		this.add(getButton(regionAButton, 0, 2, 34, 30, "RegionATip"), null);
+		this.add(getButton(regionBButton, 0, 32, 34, 30, "RegionBTip"), null);
+		this.add(getButton(pillarButton, 0, 64, 34, 32, "PillarTip"), null);
+		this.add(getButton(sparButton, 0, 96, 34, 32, "SparTip"), null);
+		this.add(getButton(canButton, 0, 128, 34, 32, "CanTip"), null);
+		this.add(getButton(floatButton, 35, 0, 34, 32, "FloatTip"), null);
+		this.add(getButton(beaconButton, 35, 32, 34, 32, "BeaconTip"), null);
+		this.add(getButton(towerButton, 35, 64, 34, 32, "TowerTip"), null);
+		this.add(getButton(perchButton, 35, 96, 34, 32, "PerchTip"), null);
 
 		regionButtons = new ButtonGroup();
@@ -137,92 +137,9 @@
 	}
 
-	private JRadioButton getRegionAButton() {
-		if (regionAButton == null) {
-			regionAButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RegionAButton.png")));
-			regionAButton.setBounds(new Rectangle(0, 2, 34, 30));
-			regionAButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			regionAButton.setToolTipText(Messages.getString("RegionATip"));
-		}
-		return regionAButton;
-	}
-
-	private JRadioButton getRegionBButton() {
-		if (regionBButton == null) {
-			regionBButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RegionBButton.png")));
-			regionBButton.setBounds(new Rectangle(0, 32, 34, 30));
-			regionBButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			regionBButton.setToolTipText(Messages.getString("RegionBTip"));
-		}
-		return regionBButton;
-	}
-
-	private JRadioButton getPillarButton() {
-		if (pillarButton == null) {
-			pillarButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PillarButton.png")));
-			pillarButton.setBounds(new Rectangle(0, 64, 34, 32));
-			pillarButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			pillarButton.setToolTipText(Messages.getString("PillarTip"));
-		}
-		return pillarButton;
-	}
-
-	private JRadioButton getSparButton() {
-		if (sparButton == null) {
-			sparButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SparButton.png")));
-			sparButton.setBounds(new Rectangle(0, 96, 34, 32));
-			sparButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			sparButton.setToolTipText(Messages.getString("SparTip"));
-		}
-		return sparButton;
-	}
-
-	private JRadioButton getCanButton() {
-		if (canButton == null) {
-			canButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/CanButton.png")));
-			canButton.setBounds(new Rectangle(0, 128, 34, 32));
-			canButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			canButton.setToolTipText(Messages.getString("CanTip"));
-		}
-		return canButton;
-	}
-
-	private JRadioButton getFloatButton() {
-		if (floatButton == null) {
-			floatButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/FloatButton.png")));
-			floatButton.setBounds(new Rectangle(35, 0, 34, 32));
-			floatButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			floatButton.setToolTipText(Messages.getString("FloatTip"));
-		}
-		return floatButton;
-	}
-
-	private JRadioButton getBeaconButton() {
-		if (beaconButton == null) {
-			beaconButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/BeaconButton.png")));
-			beaconButton.setBounds(new Rectangle(35, 32, 34, 32));
-			beaconButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			beaconButton.setToolTipText(Messages.getString("BeaconTip"));
-		}
-		return beaconButton;
-	}
-
-	private JRadioButton getTowerButton() {
-		if (towerButton == null) {
-			towerButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/TowerButton.png")));
-			towerButton.setBounds(new Rectangle(35, 64, 34, 32));
-			towerButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			towerButton.setToolTipText(Messages.getString("TowerTip"));
-		}
-		return towerButton;
-	}
-
-	private JRadioButton getPerchButton() {
-		if (perchButton == null) {
-			perchButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PerchPButton.png")));
-			perchButton.setBounds(new Rectangle(35, 96, 34, 32));
-			perchButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			perchButton.setToolTipText(Messages.getString("PerchTip"));
-		}
-		return perchButton;
+	private JRadioButton getButton(JRadioButton button, int x, int y, int w, int h, String tip) {
+		button.setBounds(new Rectangle(x, y, w, h));
+		button.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
+		button.setToolTipText(Messages.getString(tip));
+		return button;
 	}
 
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 24867)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPrefPort.java	(revision 24870)
@@ -28,13 +28,13 @@
 	private OSeaMAction dlg;
 	private ButtonGroup regionButtons = null;
-	public JRadioButton regionAButton = null;
-	public JRadioButton regionBButton = null;
+	public JRadioButton regionAButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RegionAButton.png")));
+	public JRadioButton regionBButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RegionBButton.png")));
 	private ButtonGroup shapeButtons = 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 pillarButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PillarButton.png")));
+	public JRadioButton sparButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SparButton.png")));
+	public JRadioButton canButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/CanButton.png")));
+	public JRadioButton floatButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/FloatButton.png")));
+	public JRadioButton beaconButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/BeaconButton.png")));
+	public JRadioButton towerButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/TowerButton.png")));
 	private ActionListener alShape = null;
 
@@ -42,12 +42,12 @@
 		dlg = dia;
 		this.setLayout(null);
-		this.add(getRegionAButton(), null);
-		this.add(getRegionBButton(), null);
-		this.add(getPillarButton(), null);
-		this.add(getSparButton(), null);
-		this.add(getCanButton(), null);
-		this.add(getFloatButton(), null);
-		this.add(getBeaconButton(), null);
-		this.add(getTowerButton(), null);
+		this.add(getButton(regionAButton, 0, 2, 34, 30, "RegionATip"), null);
+		this.add(getButton(regionBButton, 0, 32, 34, 30, "RegionBTip"), null);
+		this.add(getButton(pillarButton, 0, 64, 34, 32, "PillarTip"), null);
+		this.add(getButton(sparButton, 0, 96, 34, 32, "SparTip"), null);
+		this.add(getButton(canButton, 0, 128, 34, 32, "CanTip"), null);
+		this.add(getButton(floatButton, 35, 0, 34, 32, "FloatTip"), null);
+		this.add(getButton(beaconButton, 35, 32, 34, 32, "BeaconTip"), null);
+		this.add(getButton(towerButton, 35, 64, 34, 32, "TowerTip"), null);
 
 		regionButtons = new ButtonGroup();
@@ -126,82 +126,9 @@
 	}
 
-	private JRadioButton getRegionAButton() {
-		if (regionAButton == null) {
-			regionAButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RegionAButton.png")));
-			regionAButton.setBounds(new Rectangle(0, 2, 34, 30));
-			regionAButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			regionAButton.setToolTipText(Messages.getString("RegionATip"));
-		}
-		return regionAButton;
-	}
-
-	private JRadioButton getRegionBButton() {
-		if (regionBButton == null) {
-			regionBButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RegionBButton.png")));
-			regionBButton.setBounds(new Rectangle(0, 32, 34, 30));
-			regionBButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			regionBButton.setToolTipText(Messages.getString("RegionBTip"));
-		}
-		return regionBButton;
-	}
-
-	private JRadioButton getPillarButton() {
-		if (pillarButton == null) {
-			pillarButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PillarButton.png")));
-			pillarButton.setBounds(new Rectangle(0, 64, 34, 32));
-			pillarButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			pillarButton.setToolTipText(Messages.getString("PillarTip"));
-		}
-		return pillarButton;
-	}
-
-	private JRadioButton getSparButton() {
-		if (sparButton == null) {
-			sparButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SparButton.png")));
-			sparButton.setBounds(new Rectangle(0, 96, 34, 32));
-			sparButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			sparButton.setToolTipText(Messages.getString("SparTip"));
-		}
-		return sparButton;
-	}
-
-	private JRadioButton getCanButton() {
-		if (canButton == null) {
-			canButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/CanButton.png")));
-			canButton.setBounds(new Rectangle(0, 128, 34, 32));
-			canButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			canButton.setToolTipText(Messages.getString("CanTip"));
-		}
-		return canButton;
-	}
-
-	private JRadioButton getFloatButton() {
-		if (floatButton == null) {
-			floatButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/FloatButton.png")));
-			floatButton.setBounds(new Rectangle(35, 0, 34, 32));
-			floatButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			floatButton.setToolTipText(Messages.getString("FloatTip"));
-		}
-		return floatButton;
-	}
-
-	private JRadioButton getBeaconButton() {
-		if (beaconButton == null) {
-			beaconButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/BeaconButton.png")));
-			beaconButton.setBounds(new Rectangle(35, 32, 34, 32));
-			beaconButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			beaconButton.setToolTipText(Messages.getString("BeaconTip"));
-		}
-		return beaconButton;
-	}
-
-	private JRadioButton getTowerButton() {
-		if (towerButton == null) {
-			towerButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/TowerButton.png")));
-			towerButton.setBounds(new Rectangle(35, 64, 34, 32));
-			towerButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			towerButton.setToolTipText(Messages.getString("TowerTip"));
-		}
-		return towerButton;
+	private JRadioButton getButton(JRadioButton button, int x, int y, int w, int h, String tip) {
+		button.setBounds(new Rectangle(x, y, w, h));
+		button.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
+		button.setToolTipText(Messages.getString(tip));
+		return button;
 	}
 
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 24867)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPrefStbd.java	(revision 24870)
@@ -28,13 +28,13 @@
 	private OSeaMAction dlg;
 	private ButtonGroup regionButtons = null;
-	public JRadioButton regionAButton = null;
-	public JRadioButton regionBButton = null;
+	public JRadioButton regionAButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RegionAButton.png")));
+	public JRadioButton regionBButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RegionBButton.png")));
 	private ButtonGroup shapeButtons = 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 pillarButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PillarButton.png")));
+	public JRadioButton sparButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SparButton.png")));
+	public JRadioButton coneButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/ConeButton.png")));
+	public JRadioButton floatButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/FloatButton.png")));
+	public JRadioButton beaconButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/BeaconButton.png")));
+	public JRadioButton towerButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/TowerButton.png")));
 	private ActionListener alShape = null;
 
@@ -42,12 +42,12 @@
 		dlg = dia;
 		this.setLayout(null);
-		this.add(getRegionAButton(), null);
-		this.add(getRegionBButton(), null);
-		this.add(getPillarButton(), null);
-		this.add(getSparButton(), null);
-		this.add(getConeButton(), null);
-		this.add(getFloatButton(), null);
-		this.add(getBeaconButton(), null);
-		this.add(getTowerButton(), null);
+		this.add(getButton(regionAButton, 0, 2, 34, 30, "RegionATip"), null);
+		this.add(getButton(regionBButton, 0, 32, 34, 30, "RegionBTip"), null);
+		this.add(getButton(pillarButton, 0, 64, 34, 32, "PillarTip"), null);
+		this.add(getButton(sparButton, 0, 96, 34, 32, "SparTip"), null);
+		this.add(getButton(coneButton, 0, 128, 34, 32, "ConeTip"), null);
+		this.add(getButton(floatButton, 35, 0, 34, 32, "FloatTip"), null);
+		this.add(getButton(beaconButton, 35, 32, 34, 32, "BeaconTip"), null);
+		this.add(getButton(towerButton, 35, 64, 34, 32, "TowerTip"), null);
 
 		regionButtons = new ButtonGroup();
@@ -126,82 +126,9 @@
 	}
 
-	private JRadioButton getRegionAButton() {
-		if (regionAButton == null) {
-			regionAButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RegionAButton.png")));
-			regionAButton.setBounds(new Rectangle(0, 2, 34, 30));
-			regionAButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			regionAButton.setToolTipText(Messages.getString("RegionATip"));
-		}
-		return regionAButton;
-	}
-
-	private JRadioButton getRegionBButton() {
-		if (regionBButton == null) {
-			regionBButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RegionBButton.png")));
-			regionBButton.setBounds(new Rectangle(0, 32, 34, 30));
-			regionBButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			regionBButton.setToolTipText(Messages.getString("RegionBTip"));
-		}
-		return regionBButton;
-	}
-
-	private JRadioButton getPillarButton() {
-		if (pillarButton == null) {
-			pillarButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PillarButton.png")));
-			pillarButton.setBounds(new Rectangle(0, 64, 34, 32));
-			pillarButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			pillarButton.setToolTipText(Messages.getString("PillarTip"));
-		}
-		return pillarButton;
-	}
-
-	private JRadioButton getSparButton() {
-		if (sparButton == null) {
-			sparButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SparButton.png")));
-			sparButton.setBounds(new Rectangle(0, 96, 34, 32));
-			sparButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			sparButton.setToolTipText(Messages.getString("SparTip"));
-		}
-		return sparButton;
-	}
-
-	private JRadioButton getConeButton() {
-		if (coneButton == null) {
-			coneButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/ConeButton.png")));
-			coneButton.setBounds(new Rectangle(0, 128, 34, 32));
-			coneButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			coneButton.setToolTipText(Messages.getString("ConeTip"));
-		}
-		return coneButton;
-	}
-
-	private JRadioButton getFloatButton() {
-		if (floatButton == null) {
-			floatButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/FloatButton.png")));
-			floatButton.setBounds(new Rectangle(35, 0, 34, 32));
-			floatButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			floatButton.setToolTipText(Messages.getString("FloatTip"));
-		}
-		return floatButton;
-	}
-
-	private JRadioButton getBeaconButton() {
-		if (beaconButton == null) {
-			beaconButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/BeaconButton.png")));
-			beaconButton.setBounds(new Rectangle(35, 32, 34, 32));
-			beaconButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			beaconButton.setToolTipText(Messages.getString("BeaconTip"));
-		}
-		return beaconButton;
-	}
-
-	private JRadioButton getTowerButton() {
-		if (towerButton == null) {
-			towerButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/TowerButton.png")));
-			towerButton.setBounds(new Rectangle(35, 64, 34, 32));
-			towerButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			towerButton.setToolTipText(Messages.getString("TowerTip"));
-		}
-		return towerButton;
+	private JRadioButton getButton(JRadioButton button, int x, int y, int w, int h, String tip) {
+		button.setBounds(new Rectangle(x, y, w, h));
+		button.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
+		button.setToolTipText(Messages.getString(tip));
+		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 24867)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSpec.java	(revision 24870)
@@ -8,4 +8,5 @@
 import java.awt.Color;
 import java.awt.Rectangle;
+import java.awt.event.ActionListener;
 
 import javax.swing.ButtonGroup;
@@ -13,26 +14,43 @@
 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 oseam.seamarks.SeaMark.Col;
-
-import java.awt.event.ActionListener;
 
 public class PanelSpec extends JPanel {
 
 	private OSeaMAction dlg;
-	private ButtonGroup shapeButtons = null;
-	private JRadioButton pillarButton = null;
-	private JRadioButton sparButton = null;
-	private JRadioButton canButton = null;
-	private JRadioButton coneButton = null;
-	private JRadioButton sphereButton = null;
-	private JRadioButton barrelButton = null;
-	private JRadioButton superButton = null;
-	private JRadioButton floatButton = null;
-	private JRadioButton beaconButton = null;
-	private JRadioButton towerButton = null;
+	private ButtonGroup shapeButtons = new ButtonGroup();
+	private JRadioButton pillarButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PillarButton.png")));
+	private JRadioButton sparButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SparButton.png")));
+	private JRadioButton canButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/CanButton.png")));
+	private JRadioButton coneButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/ConeButton.png")));
+	private JRadioButton sphereButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SphereButton.png")));
+	private JRadioButton barrelButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/BarrelButton.png")));
+	private JRadioButton superButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SuperButton.png")));
+	private JRadioButton floatButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/FloatButton.png")));
+	private JRadioButton beaconButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/BeaconButton.png")));
+	private JRadioButton towerButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/TowerButton.png")));
+	private EnumMap<Shp, JRadioButton> shapes = new EnumMap<Shp, JRadioButton>(Shp.class);
 	private PanelCol panelCol = null;
+	private ActionListener alShape = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			Iterator<Shp> it = shapes.keySet().iterator();
+			while (it.hasNext()) {
+				Shp shp = it.next();
+				JRadioButton button = shapes.get(shp);
+				if (button.isSelected()) {
+					dlg.mark.setShape(shp);
+					button.setBorderPainted(true);
+				} else
+					button.setBorderPainted(false);
+			}
+			if (dlg.mark != null)
+				dlg.mark.paintSign();
+		}
+	};
 
 	public PanelSpec(OSeaMAction dia) {
@@ -43,101 +61,14 @@
 		this.setLayout(null);
 		this.add(panelCol, null);
-		this.add(getPillarButton(), null);
-		this.add(getSparButton(), null);
-		this.add(getCanButton(), null);
-		this.add(getConeButton(), null);
-		this.add(getSphereButton(), null);
-		this.add(getBarrelButton(), null);
-		this.add(getSuperButton(), null);
-		this.add(getFloatButton(), null);
-		this.add(getBeaconButton(), null);
-		this.add(getTowerButton(), null);
-		shapeButtons = new ButtonGroup();
-		shapeButtons.add(pillarButton);
-		shapeButtons.add(sparButton);
-		shapeButtons.add(canButton);
-		shapeButtons.add(coneButton);
-		shapeButtons.add(sphereButton);
-		shapeButtons.add(barrelButton);
-		shapeButtons.add(superButton);
-		shapeButtons.add(floatButton);
-		shapeButtons.add(beaconButton);
-		shapeButtons.add(towerButton);
-		ActionListener alShape = new ActionListener() {
-			public void actionPerformed(java.awt.event.ActionEvent e) {
-				if (pillarButton.isSelected()) {
-					dlg.mark.setShape(Shp.PILLAR);
-					pillarButton.setBorderPainted(true);
-				} else {
-					pillarButton.setBorderPainted(false);
-				}
-				if (sparButton.isSelected()) {
-					dlg.mark.setShape(Shp.SPAR);
-					sparButton.setBorderPainted(true);
-				} else {
-					sparButton.setBorderPainted(false);
-				}
-				if (canButton.isSelected()) {
-					dlg.mark.setShape(Shp.CAN);
-					canButton.setBorderPainted(true);
-				} else {
-					canButton.setBorderPainted(false);
-				}
-				if (coneButton.isSelected()) {
-					dlg.mark.setShape(Shp.CONE);
-					coneButton.setBorderPainted(true);
-				} else {
-					coneButton.setBorderPainted(false);
-				}
-				if (sphereButton.isSelected()) {
-					dlg.mark.setShape(Shp.SPHERE);
-					sphereButton.setBorderPainted(true);
-				} else {
-					sphereButton.setBorderPainted(false);
-				}
-				if (barrelButton.isSelected()) {
-					dlg.mark.setShape(Shp.BARREL);
-					barrelButton.setBorderPainted(true);
-				} else {
-					barrelButton.setBorderPainted(false);
-				}
-				if (superButton.isSelected()) {
-					dlg.mark.setShape(Shp.SUPER);
-					superButton.setBorderPainted(true);
-				} else {
-					superButton.setBorderPainted(false);
-				}
-				if (floatButton.isSelected()) {
-					dlg.mark.setShape(Shp.FLOAT);
-					floatButton.setBorderPainted(true);
-				} else {
-					floatButton.setBorderPainted(false);
-				}
-				if (beaconButton.isSelected()) {
-					dlg.mark.setShape(Shp.BEACON);
-					beaconButton.setBorderPainted(true);
-				} else {
-					beaconButton.setBorderPainted(false);
-				}
-				if (towerButton.isSelected()) {
-					dlg.mark.setShape(Shp.TOWER);
-					towerButton.setBorderPainted(true);
-				} else {
-					towerButton.setBorderPainted(false);
-				}
-				if (dlg.mark != null)
-					dlg.mark.paintSign();
-			}
-		};
-		pillarButton.addActionListener(alShape);
-		sparButton.addActionListener(alShape);
-		canButton.addActionListener(alShape);
-		coneButton.addActionListener(alShape);
-		sphereButton.addActionListener(alShape);
-		barrelButton.addActionListener(alShape);
-		superButton.addActionListener(alShape);
-		floatButton.addActionListener(alShape);
-		beaconButton.addActionListener(alShape);
-		towerButton.addActionListener(alShape);
+		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);
 	}
 
@@ -146,102 +77,12 @@
 	}
 
-	private JRadioButton getPillarButton() {
-		if (pillarButton == null) {
-			pillarButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PillarButton.png")));
-			pillarButton.setBounds(new Rectangle(55, 0, 34, 32));
-			pillarButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			pillarButton.setToolTipText(Messages.getString("PillarTip"));
-		}
-		return pillarButton;
-	}
-
-	private JRadioButton getSparButton() {
-		if (sparButton == null) {
-			sparButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SparButton.png")));
-			sparButton.setBounds(new Rectangle(55, 32, 34, 32));
-			sparButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			sparButton.setToolTipText(Messages.getString("SparTip"));
-		}
-		return sparButton;
-	}
-
-	private JRadioButton getCanButton() {
-		if (canButton == null) {
-			canButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/CanButton.png")));
-			canButton.setBounds(new Rectangle(55, 64, 34, 32));
-			canButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			canButton.setToolTipText(Messages.getString("CanTip"));
-		}
-		return canButton;
-	}
-
-	private JRadioButton getConeButton() {
-		if (coneButton == null) {
-			coneButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/ConeButton.png")));
-			coneButton.setBounds(new Rectangle(55, 96, 34, 32));
-			coneButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			coneButton.setToolTipText(Messages.getString("ConeTip"));
-		}
-		return coneButton;
-	}
-
-	private JRadioButton getSphereButton() {
-		if (sphereButton == null) {
-			sphereButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SphereButton.png")));
-			sphereButton.setBounds(new Rectangle(55, 128, 34, 32));
-			sphereButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			sphereButton.setToolTipText(Messages.getString("SphereTip"));
-		}
-		return sphereButton;
-	}
-
-	private JRadioButton getBarrelButton() {
-		if (barrelButton == null) {
-			barrelButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/BarrelButton.png")));
-			barrelButton.setBounds(new Rectangle(90, 0, 34, 32));
-			barrelButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			barrelButton.setToolTipText(Messages.getString("BarrelTip"));
-		}
-		return barrelButton;
-	}
-
-	private JRadioButton getSuperButton() {
-		if (superButton == null) {
-			superButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SuperButton.png")));
-			superButton.setBounds(new Rectangle(90, 32, 34, 32));
-			superButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			superButton.setToolTipText(Messages.getString("SuperTip"));
-		}
-		return superButton;
-	}
-
-	private JRadioButton getFloatButton() {
-		if (floatButton == null) {
-			floatButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/FloatButton.png")));
-			floatButton.setBounds(new Rectangle(90, 64, 34, 32));
-			floatButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			floatButton.setToolTipText(Messages.getString("FloatTip"));
-		}
-		return floatButton;
-	}
-
-	private JRadioButton getBeaconButton() {
-		if (beaconButton == null) {
-			beaconButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/BeaconButton.png")));
-			beaconButton.setBounds(new Rectangle(90, 96, 34, 32));
-			beaconButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			beaconButton.setToolTipText(Messages.getString("BeaconTip"));
-		}
-		return beaconButton;
-	}
-
-	private JRadioButton getTowerButton() {
-		if (towerButton == null) {
-			towerButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/TowerButton.png")));
-			towerButton.setBounds(new Rectangle(90, 128, 34, 32));
-			towerButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			towerButton.setToolTipText(Messages.getString("TowerTip"));
-		}
-		return towerButton;
+	private JRadioButton getShapeButton(JRadioButton button, int x, int y, int w, int h, String tip, Shp shp) {
+		button.setBounds(new Rectangle(x, y, w, h));
+		button.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
+		button.setToolTipText(Messages.getString(tip));
+		button.addActionListener(alShape);
+		shapes.put(shp, button);
+		shapeButtons.add(button);
+		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 24867)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelStbd.java	(revision 24870)
@@ -28,14 +28,14 @@
 	private OSeaMAction dlg;
 	private ButtonGroup regionButtons = null;
-	public JRadioButton regionAButton = null;
-	public JRadioButton regionBButton = null;
+	public JRadioButton regionAButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RegionAButton.png")));
+	public JRadioButton regionBButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RegionBButton.png")));
 	private ButtonGroup shapeButtons = 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 JRadioButton pillarButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PillarButton.png")));
+	public JRadioButton sparButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SparButton.png")));
+	public JRadioButton coneButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/ConeButton.png")));
+	public JRadioButton floatButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/FloatButton.png")));
+	public JRadioButton beaconButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/BeaconButton.png")));
+	public JRadioButton towerButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/TowerButton.png")));
+	public JRadioButton perchButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PerchSButton.png")));
 	private ActionListener alShape = null;
 
@@ -43,13 +43,13 @@
 		dlg = dia;
 		this.setLayout(null);
-		this.add(getRegionAButton(), null);
-		this.add(getRegionBButton(), null);
-		this.add(getPillarButton(), null);
-		this.add(getSparButton(), null);
-		this.add(getConeButton(), null);
-		this.add(getFloatButton(), null);
-		this.add(getBeaconButton(), null);
-		this.add(getTowerButton(), null);
-		this.add(getPerchButton(), null);
+		this.add(getButton(regionAButton, 0, 2, 34, 30, "RegionATip"), null);
+		this.add(getButton(regionBButton, 0, 32, 34, 30, "RegionBTip"), null);
+		this.add(getButton(pillarButton, 0, 64, 34, 32, "PillarTip"), null);
+		this.add(getButton(sparButton, 0, 96, 34, 32, "SparTip"), null);
+		this.add(getButton(coneButton, 0, 128, 34, 32, "ConeTip"), null);
+		this.add(getButton(floatButton, 35, 0, 34, 32, "FloatTip"), null);
+		this.add(getButton(beaconButton, 35, 32, 34, 32, "BeaconTip"), null);
+		this.add(getButton(towerButton, 35, 64, 34, 32, "TowerTip"), null);
+		this.add(getButton(perchButton, 35, 96, 34, 32, "PerchTip"), null);
 
 		regionButtons = new ButtonGroup();
@@ -136,92 +136,9 @@
 	}
 
-	private JRadioButton getRegionAButton() {
-		if (regionAButton == null) {
-			regionAButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RegionAButton.png")));
-			regionAButton.setBounds(new Rectangle(0, 2, 34, 30));
-			regionAButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			regionAButton.setToolTipText(Messages.getString("RegionATip"));
-		}
-		return regionAButton;
-	}
-
-	private JRadioButton getRegionBButton() {
-		if (regionBButton == null) {
-			regionBButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RegionBButton.png")));
-			regionBButton.setBounds(new Rectangle(0, 32, 34, 30));
-			regionBButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			regionBButton.setToolTipText(Messages.getString("RegionBTip"));
-		}
-		return regionBButton;
-	}
-
-	private JRadioButton getPillarButton() {
-		if (pillarButton == null) {
-			pillarButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PillarButton.png")));
-			pillarButton.setBounds(new Rectangle(0, 64, 34, 32));
-			pillarButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			pillarButton.setToolTipText(Messages.getString("PillarTip"));
-		}
-		return pillarButton;
-	}
-
-	private JRadioButton getSparButton() {
-		if (sparButton == null) {
-			sparButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SparButton.png")));
-			sparButton.setBounds(new Rectangle(0, 96, 34, 32));
-			sparButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			sparButton.setToolTipText(Messages.getString("SparTip"));
-		}
-		return sparButton;
-	}
-
-	private JRadioButton getConeButton() {
-		if (coneButton == null) {
-			coneButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/ConeButton.png")));
-			coneButton.setBounds(new Rectangle(0, 128, 34, 32));
-			coneButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			coneButton.setToolTipText(Messages.getString("ConeTip"));
-		}
-		return coneButton;
-	}
-
-	private JRadioButton getFloatButton() {
-		if (floatButton == null) {
-			floatButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/FloatButton.png")));
-			floatButton.setBounds(new Rectangle(35, 0, 34, 32));
-			floatButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			floatButton.setToolTipText(Messages.getString("FloatTip"));
-		}
-		return floatButton;
-	}
-
-	private JRadioButton getBeaconButton() {
-		if (beaconButton == null) {
-			beaconButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/BeaconButton.png")));
-			beaconButton.setBounds(new Rectangle(35, 32, 34, 32));
-			beaconButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			beaconButton.setToolTipText(Messages.getString("BeaconTip"));
-		}
-		return beaconButton;
-	}
-
-	private JRadioButton getTowerButton() {
-		if (towerButton == null) {
-			towerButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/TowerButton.png")));
-			towerButton.setBounds(new Rectangle(35, 64, 34, 32));
-			towerButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			towerButton.setToolTipText(Messages.getString("TowerTip"));
-		}
-		return towerButton;
-	}
-
-	private JRadioButton getPerchButton() {
-		if (perchButton == null) {
-			perchButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PerchSButton.png")));
-			perchButton.setBounds(new Rectangle(35, 96, 34, 32));
-			perchButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			perchButton.setToolTipText(Messages.getString("PerchTip"));
-		}
-		return perchButton;
+	private JRadioButton getButton(JRadioButton button, int x, int y, int w, int h, String tip) {
+		button.setBounds(new Rectangle(x, y, w, h));
+		button.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
+		button.setToolTipText(Messages.getString(tip));
+		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 24867)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelTop.java	(revision 24870)
@@ -29,20 +29,20 @@
 	public PanelCol panelCol = null;
 	private ButtonGroup topButtons = null;
-	public JRadioButton noTopButton = null;
-	public JRadioButton canTopButton = null;
-	public JRadioButton coneTopButton = null;
-	public JRadioButton sphereTopButton = null;
-	public JRadioButton XTopButton = null;
-	public JRadioButton northTopButton = null;
-	public JRadioButton southTopButton = null;
-	public JRadioButton eastTopButton = null;
-	public JRadioButton westTopButton = null;
-	public JRadioButton spheres2TopButton = null;
-	public JRadioButton boardDayButton = null;
-	public JRadioButton diamondDayButton = null;
-	public JRadioButton triangleDayButton = null;
-	public JRadioButton triangleInvDayButton = null;
-	public JRadioButton squareDayButton = null;
-	public JRadioButton mooringTopButton = null;
+	public JRadioButton noTopButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/NoTopButton.png")));
+	public JRadioButton canTopButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/CanTopButton.png")));
+	public JRadioButton coneTopButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/ConeTopButton.png")));
+	public JRadioButton sphereTopButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SphereTopButton.png")));
+	public JRadioButton XTopButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/XTopButton.png")));
+	public JRadioButton northTopButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/NorthTopButton.png")));
+	public JRadioButton southTopButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SouthTopButton.png")));
+	public JRadioButton eastTopButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/EastTopButton.png")));
+	public JRadioButton westTopButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/WestTopButton.png")));
+	public JRadioButton spheres2TopButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/Spheres2TopButton.png")));
+	public JRadioButton boardDayButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/BoardDayButton.png")));
+	public JRadioButton diamondDayButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/DiamondDayButton.png")));
+	public JRadioButton triangleDayButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/TriangleDayButton.png")));
+	public JRadioButton triangleInvDayButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/TriangleInvDayButton.png")));
+	public JRadioButton squareDayButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SquareDayButton.png")));
+	public JRadioButton mooringTopButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/MooringTopButton.png")));
 	ActionListener alTop = null;
 
@@ -53,20 +53,20 @@
 		this.setLayout(null);
 		this.add(panelCol, null);
-		this.add(getNoTopButton(), null);
-		this.add(getCanTopButton(), null);
-		this.add(getConeTopButton(), null);
-		this.add(getSphereTopButton(), null);
-		this.add(getXTopButton(), null);
-		this.add(getNorthTopButton(), null);
-		this.add(getSouthTopButton(), null);
-		this.add(getEastTopButton(), null);
-		this.add(getWestTopButton(), null);
-		this.add(getSpheres2TopButton(), null);
-		this.add(getBoardDayButton(), null);
-		this.add(getDiamondDayButton(), null);
-		this.add(getTriangleDayButton(), null);
-		this.add(getTriangleInvDayButton(), null);
-		this.add(getSquareDayButton(), null);
-		this.add(getMooringTopButton(), null);
+		this.add(getButton(noTopButton, 40, 5, 27, 27, "NoTopTip"), null);
+		this.add(getButton(canTopButton, 70, 5, 27, 27, "CanTopTip"), null);
+		this.add(getButton(coneTopButton, 100, 5, 27, 27, "ConeTopTip"), null);
+		this.add(getButton(sphereTopButton, 130, 5, 27, 27, "SphereTopTip"), null);
+		this.add(getButton(XTopButton, 160, 5, 27, 27, "XTopTip"), null);
+		this.add(getButton(northTopButton, 40, 35, 27, 27, "NorthTopTip"), null);
+		this.add(getButton(southTopButton, 70, 35, 27, 27, "SouthTopTip"), null);
+		this.add(getButton(eastTopButton, 100, 35, 27, 27, "EastTopTip"), null);
+		this.add(getButton(westTopButton, 130, 35, 27, 27, "WestTopTip"), null);
+		this.add(getButton(spheres2TopButton, 160, 35, 27, 27, "Spheres2TopTip"), null);
+		this.add(getButton(boardDayButton, 40, 65, 27, 27, "BoardDayTip"), null);
+		this.add(getButton(diamondDayButton, 70, 65, 27, 27, "DiamondDayTip"), null);
+		this.add(getButton(triangleDayButton, 100, 65, 27, 27, "TriangleDayTip"), null);
+		this.add(getButton(triangleInvDayButton, 130, 65, 27, 27, "TriangleInvDayTip"), null);
+		this.add(getButton(squareDayButton, 160, 65, 27, 27, "SquareDayTip"), null);
+		this.add(getButton(mooringTopButton, 40, 95, 27, 27, "MooringTopTip"), null);
 		topButtons = new ButtonGroup();
 		topButtons.add(noTopButton);
@@ -130,162 +130,9 @@
 	}
 
-	private JRadioButton getNoTopButton() {
-		if (noTopButton == null) {
-			noTopButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/NoTopButton.png")));
-			noTopButton.setBounds(new Rectangle(40, 5, 27, 27));
-			noTopButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			noTopButton.setToolTipText(Messages.getString("NoTopTip"));
-		}
-		return noTopButton;
-	}
-
-	private JRadioButton getCanTopButton() {
-		if (canTopButton == null) {
-			canTopButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/CanTopButton.png")));
-			canTopButton.setBounds(new Rectangle(70, 5, 27, 27));
-			canTopButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			canTopButton.setToolTipText(Messages.getString("CanTopTip"));
-		}
-		return canTopButton;
-	}
-
-	private JRadioButton getConeTopButton() {
-		if (coneTopButton == null) {
-			coneTopButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/ConeTopButton.png")));
-			coneTopButton.setBounds(new Rectangle(100, 5, 27, 27));
-			coneTopButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			coneTopButton.setToolTipText(Messages.getString("ConeTopTip"));
-		}
-		return coneTopButton;
-	}
-
-	private JRadioButton getSphereTopButton() {
-		if (sphereTopButton == null) {
-			sphereTopButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SphereTopButton.png")));
-			sphereTopButton.setBounds(new Rectangle(130, 5, 27, 27));
-			sphereTopButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			sphereTopButton.setToolTipText(Messages.getString("SphereTopTip"));
-		}
-		return sphereTopButton;
-	}
-
-	private JRadioButton getXTopButton() {
-		if (XTopButton == null) {
-			XTopButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/XTopButton.png")));
-			XTopButton.setBounds(new Rectangle(160, 5, 27, 27));
-			XTopButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			XTopButton.setToolTipText(Messages.getString("XTopTip"));
-		}
-		return XTopButton;
-	}
-
-	private JRadioButton getNorthTopButton() {
-		if (northTopButton == null) {
-			northTopButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/NorthTopButton.png")));
-			northTopButton.setBounds(new Rectangle(40, 35, 27, 27));
-			northTopButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			northTopButton.setToolTipText(Messages.getString("NorthTopTip"));
-		}
-		return northTopButton;
-	}
-
-	private JRadioButton getSouthTopButton() {
-		if (southTopButton == null) {
-			southTopButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SouthTopButton.png")));
-			southTopButton.setBounds(new Rectangle(70, 35, 27, 27));
-			southTopButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			southTopButton.setToolTipText(Messages.getString("SouthTopTip"));
-		}
-		return southTopButton;
-	}
-
-	private JRadioButton getEastTopButton() {
-		if (eastTopButton == null) {
-			eastTopButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/EastTopButton.png")));
-			eastTopButton.setBounds(new Rectangle(100, 35, 27, 27));
-			eastTopButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			eastTopButton.setToolTipText(Messages.getString("EastTopTip"));
-		}
-		return eastTopButton;
-	}
-
-	private JRadioButton getWestTopButton() {
-		if (westTopButton == null) {
-			westTopButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/WestTopButton.png")));
-			westTopButton.setBounds(new Rectangle(130, 35, 27, 27));
-			westTopButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			westTopButton.setToolTipText(Messages.getString("WestTopTip"));
-		}
-		return westTopButton;
-	}
-
-	private JRadioButton getSpheres2TopButton() {
-		if (spheres2TopButton == null) {
-			spheres2TopButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/Spheres2TopButton.png")));
-			spheres2TopButton.setBounds(new Rectangle(160, 35, 27, 27));
-			spheres2TopButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			spheres2TopButton.setToolTipText(Messages.getString("Spheres2TopTip"));
-		}
-		return spheres2TopButton;
-	}
-
-	private JRadioButton getBoardDayButton() {
-		if (boardDayButton == null) {
-			boardDayButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/BoardDayButton.png")));
-			boardDayButton.setBounds(new Rectangle(40, 65, 27, 27));
-			boardDayButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			boardDayButton.setToolTipText(Messages.getString("BoardDayTip"));
-		}
-		return boardDayButton;
-	}
-
-	private JRadioButton getDiamondDayButton() {
-		if (diamondDayButton == null) {
-			diamondDayButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/DiamondDayButton.png")));
-			diamondDayButton.setBounds(new Rectangle(70, 65, 27, 27));
-			diamondDayButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			diamondDayButton.setToolTipText(Messages.getString("DiamondDayTip"));
-		}
-		return diamondDayButton;
-	}
-
-	private JRadioButton getTriangleDayButton() {
-		if (triangleDayButton == null) {
-			triangleDayButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/TriangleDayButton.png")));
-			triangleDayButton.setBounds(new Rectangle(100, 65, 27, 27));
-			triangleDayButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			triangleDayButton.setToolTipText(Messages.getString("TriangleDayTip"));
-		}
-		return triangleDayButton;
-	}
-
-	private JRadioButton getTriangleInvDayButton() {
-		if (triangleInvDayButton == null) {
-			triangleInvDayButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/TriangleInvDayButton.png")));
-			triangleInvDayButton.setBounds(new Rectangle(130, 65, 27, 27));
-			triangleInvDayButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			triangleInvDayButton.setToolTipText(Messages.getString("TriangleInvDayTip"));
-		}
-		return triangleInvDayButton;
-	}
-
-	private JRadioButton getSquareDayButton() {
-		if (squareDayButton == null) {
-			squareDayButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SquareDayButton.png")));
-			squareDayButton.setBounds(new Rectangle(160, 65, 27, 27));
-			squareDayButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			squareDayButton.setToolTipText(Messages.getString("SquareDayTip"));
-		}
-		return squareDayButton;
-	}
-
-	private JRadioButton getMooringTopButton() {
-		if (mooringTopButton == null) {
-			mooringTopButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/MooringTopButton.png")));
-			mooringTopButton.setBounds(new Rectangle(40, 95, 27, 27));
-			mooringTopButton.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-			mooringTopButton.setToolTipText(Messages.getString("MooringTopTip"));
-		}
-		return mooringTopButton;
+	private JRadioButton getButton(JRadioButton button, int x, int y, int w, int h, String tip) {
+			button.setBounds(new Rectangle(x, y, w, h));
+			button.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
+			button.setToolTipText(Messages.getString(tip));
+		return button;
 	}
 
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 24867)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkCard.java	(revision 24870)
@@ -153,4 +153,6 @@
 		if (dlg.node == null)
 			return;
+		else
+			super.saveSign();
 
 		String shape = "";
@@ -158,20 +160,20 @@
 		switch (getShape()) {
 		case PILLAR:
-			super.saveSign("buoy_cardinal");
+			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:
-			super.saveSign("buoy_cardinal");
+			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:
-			super.saveSign("beacon_cardinal");
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "beacon_cardinal"));
 			break;
 		case TOWER:
-			super.saveSign("beacon_cardinal");
+			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:
-			super.saveSign("light_float");
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "light_float"));
 			break;
 		default:
@@ -264,7 +266,6 @@
 			break;
 		}
-		saveTopMarkData(shape, "black");
-		saveLightData();
-		saveRadarFogData();
+		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 24867)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkIsol.java	(revision 24870)
@@ -104,26 +104,27 @@
 	public void saveSign() {
 
-		if (dlg.node == null) {
+		if (dlg.node == null)
 			return;
-		}
+		else
+			super.saveSign();
 
 		switch (getShape()) {
 		case PILLAR:
-			super.saveSign("buoy_isolated_danger");
+			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:
-			super.saveSign("buoy_isolated_danger");
+			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:
-			super.saveSign("beacon_isolated_danger");
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "beacon_isolated_danger"));
 			break;
 		case TOWER:
-			super.saveSign("beacon_isolated_danger");
+			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:
-			super.saveSign("light_float");
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "light_float"));
 			break;
 		default:
@@ -149,7 +150,6 @@
 		}
 
-		saveTopMarkData("2 spheres", "black");
-		saveLightData();
-		saveRadarFogData();
+		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 24867)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkLat.java	(revision 24870)
@@ -472,7 +472,8 @@
 	public void saveSign() {
 
-		if (dlg.node == null) {
+		if (dlg.node == null)
 			return;
-		}
+		else
+			super.saveSign();
 
 		Cat cat = getCategory();
@@ -485,27 +486,27 @@
 			switch (getShape()) {
 			case CAN:
-				super.saveSign("buoy_lateral");
+				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:
-				super.saveSign("buoy_lateral");
+				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:
-				super.saveSign("buoy_lateral");
+				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:
-				super.saveSign("beacon_lateral");
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "beacon_lateral"));
 				break;
 			case TOWER:
-				super.saveSign("beacon_lateral");
+				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:
-				super.saveSign("light_float");
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "light_float"));
 				break;
 			case PERCH:
-				super.saveSign("beacon_lateral");
+				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;
@@ -555,24 +556,24 @@
 			switch (getShape()) {
 			case CAN:
-				super.saveSign("buoy_lateral");
+				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:
-				super.saveSign("buoy_lateral");
+				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:
-				super.saveSign("buoy_lateral");
+				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:
-				super.saveSign("beacon_lateral");
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "beacon_lateral"));
 				break;
 			case TOWER:
-				super.saveSign("beacon_lateral");
+				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:
-				super.saveSign("light_float");
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "light_float"));
 				break;
 			default:
@@ -621,28 +622,28 @@
 			switch (getShape()) {
 			case CONE:
-				super.saveSign("buoy_lateral");
+				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:
-				super.saveSign("buoy_lateral");
+				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:
-				super.saveSign("buoy_lateral");
+				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:
-				super.saveSign("beacon_lateral");
+				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:
-				super.saveSign("beacon_lateral");
+				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:
-				super.saveSign("light_float");
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "light_float"));
 				break;
 			case PERCH:
-				super.saveSign("beacon_lateral");
+				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;
@@ -692,25 +693,25 @@
 			switch (getShape()) {
 			case CONE:
-				super.saveSign("buoy_lateral");
+				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:
-				super.saveSign("buoy_lateral");
+				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:
-				super.saveSign("buoy_lateral");
+				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:
-				super.saveSign("beacon_lateral");
+				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:
-				super.saveSign("beacon_lateral");
+				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:
-				super.saveSign("light_float");
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "light_float"));
 				break;
 			default:
@@ -759,7 +760,6 @@
 		default:
 		}
-		saveTopMarkData(shape, colour);
-		saveLightData();
-		saveRadarFogData();
+		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 24867)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkLight.java	(revision 24870)
@@ -4,4 +4,7 @@
 
 import javax.swing.ImageIcon;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.command.ChangePropertyCommand;
 
 import oseam.dialogs.OSeaMAction;
@@ -80,28 +83,27 @@
 
 	public void saveSign() {
-		if (dlg.node == null) {
+		if (dlg.node == null)
 			return;
-		}
+		else
+			super.saveSign();
 
 		switch (getCategory()) {
 		case LIGHT_HOUSE:
-			super.saveSign("landmark");
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "landmark"));
 			break;
 		case LIGHT_MAJOR:
-			super.saveSign("light_major");
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "light_major"));
 			break;
 		case LIGHT_MINOR:
-			super.saveSign("light_minor");
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "light_minor"));
 			break;
 		case LIGHT_VESSEL:
-			super.saveSign("light_vessel");
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "light_vessel"));
 			break;
 		case LIGHT_FLOAT:
-			super.saveSign("light_float");
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "light_float"));
 			break;
 		default:
 		}
-		saveLightData();
-		saveRadarFogData();
 	}
 
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 24867)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkSaw.java	(revision 24870)
@@ -135,26 +135,27 @@
 
 	public void saveSign() {
-		if (dlg.node == null) {
+		if (dlg.node == null)
 			return;
-		}
+		else
+			super.saveSign();
 
 		switch (getShape()) {
 		case PILLAR:
-			super.saveSign("buoy_safe_water");
+			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:
-			super.saveSign("buoy_safe_water");
+			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:
-			super.saveSign("buoy_safe_water");
+			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:
-			super.saveSign("beacon_safe_water");
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "beacon_safe_water"));
 			break;
 		case FLOAT:
-			super.saveSign("light_float");
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "light_float"));
 			break;
 		default:
@@ -178,7 +179,6 @@
 		default:
 		}
-		saveTopMarkData("sphere", "red");
-		saveLightData();
-		saveRadarFogData();
+		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 24867)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkSpec.java	(revision 24870)
@@ -162,49 +162,50 @@
 
 	public void saveSign() {
-		if (dlg.node == null) {
+		if (dlg.node == null)
 			return;
-		}
+		else
+			super.saveSign();
 
 		switch (getShape()) {
 		case PILLAR:
-			super.saveSign("buoy_special_purpose");
+			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"));
 			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(dlg.node, "seamark:type", "buoy_special_purpose"));
 			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_special_purpose:shape", "spar"));
 			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(dlg.node, "seamark:type", "buoy_special_purpose"));
 			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_special_purpose:shape", "can"));
 			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(dlg.node, "seamark:type", "buoy_special_purpose"));
 			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_special_purpose:shape", "conical"));
 			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(dlg.node, "seamark:type", "buoy_special_purpose"));
 			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_special_purpose:shape", "sphere"));
 			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(dlg.node, "seamark:type", "buoy_special_purpose"));
 			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_special_purpose:shape", "barrel"));
 			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(dlg.node, "seamark:type", "light_float"));
 			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(dlg.node, "seamark:type", "beacon_special_purpose"));
 			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(dlg.node, "seamark:type", "beacon_special_purpose"));
 			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_special_purpose:shape", "tower"));
 			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_special_purpose:colour", "yellow"));
@@ -218,6 +219,8 @@
 		 * saveTopMarkData("cylinder", "yellow"); break; case TOP_YELLOW_CONE:
 		 * saveTopMarkData("cone, point up", "yellow"); break; }
-		 */saveLightData();
-		saveRadarFogData();
+		 * Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
+		 * "seamark:topmark:shape", shape)); Main.main.undoRedo.add(new
+		 * ChangePropertyCommand(dlg.node, "seamark:topmark:colour", "yellow"));
+		 */
 	}
 }
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 24867)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java	(revision 24870)
@@ -16,31 +16,4 @@
 abstract public class SeaMark {
 
-	public final static boolean IALA_A = false;
-	public final static boolean IALA_B = true;
-
-	public enum Cat {
-		UNKNOWN, LAT_PORT, LAT_STBD, LAT_PREF_PORT, LAT_PREF_STBD, CARD_NORTH, CARD_EAST, CARD_SOUTH, CARD_WEST, LIGHT_HOUSE, LIGHT_MAJOR, LIGHT_MINOR, LIGHT_VESSEL, LIGHT_FLOAT
-	}
-
-	public enum Shp {
-		UNKNOWN, PILLAR, SPAR, CAN, CONE, SPHERE, BARREL, FLOAT, SUPER, BEACON, TOWER, STAKE, PERCH
-	}
-
-	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 Top {
-		UNKNOWN, X_SHAPE, CAN, CONE
-	}
-
-	public enum Rtb {
-		UNKNOWN, RACON, RAMARK, LEADING
-	}
-
-	public enum Fog {
-		UNKNOWN, HORN, SIREN, DIA, BELL, WHIS, GONG, EXPLOS
-	}
-
 	/**
 	 * Variables
@@ -58,4 +31,7 @@
 	}
 
+	public final static boolean IALA_A = false;
+	public final static boolean IALA_B = true;
+
 	private boolean region = false;
 
@@ -68,4 +44,10 @@
 	}
 
+	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
+	}
+
 	private Col colour = Col.UNKNOWN;
 
@@ -88,4 +70,10 @@
 	}
 
+	public enum Cat {
+		UNKNOWN, LAT_PORT, LAT_STBD, LAT_PREF_PORT, LAT_PREF_STBD,
+		CARD_NORTH, CARD_EAST, CARD_SOUTH, CARD_WEST,
+		LIGHT_HOUSE, LIGHT_MAJOR, LIGHT_MINOR, LIGHT_VESSEL, LIGHT_FLOAT
+	}
+
 	private Cat category = Cat.UNKNOWN;
 
@@ -98,4 +86,8 @@
 	}
 
+	public enum Shp {
+		UNKNOWN, PILLAR, SPAR, CAN, CONE, SPHERE, BARREL, FLOAT, SUPER, BEACON, TOWER, STAKE, PERCH
+	}
+
 	private Shp shape = Shp.UNKNOWN;
 
@@ -108,4 +100,8 @@
 	}
 
+	public enum Top {
+		UNKNOWN, X_SHAPE, CAN, CONE
+	}
+
 	private boolean TopMark = false;
 
@@ -138,4 +134,8 @@
 	}
 
+	public enum Rtb {
+		UNKNOWN, RACON, RAMARK, LEADING
+	}
+
 	private Rtb RaType = Rtb.UNKNOWN;
 
@@ -166,4 +166,8 @@
 	public void setFog(boolean fog) {
 		FogSignal = fog;
+	}
+
+	public enum Fog {
+		UNKNOWN, HORN, SIREN, DIA, BELL, WHIS, GONG, EXPLOS
 	}
 
@@ -599,5 +603,5 @@
 		 */}
 
-	public void saveSign(String type) {
+	public void saveSign() {
 		Iterator<String> it = dlg.node.getKeys().keySet().iterator();
 		String str;
@@ -613,8 +617,4 @@
 		if (!str.isEmpty())
 			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:name", str));
-		Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", type));
-	}
-
-	protected void saveLightData() {
 		/*
 		 * String colour; if (dlg.cM01Fired.isSelected()) { if (!(colour =
@@ -686,16 +686,8 @@
 		 * ChangePropertyCommand(Node, "seamark:light:" + i + ":sector_end",
 		 * Bearing2[i])); } }
-		 */}
-
-	protected void saveTopMarkData(String shape, String colour) {
-		/*
 		 * if (hasTopMark()) { Main.main.undoRedo.add(new
 		 * ChangePropertyCommand(Node, "seamark:topmark:shape", shape));
 		 * Main.main.undoRedo.add(new ChangePropertyCommand(Node,
 		 * "seamark:topmark:colour", colour)); }
-		 */}
-
-	protected void saveRadarFogData() {
-		/*
 		 * if (hasRadar()) { Main.main.undoRedo.add(new ChangePropertyCommand(Node,
 		 * "seamark:radar_reflector", "yes")); } if (hasRacon()) { switch (RaType) {
