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 26987)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelChan.java	(revision 26988)
@@ -68,5 +68,5 @@
 				}
 			}
-			syncButtons();
+			syncPanel();
 		}
 	};
@@ -77,26 +77,25 @@
 				if (topmarkButton.isSelected()) {
 					if (SeaMark.GrpMAP.get(dlg.mark.getObject()) == Grp.SAW) {
-						dlg.panelMain.panelTop.sphereTopButton.doClick();
-						dlg.panelMain.panelTop.panelPat.noneButton.doClick();
-						dlg.panelMain.panelTop.panelPat.panelCol.redButton.doClick();
+						dlg.mark.setTopmark(Top.SPHERE);
+						dlg.mark.setPattern(Ent.TOPMARK, Pat.NONE);
+						dlg.mark.setColour(Ent.TOPMARK, Col.RED);
 					} else {
 						switch (dlg.mark.getCategory()) {
 						case LAM_PORT:
 						case LAM_PPORT:
-							dlg.panelMain.panelTop.canTopButton.doClick();
+							dlg.mark.setTopmark(Top.CAN);
 							switch (dlg.mark.getRegion()) {
 							case A:
-								dlg.panelMain.panelTop.panelPat.noneButton.doClick();
-								dlg.panelMain.panelTop.panelPat.panelCol.redButton.doClick();
+								dlg.mark.setPattern(Ent.TOPMARK, Pat.NONE);
+								dlg.mark.setColour(Ent.TOPMARK, Col.RED);
 								break;
 							case B:
-								dlg.panelMain.panelTop.panelPat.noneButton.doClick();
-								dlg.panelMain.panelTop.panelPat.panelCol.greenButton.doClick();
+								dlg.mark.setPattern(Ent.TOPMARK, Pat.NONE);
+								dlg.mark.setColour(Ent.TOPMARK, Col.GREEN);
 								break;
 							case C:
-								dlg.panelMain.panelTop.panelPat.horizButton.doClick();
-								dlg.panelMain.panelTop.panelPat.panelCol.redButton.doClick();
-								dlg.panelMain.panelTop.panelPat.panelCol.addButton.doClick();
-								dlg.panelMain.panelTop.panelPat.panelCol.whiteButton.doClick();
+								dlg.mark.setPattern(Ent.TOPMARK, Pat.HORIZ);
+								dlg.mark.setColour(Ent.TOPMARK, Col.RED);
+								dlg.mark.addColour(Ent.TOPMARK, Col.WHITE);
 								break;
 							}
@@ -107,16 +106,15 @@
 							switch (dlg.mark.getRegion()) {
 							case A:
-								dlg.panelMain.panelTop.panelPat.noneButton.doClick();
-								dlg.panelMain.panelTop.panelPat.panelCol.greenButton.doClick();
+								dlg.mark.setPattern(Ent.TOPMARK, Pat.NONE);
+								dlg.mark.setColour(Ent.TOPMARK, Col.GREEN);
 								break;
 							case B:
-								dlg.panelMain.panelTop.panelPat.noneButton.doClick();
-								dlg.panelMain.panelTop.panelPat.panelCol.redButton.doClick();
+								dlg.mark.setPattern(Ent.TOPMARK, Pat.NONE);
+								dlg.mark.setColour(Ent.TOPMARK, Col.RED);
 								break;
 							case C:
-								dlg.panelMain.panelTop.panelPat.horizButton.doClick();
-								dlg.panelMain.panelTop.panelPat.panelCol.greenButton.doClick();
-								dlg.panelMain.panelTop.panelPat.panelCol.addButton.doClick();
-								dlg.panelMain.panelTop.panelPat.panelCol.whiteButton.doClick();
+								dlg.mark.setPattern(Ent.TOPMARK, Pat.HORIZ);
+								dlg.mark.setColour(Ent.TOPMARK, Col.GREEN);
+								dlg.mark.addColour(Ent.TOPMARK, Col.WHITE);
 								break;
 							}
@@ -126,6 +124,10 @@
 					topmarkButton.setBorderPainted(true);
 				} else {
+					dlg.mark.setTopmark(Top.NONE);
+					dlg.mark.setPattern(Ent.TOPMARK, Pat.NONE);
+					dlg.mark.setColour(Ent.TOPMARK, Col.UNKNOWN);
 					topmarkButton.setBorderPainted(false);
 				}
+				dlg.panelMain.panelTop.syncPanel();
 				dlg.mark.paintSign();
 			}
@@ -161,5 +163,5 @@
 	}
 	
