Index: applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java	(revision 23152)
+++ applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java	(revision 23155)
@@ -426,4 +426,9 @@
 			return;
 
+		} else if (type.equals("landmark") || type.equals("light_vessel") //$NON-NLS-1$
+				|| type.equals("light_major") || type.equals("light_minor")) { //$NON-NLS-1$
+			buoy = new BuoyNota(this, node);
+			return;
+
 		} else if (type.equals("light_float")) { //$NON-NLS-1$
 			if (keys.containsKey("seamark:light_float:colour")) { //$NON-NLS-1$
@@ -783,10 +788,4 @@
 							buoy = new BuoyLat(dia, n);
 							buoy.setBuoyIndex(0);
-							cbM01CatOfMark.removeAllItems();
-							cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.152")); //$NON-NLS-1$
-							cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.153")); //$NON-NLS-1$
-							cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.154")); //$NON-NLS-1$
-							cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.155")); //$NON-NLS-1$
-							cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.156")); //$NON-NLS-1$
 						}
 						break;
@@ -796,10 +795,4 @@
 							buoy = new BuoyCard(dia, n);
 							buoy.setBuoyIndex(0);
-							cbM01CatOfMark.removeAllItems();
-							cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.157")); //$NON-NLS-1$
-							cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.158")); //$NON-NLS-1$
-							cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.159")); //$NON-NLS-1$
-							cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.160")); //$NON-NLS-1$
-							cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.161")); //$NON-NLS-1$
 						}
 						break;
@@ -822,8 +815,4 @@
 						if (!(buoy instanceof BuoySpec)) {
 							buoy = new BuoySpec(dia, n);
-							cbM01TopMark.removeAllItems();
-							cbM01TopMark.addItem(Messages.getString("SmpDialogAction.212"));
-							cbM01TopMark.addItem(Messages.getString("SmpDialogAction.210")); //$NON-NLS-1$
-							cbM01TopMark.addItem(Messages.getString("SmpDialogAction.211")); //$NON-NLS-1$
 						}
 						buoy.setBuoyIndex(type);
@@ -834,10 +823,4 @@
 							buoy = new BuoyNota(dia, n);
 							buoy.setBuoyIndex(0);
-							cbM01CatOfMark.removeAllItems();
-							cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.157")); //$NON-NLS-1$
-							cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.206")); //$NON-NLS-1$
-							cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.207")); //$NON-NLS-1$
-							cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.208")); //$NON-NLS-1$
-							cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.209")); //$NON-NLS-1$
 						}
 						break;
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java	(revision 23152)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java	(revision 23155)
@@ -328,15 +328,4 @@
 	}
 
-	public void parseLights(Map<String, String> k) {
-		Iterator it = k.entrySet().iterator();
-		while (it.hasNext()) {
-			String key = (String) ((Map.Entry) it.next()).getKey();
-			if (key.contains("seamark:light:")) {
-				String value = ((String) ((Map.Entry) it.next()).getValue()).trim();
-
-			}
-		}
-	}
-
 	private Node Node = null;
 
@@ -379,4 +368,48 @@
 	public boolean isValid() {
 		return false;
+	}
+
+	public void parseLights(Map<String, String> k) {
+		setFired(false);
+		setSectored(false);
+		Iterator it = k.entrySet().iterator();
+		while (it.hasNext()) {
+			Map.Entry entry = (Map.Entry)it.next();
+			String key = (String) entry.getKey();
+			String value = ((String) entry.getValue()).trim();
+			if (key.contains("seamark:light:")) {
+				setFired(true);
+				int index = 0;
+				key = key.substring(14);
+				if (key.matches("^\\d:.*")) {
+					index = key.charAt(0) - '0';
+					key = key.substring(2);
+				} else if (key.matches("^\\d$")) {
+					index = key.charAt(0) - '0';
+					key = "";
+				} else {
+					index = 0;
+				}
+				if (index != 0) setSectored(true);
+				if (key.equals("colour")) {
+					if (value.equals("red"))
+						LightColour[index] = "R";
+					else if (value.equals("green"))
+						LightColour[index] = "G";
+					else if (value.equals("white"))
+						LightColour[index] = "W";
+				} else if (key.equals("character")) {
+					LightChar[index] = value;
+				} else if (key.equals("group")) {
+					LightGroup[index] = value;
+				} else if (key.equals("period")) {
+					LightPeriod[index] = value;
+				} else if (key.equals("height")) {
+					Height[index] = value;
+				} else if (key.equals("range")) {
+					Range[index] = value;
+				}
+			}
+		}
 	}
 