-	public void syncButtons() {
+	public void syncPanel() {
 		if (portButton.isSelected()) {
 			portButton.setBorderPainted(true);
@@ -210,7 +212,9 @@
 			dlg.panelMain.moreButton.setVisible(false);
 		}
-		panelPort.syncButtons();
-		panelStbd.syncButtons();
-		panelSaw.syncButtons();
+		topmarkButton.setBorderPainted(topmarkButton.isSelected());
+		topmarkButton.setVisible(dlg.mark.isValid());
+		panelPort.syncPanel();
+		panelStbd.syncPanel();
+		panelSaw.syncPanel();
 
 	}
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 26987)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelHaz.java	(revision 26988)
@@ -137,27 +137,32 @@
 			if (dlg.mark != null) {
 				if (topmarkButton.isSelected()) {
-					dlg.panelMain.panelTop.panelPat.noneButton.doClick();
-					dlg.panelMain.panelTop.panelPat.panelCol.blackButton.doClick();
+					dlg.mark.setPattern(Ent.TOPMARK, Pat.NONE);
+					dlg.mark.setColour(Ent.TOPMARK, Col.BLACK);
 					switch (dlg.mark.getCategory()) {
 					case CAM_NORTH:
-						dlg.panelMain.panelTop.northTopButton.doClick();
+						dlg.mark.setTopmark(Top.NORTH);
 						break;
 					case CAM_SOUTH:
-						dlg.panelMain.panelTop.southTopButton.doClick();
+						dlg.mark.setTopmark(Top.SOUTH);
 						break;
 					case CAM_EAST:
-						dlg.panelMain.panelTop.eastTopButton.doClick();
+						dlg.mark.setTopmark(Top.EAST);
 						break;
 					case CAM_WEST:
-						dlg.panelMain.panelTop.westTopButton.doClick();
+						dlg.mark.setTopmark(Top.WEST);
 						break;
 					default:
-						dlg.panelMain.panelTop.spheres2TopButton.doClick();
+						dlg.mark.setTopmark(Top.SPHERES2);
 						break;
 					}
 					topmarkButton.setBorderPainted(true);
 				} else {
+					dlg.mark.setTopmark(Top.NONE);
+					dlg.mark.setPattern(Ent.TOPMARK, Pat.NONE);
+					dlg.mark.setColour(Ent.TOPMARK, Col.UNKNOWN);
 					topmarkButton.setBorderPainted(false);
 				}
+				dlg.panelMain.panelTop.syncPanel();
+				dlg.mark.paintSign();
 			}
 		}
@@ -188,5 +193,5 @@
 	}
 
-	public void syncButtons() {
+	public void syncPanel() {
 		northButton.setBorderPainted(dlg.mark.getCategory() == Cat.CAM_NORTH);
 		southButton.setBorderPainted(dlg.mark.getCategory() == Cat.CAM_SOUTH);
@@ -201,11 +206,6 @@
 				button.setBorderPainted(false);
 		}
-		if (dlg.mark.isValid()) {
-			topmarkButton.setVisible(true);
-			dlg.panelMain.moreButton.setVisible(true);
-		} else {
-			topmarkButton.setVisible(false);
-			dlg.panelMain.moreButton.setVisible(false);
-		}
+		topmarkButton.setBorderPainted(topmarkButton.isSelected());
+		topmarkButton.setVisible(dlg.mark.isValid());
 	}
 
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 26987)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMain.java	(revision 26988)
@@ -19,4 +19,5 @@
 	public JLabel radarIcon = null;
 	public JLabel fogIcon = null;
+	public JLabel colLabel = null;
 	public JLabel nameLabel = null;
 	public JTextField nameBox = null;
@@ -94,4 +95,7 @@
 		fogIcon.setBounds(new Rectangle(235, 0, 150, 185));
 		this.add(fogIcon, null);
+		colLabel = new JLabel("", SwingConstants.CENTER);
+		colLabel.setBounds(new Rectangle(235, 100, 150, 20));
+		this.add(colLabel, null);
 
 		this.add(getButton(chanButton, 0, 0, 62, 40, "Chan"), null);
@@ -274,5 +278,5 @@
 	}
 
-	public void syncButtons() {
+	public void syncPanel() {
 		if (dlg.mark == null) {
 			topButton.setEnabled(false);
@@ -299,7 +303,11 @@
 		alType.actionPerformed(null);
 		alMisc.actionPerformed(null);
-		dlg.panelMain.panelChan.syncButtons();
-		dlg.panelMain.panelHaz.syncButtons();
-		dlg.panelMain.panelMore.syncButtons();
+		dlg.panelMain.panelChan.syncPanel();
+		dlg.panelMain.panelHaz.syncPanel();
+		dlg.panelMain.panelSpec.syncPanel();
+		dlg.panelMain.panelMore.setVisible(false);
+		dlg.panelMain.panelMore.syncPanel();
+		dlg.panelMain.panelTop.syncPanel();
+		moreButton.setVisible(dlg.mark.isValid());
 	}
 
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMore.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMore.java	(revision 26987)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMore.java	(revision 26988)
@@ -301,6 +301,37 @@
 		}
 	
-	public void syncButtons() {
-		panelPat.syncButtons();
+	public void syncPanel() {
+		panelPat.syncPanel();
+		regionAButton.setBorderPainted(dlg.mark.getRegion() == Reg.A);
+		regionBButton.setBorderPainted(dlg.mark.getRegion() == Reg.B);
+		regionCButton.setBorderPainted(dlg.mark.getRegion() == Reg.C);
+		elevBox.setText(dlg.mark.getElevation());
+		heightBox.setText(dlg.mark.getHeight());
+		sourceBox.setText(dlg.mark.getSource());
+		infoBox.setText(dlg.mark.getInfo());
+		statusBox.setSelectedIndex(0);
+		for (Sts sts : statuses.keySet()) {
+			int item = statuses.get(sts);
+			if (dlg.mark.getStatus() == sts)
+				statusBox.setSelectedIndex(item);
+		}
+		constrBox.setSelectedIndex(0);
+		for (Cns cns : constructions.keySet()) {
+			int item = constructions.get(cns);
+			if (dlg.mark.getConstr() == cns)
+				constrBox.setSelectedIndex(item);
+		}
+		visBox.setSelectedIndex(0);
+		for (Vis vis : visibilities.keySet()) {
+			int item = visibilities.get(vis);
+			if (dlg.mark.getVis() == vis)
+				visBox.setSelectedIndex(item);
+		}
+		reflBox.setSelectedIndex(0);
+		for (Vis vis : reflectivities.keySet()) {
+			int item = reflectivities.get(vis);
+			if (dlg.mark.getRvis() == vis)
+				reflBox.setSelectedIndex(item);
+		}
 	}
 
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPat.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPat.java	(revision 26987)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPat.java	(revision 26988)
@@ -72,5 +72,5 @@
 	}
 
-	public void syncButtons() {
+	public void syncPanel() {
 		for (Pat pat : patterns.keySet()) {
 			JRadioButton button = patterns.get(pat);
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 26987)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPort.java	(revision 26988)
@@ -114,5 +114,5 @@
 	}
 
-	public void syncButtons() {
+	public void syncPanel() {
 		for (Shp shp : shapes.keySet()) {
 			JRadioButton button = shapes.get(shp);
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSaw.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSaw.java	(revision 26987)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSaw.java	(revision 26988)
@@ -67,5 +67,5 @@
 	}
 
-	public void syncButtons() {
+	public void syncPanel() {
 		for (Shp shp : shapes.keySet()) {
 			JRadioButton button = shapes.get(shp);
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 26987)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSpec.java	(revision 26988)
@@ -25,5 +25,4 @@
 					dlg.mark.setCategory(cat);
 			}
-			checkValidity();
 		}
 	};
@@ -51,12 +50,28 @@
 					dlg.mark.setShape(shp);
 					dlg.mark.setObject(objects.get(shp));
-					if ((button == cairnButton) && !(dlg.panelMain.panelMore.panelPat.panelCol.delButton.isSelected()))
-						dlg.panelMain.panelMore.panelPat.panelCol.delButton.doClick();
+					if ((button == cairnButton) && !(dlg.panelMain.panelMore.panelPat.panelCol.delButton.isSelected())) {
+						dlg.mark.setPattern(Ent.BODY, Pat.NONE);
+						dlg.mark.setColour(Ent.BODY, Col.UNKNOWN);
+					}
 					button.setBorderPainted(true);
 				} else
 					button.setBorderPainted(false);
 			}
-			checkValidity();
-		}
+			if ((dlg.mark.getObject() != Obj.UNKNOWN) && (dlg.mark.getShape() != Shp.UNKNOWN)) {
+				dlg.panelMain.topButton.setEnabled(true);
+				dlg.panelMain.fogButton.setEnabled(true);
+				dlg.panelMain.radButton.setEnabled(true);
+				dlg.panelMain.litButton.setEnabled(true);
+				dlg.panelMain.moreButton.setVisible(true);
+			} else {
+				dlg.panelMain.topButton.setEnabled(false);
+				dlg.panelMain.fogButton.setEnabled(false);
+				dlg.panelMain.radButton.setEnabled(false);
+				dlg.panelMain.litButton.setEnabled(false);
+				dlg.panelMain.moreButton.setVisible(false);
+			}
+			dlg.panelMain.panelMore.syncPanel();
+			dlg.mark.paintSign()
+;		}
 	};
 