@@ -659,41 +692,55 @@
 					if (colour.equals("R")) {
 						Main.main.undoRedo.add(new ChangePropertyCommand(Node,
-								"seamark:light:colour:" + i, "red"));
-						if ((Bearing1[i] != null) && (Bearing2[i] != null) && (Radius[i] != null))
-								Main.main.undoRedo.add(new ChangePropertyCommand(Node,
-										"seamark:light:" + i, "red:" + Bearing1[i] + ":" + Bearing2[i] + ":" + Radius[i]));
+								"seamark:light:" + i + ":colour", "red"));
+						if ((Bearing1[i] != null) && (Bearing2[i] != null)
+								&& (Radius[i] != null))
+							Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+									"seamark:light:" + i, "red:" + Bearing1[i] + ":"
+											+ Bearing2[i] + ":" + Radius[i]));
 					} else if (colour.equals("G")) {
 						Main.main.undoRedo.add(new ChangePropertyCommand(Node,
-								"seamark:light:colour:" + i, "green"));
-						if ((Bearing1[i] != null) && (Bearing2[i] != null) && (Radius[i] != null))
+								"seamark:light:" + i + ":colour", "green"));
+						if ((Bearing1[i] != null) && (Bearing2[i] != null)
+								&& (Radius[i] != null))
 							Main.main.undoRedo.add(new ChangePropertyCommand(Node,
-									"seamark:light:" + i, "green:" + Bearing1[i] + ":" + Bearing2[i] + ":" + Radius[i]));
+									"seamark:light:" + i, "green:" + Bearing1[i] + ":"
+											+ Bearing2[i] + ":" + Radius[i]));
 					} else if (colour.equals("W")) {
 						Main.main.undoRedo.add(new ChangePropertyCommand(Node,
-								"seamark:light:colour:" + i, "white"));
-						if ((Bearing1[i] != null) && (Bearing2[i] != null) && (Radius[i] != null))
+								"seamark:light:" + i + ":colour", "white"));
+						if ((Bearing1[i] != null) && (Bearing2[i] != null)
+								&& (Radius[i] != null))
 							Main.main.undoRedo.add(new ChangePropertyCommand(Node,
-									"seamark:light:" + i, "white:" + Bearing1[i] + ":" + Bearing2[i] + ":" + Radius[i]));
+									"seamark:light:" + i, "white:" + Bearing1[i] + ":"
+											+ Bearing2[i] + ":" + Radius[i]));
 					}
 
 				if (LightPeriod[i] != null)
 					Main.main.undoRedo.add(new ChangePropertyCommand(Node,
-							"seamark:light:period:" + i, LightPeriod[i]));
+							"seamark:light:" + i + ":period", LightPeriod[i]));
 
 				if (LightChar[i] != null)
 					Main.main.undoRedo.add(new ChangePropertyCommand(Node,
-							"seamark:light:character:" + i, LightChar[i]));
+							"seamark:light:" + i + ":character", LightChar[i]));
 
 				if (LightGroup[i] != null)
 					Main.main.undoRedo.add(new ChangePropertyCommand(Node,
-							"seamark:light:group:" + i, LightGroup[i]));
+							"seamark:light:" + i + ":group", LightGroup[i]));
 
 				if (Height[i] != null)
 					Main.main.undoRedo.add(new ChangePropertyCommand(Node,
-							"seamark:light:height:" + i, Height[i]));
+							"seamark:light:" + i + ":height", Height[i]));
 
 				if (Range[i] != null)
 					Main.main.undoRedo.add(new ChangePropertyCommand(Node,
-							"seamark:light:range:" + i, Range[i]));
+							"seamark:light:" + i + ":range", Range[i]));
+
+				if (Bearing1[i] != null)
+					Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+							"seamark:light:" + i + ":sector_start", Bearing1[i]));
+
+				if (Bearing2[i] != null)
+					Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+							"seamark:light:" + i + ":sector_end", Bearing2[i]));
 			}
 		}