@@ -104,19 +119,17 @@
 	}
 
-	private void checkValidity() {
-		if (dlg.mark != null) {
-			if ((dlg.mark.getObject() != Obj.UNKNOWN) && (dlg.mark.getShape() != Shp.UNKNOWN)) {
-				dlg.panelMain.topButton.setEnabled(true);
-				dlg.panelMain.fogButton.setEnabled(true);
-				dlg.panelMain.radButton.setEnabled(true);
-				dlg.panelMain.litButton.setEnabled(true);
-				dlg.panelMain.moreButton.setVisible(true);
-			} else {
-				dlg.panelMain.topButton.setEnabled(false);
-				dlg.panelMain.fogButton.setEnabled(false);
-				dlg.panelMain.radButton.setEnabled(false);
-				dlg.panelMain.litButton.setEnabled(false);
-				dlg.panelMain.moreButton.setVisible(false);
-			}
+	public void syncPanel() {
+		for (Shp shp : shapes.keySet()) {
+			JRadioButton button = shapes.get(shp);
+			if (dlg.mark.getShape() == shp) {
+				button.setBorderPainted(true);
+			} else
+				button.setBorderPainted(false);
+		}
+		categoryBox.setSelectedIndex(0);
+		for (Cat cat : categories.keySet()) {
+			int item = categories.get(cat);
+			if (dlg.mark.getCategory() == cat)
+				categoryBox.setSelectedIndex(item);
 		}
 	}
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 26987)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelStbd.java	(revision 26988)
@@ -114,5 +114,5 @@
 	}
 
-	public void syncButtons() {
+	public void syncPanel() {
 		for (Shp shp : shapes.keySet()) {
 			JRadioButton button = shapes.get(shp);
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 26987)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelTop.java	(revision 26988)
@@ -4,4 +4,5 @@
 import java.awt.event.*;
 import javax.swing.*;
+
 import java.util.*;
 
@@ -54,23 +55,23 @@
 		this.setLayout(null);
 		panelPat = new PanelPat(dlg, Ent.TOPMARK);
-		panelPat.setBounds(new Rectangle(0, 0, 110, 160));
+		panelPat.setBounds(new Rectangle(160, 0, 110, 160));
 		this.add(panelPat, null);
-		this.add(getTopButton(noTopButton, 110, 5, 27, 27, "NoTop", Top.NONE), null);
-		this.add(getTopButton(canTopButton, 140, 5, 27, 27, "CanTop", Top.CAN), null);
-		this.add(getTopButton(coneTopButton, 170, 5, 27, 27, "ConeTop", Top.CONE), null);
-		this.add(getTopButton(sphereTopButton, 200, 5, 27, 27, "SphereTop", Top.SPHERE), null);
-		this.add(getTopButton(XTopButton, 230, 5, 27, 27, "XTop", Top.X_SHAPE), null);
-		this.add(getTopButton(northTopButton, 110, 35, 27, 27, "NorthTop", Top.NORTH), null);
-		this.add(getTopButton(southTopButton, 140, 35, 27, 27, "SouthTop", Top.SOUTH), null);
-		this.add(getTopButton(eastTopButton, 170, 35, 27, 27, "EastTop", Top.EAST), null);
-		this.add(getTopButton(westTopButton, 200, 35, 27, 27, "WestTop", Top.WEST), null);
-		this.add(getTopButton(spheres2TopButton, 230, 35, 27, 27, "Spheres2Top", Top.SPHERES2), null);
-		this.add(getTopButton(boardDayButton, 110, 65, 27, 27, "BoardDay", Top.BOARD), null);
-		this.add(getTopButton(diamondDayButton, 140, 65, 27, 27, "DiamondDay", Top.DIAMOND), null);
-		this.add(getTopButton(triangleDayButton, 170, 65, 27, 27, "TriangleDay", Top.TRIANGLE), null);
-		this.add(getTopButton(triangleInvDayButton, 200, 65, 27, 27, "TriangleInvDay", Top.TRIANGLE_INV), null);
-		this.add(getTopButton(squareDayButton, 230, 65, 27, 27, "SquareDay", Top.SQUARE), null);
-		this.add(getTopButton(circleDayButton, 230, 95, 27, 27, "CircleDay", Top.CIRCLE), null);
-		this.add(getMoorButton(mooringTopButton, 110, 95, 27, 27, "MooringTop"), null);
+		this.add(getTopButton(noTopButton, 0, 5, 27, 27, "NoTop", Top.NONE), null);
+		this.add(getTopButton(canTopButton, 30, 5, 27, 27, "CanTop", Top.CAN), null);
+		this.add(getTopButton(coneTopButton, 60, 5, 27, 27, "ConeTop", Top.CONE), null);
+		this.add(getTopButton(sphereTopButton, 90, 5, 27, 27, "SphereTop", Top.SPHERE), null);
+		this.add(getTopButton(XTopButton, 120, 5, 27, 27, "XTop", Top.X_SHAPE), null);
+		this.add(getTopButton(northTopButton, 0, 35, 27, 27, "NorthTop", Top.NORTH), null);
+		this.add(getTopButton(southTopButton, 30, 35, 27, 27, "SouthTop", Top.SOUTH), null);
+		this.add(getTopButton(eastTopButton, 60, 35, 27, 27, "EastTop", Top.EAST), null);
+		this.add(getTopButton(westTopButton, 90, 35, 27, 27, "WestTop", Top.WEST), null);
+		this.add(getTopButton(spheres2TopButton, 120, 35, 27, 27, "Spheres2Top", Top.SPHERES2), null);
+		this.add(getTopButton(boardDayButton, 0, 65, 27, 27, "BoardDay", Top.BOARD), null);
+		this.add(getTopButton(diamondDayButton, 30, 65, 27, 27, "DiamondDay", Top.DIAMOND), null);
+		this.add(getTopButton(triangleDayButton, 60, 65, 27, 27, "TriangleDay", Top.TRIANGLE), null);
+		this.add(getTopButton(triangleInvDayButton, 90, 65, 27, 27, "TriangleInvDay", Top.TRIANGLE_INV), null);
+		this.add(getTopButton(squareDayButton, 120, 65, 27, 27, "SquareDay", Top.SQUARE), null);
+		this.add(getTopButton(circleDayButton, 120, 95, 27, 27, "CircleDay", Top.CIRCLE), null);
+		this.add(getMoorButton(mooringTopButton, 0, 95, 27, 27, "MooringTop"), null);
 	}
 
@@ -80,4 +81,15 @@
 		}
 		mooringTopButton.setEnabled(state);