@@ -817,7 +864,9 @@
 		dlg.cbM01CatOfMark.setVisible(false);
 		dlg.lM01CatOfMark.setVisible(false);
+		setBuoyIndex(0);
 		dlg.cbM01StyleOfMark.removeAllItems();
 		dlg.cbM01StyleOfMark.setVisible(false);
 		dlg.lM01StyleOfMark.setVisible(false);
+		setStyleIndex(0);
 		dlg.tfM01Name.setText("");
 		dlg.tfM01Name.setEnabled(false);
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyCard.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyCard.java	(revision 23152)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyCard.java	(revision 23155)
@@ -27,4 +27,11 @@
 
 		resetMask();
+		dlg.cbM01CatOfMark.removeAllItems();
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.157")); //$NON-NLS-1$
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.158")); //$NON-NLS-1$
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.159")); //$NON-NLS-1$
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.160")); //$NON-NLS-1$
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.161")); //$NON-NLS-1$
+
 		dlg.cbM01CatOfMark.setEnabled(true);
 		dlg.cbM01CatOfMark.setVisible(true);
@@ -40,4 +47,6 @@
 		dlg.cbM01StyleOfMark.setVisible(true);
 		dlg.lM01StyleOfMark.setVisible(true);
+
+		dlg.cbM01TypeOfMark.setSelectedIndex(CARDINAL);
 
 		setRegion(Main.pref.get("tomsplugin.IALA").equals("B")); //$NON-NLS-1$ //$NON-NLS-2$
@@ -98,4 +107,6 @@
 		}
 
+		dlg.cbM01CatOfMark.setSelectedIndex(getBuoyIndex());
+
 		if (keys.containsKey("seamark:buoy_cardinal:shape")) { //$NON-NLS-1$
 			str = keys.get("seamark:buoy_cardinal:shape"); //$NON-NLS-1$
@@ -120,37 +131,10 @@
 		}
 
+		if (getStyleIndex() >= dlg.cbM01StyleOfMark.getItemCount())
+			setStyleIndex(0);
+		dlg.cbM01StyleOfMark.setSelectedIndex(getStyleIndex());
+
+		parseLights(keys);
 		refreshLights();
-
-		if (keys.containsKey("seamark:light:colour")) { //$NON-NLS-1$
-			str = keys.get("seamark:light:colour"); //$NON-NLS-1$
-
-			if (keys.containsKey("seamark:light:character")) { //$NON-NLS-1$
-				int i1;
-				String tmp = null;
-
-				setLightGroup(keys);
-
-				String c = keys.get("seamark:light:character"); //$NON-NLS-1$
-
-				if (c.contains("+")) { //$NON-NLS-1$
-					i1 = c.indexOf("+"); //$NON-NLS-1$
-					tmp = c.substring(i1, c.length());
-					c = c.substring(0, i1);
-				}
-
-				if (getLightGroup() != "") //$NON-NLS-1$
-					if (tmp != null) {
-						c = c + tmp;
-					}
-
-				setLightChar(c);
-				setLightPeriod(keys);
-			}
-
-			if (str.equals("white")) { //$NON-NLS-1$
-				setFired(true);
-				setLightColour("W"); //$NON-NLS-1$
-			}
-		}
 	}
 
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyIsol.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyIsol.java	(revision 23152)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyIsol.java	(revision 23155)
@@ -26,4 +26,6 @@
 
 		resetMask();
+
+		dlg.cbM01TypeOfMark.setSelectedIndex(ISOLATED_DANGER);
 
 		dlg.cbM01StyleOfMark.removeAllItems();
@@ -37,6 +39,4 @@
 		dlg.lM01StyleOfMark.setVisible(true);
 
-		refreshLights();
-
 		setBuoyIndex(ISOLATED_DANGER);
 		setColour(SeaMark.BLACK_RED_BLACK);
@@ -80,4 +80,8 @@
 		}
 
+		if (getStyleIndex() >= dlg.cbM01StyleOfMark.getItemCount())
+			setStyleIndex(0);
+		dlg.cbM01StyleOfMark.setSelectedIndex(getStyleIndex());
+
 		if (keys.containsKey("seamark:topmark:shape") //$NON-NLS-1$
 				|| keys.containsKey("seamark:topmark:colour")) { //$NON-NLS-1$
@@ -85,19 +89,6 @@
 		}
 
-		if (keys.containsKey("seamark:light:colour")) { //$NON-NLS-1$
-			str = keys.get("seamark:light:colour"); //$NON-NLS-1$
-
-			if (keys.containsKey("seamark:light:character")) { //$NON-NLS-1$
-				setLightGroup(keys);
-				String c = keys.get("seamark:light:character"); //$NON-NLS-1$
-				setLightChar(c);
-				setLightPeriod(keys);
-			}
-
-			if (str.equals("white")) { //$NON-NLS-1$
-				setFired(true);
-				setLightColour("W"); //$NON-NLS-1$
-			}
-		}
+		parseLights(keys);
+		refreshLights();
 	}
 	
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyLat.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyLat.java	(revision 23152)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyLat.java	(revision 23155)
@@ -25,4 +25,11 @@
 
 		resetMask();
+
+		dlg.cbM01CatOfMark.removeAllItems();
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.152")); //$NON-NLS-1$
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.153")); //$NON-NLS-1$
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.154")); //$NON-NLS-1$
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.155")); //$NON-NLS-1$
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.156")); //$NON-NLS-1$
 
 		dlg.rbM01RegionA.setEnabled(true);
@@ -41,5 +48,5 @@
 		dlg.cbM01StyleOfMark.setEnabled(true);
 
-		refreshLights();
+		dlg.cbM01TypeOfMark.setSelectedIndex(LATERAL);
 
 		if (keys.containsKey("name")) //$NON-NLS-1$
@@ -206,4 +213,6 @@
 			}
 		}
+
+		dlg.cbM01CatOfMark.setSelectedIndex(getBuoyIndex());
 
 		if (keys.containsKey("seamark:buoy_lateral:shape")) { //$NON-NLS-1$
@@ -264,16 +273,6 @@
 
 		refreshStyles();
-
-		if (keys.containsKey("seamark:light:colour")) { //$NON-NLS-1$
-			setLightColour(keys.get("seamark:light:colour")); //$NON-NLS-1$
-			setFired(true);
-		}
-
-		if (keys.containsKey("seamark:light:character")) { //$NON-NLS-1$
-			setLightGroup(keys);
-			setLightChar(keys.get("seamark:light:character")); //$NON-NLS-1$
-			setLightPeriod(keys);
-			setFired(true);
-		}
+		parseLights(keys);
+		refreshLights();
 		setLightColour();
 	}
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyNota.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyNota.java	(revision 23152)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyNota.java	(revision 23155)
@@ -27,11 +27,50 @@
 		resetMask();
 
+		dlg.cbM01TypeOfMark.setSelectedIndex(LIGHT);
+
 		dlg.cbM01CatOfMark.setEnabled(true);
 		dlg.cbM01CatOfMark.setVisible(true);
 		dlg.lM01CatOfMark.setVisible(true);
 