+	}
+	
+	public void syncPanel() {
+		for (Top top : tops.keySet()) {
+			JRadioButton button = tops.get(top);
+			if (dlg.mark.getTopmark() == top) {
+				button.setBorderPainted(true);
+			} else
+				button.setBorderPainted(false);
+		}
+		panelPat.syncPanel();
 	}
 
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 26987)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java	(revision 26988)
@@ -562,8 +562,20 @@
 
 	public enum Fog {
-		UNKNOWN, HORN, SIREN, DIA, BELL, WHIS, GONG, EXPLOS
-	}
-
-	private Fog FogSound = Fog.UNKNOWN;
+		NONE, UNKNOWN, HORN, SIREN, DIA, BELL, WHIS, GONG, EXPLOS
+	}
+
+	public static final EnumMap<Fog, String> FogSTR = new EnumMap<Fog, String>(Fog.class);
+	static {
+		FogSTR.put(Fog.UNKNOWN, "yes");
+		FogSTR.put(Fog.HORN, "horn");
+		FogSTR.put(Fog.SIREN, "siren");
+		FogSTR.put(Fog.DIA, "diaphone");
+		FogSTR.put(Fog.BELL, "bell");
+		FogSTR.put(Fog.WHIS, "whistle");
+		FogSTR.put(Fog.GONG, "gong");
+		FogSTR.put(Fog.EXPLOS, "explosion");
+	}
+
+	private Fog FogSound = Fog.NONE;
 
 	public Fog getFogSound() {
@@ -581,6 +593,26 @@
 	}
 
-	public void setFogGroup(String group) {
-		FogGroup = group;
+	public void setFogGroup(String grp) {
+		FogGroup = grp;
+	}
+
+	private String FogSequence = "";
+
+	public String getFogSequence() {
+		return FogSequence;
+	}
+
+	public void setFogSequence(String seq) {
+		FogSequence = seq;
+	}
+
+	private String FogRange = "";
+
+	public String getFogRange() {
+		return FogRange;
+	}
+
+	public void setFogRange(String rng) {
+		FogRange = validDecimal(rng);
 	}
 
@@ -591,6 +623,6 @@
 	}
 
-	public void setFogPeriod(String period) {
-		FogPeriod = period;
+	public void setFogPeriod(String per) {
+		FogPeriod = validDecimal(per);
 	}
 
@@ -1152,5 +1184,5 @@
 		}
 
-		dlg.panelMain.syncButtons();
+		dlg.panelMain.syncPanel();
 
 		paintlock = false;
@@ -1168,6 +1200,8 @@
 		dlg.panelMain.radarIcon.setIcon(null);
 		dlg.panelMain.fogIcon.setIcon(null);
+		dlg.panelMain.colLabel.setText("");
 
 		String colStr;
+		String lblStr;
 		String imgStr = "/images/";
 		if (getShape() != Shp.UNKNOWN) {
@@ -1217,32 +1251,58 @@
 			}
 			colStr = imgStr;
+			lblStr = "";
 			for (Col col : bodyColour) {
 				switch (col) {
 				case WHITE:
 					colStr += "_White";
+					lblStr += "W";
 					break;
 				case RED:
 					colStr += "_Red";
+					lblStr += "R";
 					break;
 				case ORANGE:
 					colStr += "_Orange";
+					lblStr += "Or";
 					break;
 				case AMBER:
 					colStr += "_Amber";
+					lblStr += "Am";
 					break;
 				case YELLOW:
 					colStr += "_Yellow";
+					lblStr += "Y";
 					break;
 				case GREEN:
 					colStr += "_Green";
+					lblStr += "G";
 					break;
 				case BLUE:
 					colStr += "_Blue";
+					lblStr += "Bu";
 					break;
 				case VIOLET:
 					colStr += "_Violet";
+					lblStr += "Vi";
 					break;
 				case BLACK:
 					colStr += "_Black";
+					lblStr += "B";
+					break;
+				case GREY:
+					colStr += "_Grey";
+					lblStr += "Gr";
+					break;
+				case BROWN:
+					colStr += "_Brown";
+					lblStr += "Br";
+					break;
+				case MAGENTA:
+					colStr += "_Magenta";
+					lblStr += "Mg";
+					break;
+				case PINK:
+					colStr += "_Pink";
+					lblStr += "Pk";
 					break;
 				}
@@ -1262,7 +1322,7 @@
 					if (getClass().getResource(imgStr) == null) {
 						System.out.println("Missing image: " + imgStr);
-						return;
 					} else {
 						dlg.panelMain.shapeIcon.setIcon(new ImageIcon(getClass().getResource(imgStr)));
+						dlg.panelMain.colLabel.setText(lblStr);
 					}
 				} else {
@@ -1300,5 +1360,4 @@
 				if (getClass().getResource(imgStr) == null) {
 					System.out.println("Missing image: " + imgStr);
-					return;
 				} else {
 					dlg.panelMain.shapeIcon.setIcon(new ImageIcon(getClass().getResource(imgStr)));