+		dlg.cbM01CatOfMark.removeAllItems();
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.157")); //$NON-NLS-1$
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.206")); //$NON-NLS-1$
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.207")); //$NON-NLS-1$
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.208")); //$NON-NLS-1$
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.209")); //$NON-NLS-1$
+
+		setRegion(Main.pref.get("tomsplugin.IALA").equals("B")); //$NON-NLS-1$ //$NON-NLS-2$
+
+		if (keys.containsKey("name")) //$NON-NLS-1$
+			setName(keys.get("name")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:name")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:landmark:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:landmark:name")); //$NON-NLS-1$
+		else if (keys.containsKey("seamark:light_major:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:light_major:name")); //$NON-NLS-1$
+		else if (keys.containsKey("seamark:light_minor:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:light_minor:name")); //$NON-NLS-1$
+		else if (keys.containsKey("seamark:light_vessel:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:light_vessel:name")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:type")) { //$NON-NLS-1$
+			String type = keys.get("seamark:type"); //$NON-NLS-1$
+			if (type.equals("landmark"))
+				setBuoyIndex(LIGHT_HOUSE);
+			else if (type.equals("light_major"))
+				setBuoyIndex(LIGHT_MAJOR);
+			else if (type.equals("light_minor"))
+				setBuoyIndex(LIGHT_MINOR);
+			else if (type.equals("light_vessel"))
+				setBuoyIndex(LIGHT_VESSEL);
+		}
+
+		dlg.cbM01CatOfMark.setSelectedIndex(getBuoyIndex());
+
+		parseLights(keys);
 		refreshLights();
-		setLightColour();
-
 		setTopMark(false);
 		setFired(true);
@@ -98,11 +137,14 @@
 		switch (getBuoyIndex()) {
 		case LIGHT_HOUSE:
-			super.saveSign("lighthouse"); //$NON-NLS-1$
+			super.saveSign("landmark"); //$NON-NLS-1$
 			break;
 		case LIGHT_MAJOR:
-			super.saveSign("major_light"); //$NON-NLS-1$
+			super.saveSign("light_major"); //$NON-NLS-1$
 			break;
 		case LIGHT_MINOR:
-			super.saveSign("minor_light"); //$NON-NLS-1$
+			super.saveSign("light_minor"); //$NON-NLS-1$
+			break;
+		case LIGHT_VESSEL:
+			super.saveSign("light_vessel"); //$NON-NLS-1$
 			break;
 		default:
@@ -115,36 +157,3 @@
 	}
 
-	public boolean parseTopMark(Node node) {
-		return false;
-	}
-
-	public boolean parseLight(Node node) {
-		String str;
-		boolean ret = true;
-		Map<String, String> keys;
-
-		setFired(true);
-
-		keys = node.getKeys();
-
-		if (keys.containsKey("seamark:light:colour")) { //$NON-NLS-1$
-			str = keys.get("seamark:light:colour"); //$NON-NLS-1$
-
-			if (keys.containsKey("seamark:light:character")) { //$NON-NLS-1$
-				setLightGroup(keys);
-
-				String c = keys.get("seamark:light:character"); //$NON-NLS-1$
-				if (getLightGroup() != "") //$NON-NLS-1$
-					c = c + "(" + getLightGroup() + ")"; //$NON-NLS-1$ //$NON-NLS-2$
-				setLightChar(c);
-				setLightPeriod(keys);
-			}
-
-			setLightColour(str);
-
-		}
-
-		return ret;
-	}
-
 }
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java	(revision 23152)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java	(revision 23155)
@@ -26,4 +26,6 @@
 
 		resetMask();
+
+		dlg.cbM01TypeOfMark.setSelectedIndex(SAFE_WATER);
 
 		dlg.cbM01StyleOfMark.removeAllItems();
@@ -37,6 +39,4 @@
 		dlg.lM01StyleOfMark.setVisible(true);
 
-		refreshLights();
-		
 		setBuoyIndex(SAFE_WATER);
 		setColour(SeaMark.RED_WHITE);
@@ -74,26 +74,15 @@
 		}
 
-		if (keys.containsKey("seamark:light:colour")) { //$NON-NLS-1$
-			str = keys.get("seamark:light:colour"); //$NON-NLS-1$
-
-			if (keys.containsKey("seamark:light:character")) { //$NON-NLS-1$
-				setLightGroup(keys);
-				String c = keys.get("seamark:light:character"); //$NON-NLS-1$
-				if (getLightGroup() != "") //$NON-NLS-1$
-					c = c + "(" + getLightGroup() + ")"; //$NON-NLS-1$ //$NON-NLS-2$
-				setLightChar(c);
-				setLightPeriod(keys);
-			}
-
-			if (str.equals("white")) { //$NON-NLS-1$
-				setFired(true);
-				setLightColour("W"); //$NON-NLS-1$
-			}
-		}
-
+		if (getStyleIndex() >= dlg.cbM01StyleOfMark.getItemCount())
+			setStyleIndex(0);
+		dlg.cbM01StyleOfMark.setSelectedIndex(getStyleIndex());
+		
 		if (keys.containsKey("seamark:topmark:shape") //$NON-NLS-1$
 				|| keys.containsKey("seamark:topmark:colour")) { //$NON-NLS-1$
 			setTopMark(true);
 		}
+
+		parseLights(keys);
+		refreshLights();
 	}
 
@@ -104,5 +93,5 @@
 		dlg.cbM01Kennung.addItem("Oc"); //$NON-NLS-1$
 		dlg.cbM01Kennung.addItem("LFl"); //$NON-NLS-1$
-		dlg.cbM01Kennung.addItem("Mo()"); //$NON-NLS-1$
+		dlg.cbM01Kennung.addItem("Mo"); //$NON-NLS-1$
 		dlg.cbM01Kennung.setSelectedIndex(0);
 	}
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java	(revision 23152)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java	(revision 23155)
@@ -26,4 +26,6 @@
 
 		resetMask();
+
+		dlg.cbM01TypeOfMark.setSelectedIndex(SPECIAL_PURPOSE);
 
 		dlg.cbM01StyleOfMark.removeAllItems();
@@ -39,5 +41,8 @@
 		dlg.lM01StyleOfMark.setVisible(true);
 
-		refreshLights();
+		dlg.cbM01TopMark.removeAllItems();
+		dlg.cbM01TopMark.addItem(Messages.getString("SmpDialogAction.212"));
+		dlg.cbM01TopMark.addItem(Messages.getString("SmpDialogAction.210")); //$NON-NLS-1$
+		dlg.cbM01TopMark.addItem(Messages.getString("SmpDialogAction.211")); //$NON-NLS-1$
 
 		dlg.cM01TopMark.setEnabled(true);
@@ -87,4 +92,8 @@
 			setStyleIndex(SPEC_FLOAT);
 
+		if (getStyleIndex() >= dlg.cbM01StyleOfMark.getItemCount())
+			setStyleIndex(0);
+		dlg.cbM01StyleOfMark.setSelectedIndex(getStyleIndex());
+
 		keys = node.getKeys();
 		if (keys.containsKey("seamark:topmark:shape")) { //$NON-NLS-1$
@@ -96,23 +105,6 @@
 		}
 
-		if (keys.containsKey("seamark:light:colour")) { //$NON-NLS-1$
-			str = keys.get("seamark:light:colour"); //$NON-NLS-1$
-
-			if (keys.containsKey("seamark:light:character")) { //$NON-NLS-1$
-				setLightGroup(keys);
-
-				String c = keys.get("seamark:light:character"); //$NON-NLS-1$
-				if (getLightGroup() != "") //$NON-NLS-1$
-					c = c + "(" + getLightGroup() + ")"; //$NON-NLS-1$ //$NON-NLS-2$
-
-				setLightChar(c);
-				setLightPeriod(keys);
-			}
-
-			if (str.equals("white")) { //$NON-NLS-1$
-				setFired(true);
-				setLightColour("W"); //$NON-NLS-1$
-			}
-		}
+		parseLights(keys);
+		refreshLights();
 	}
 
