Index: applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java	(revision 22572)
+++ applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java	(revision 22623)
@@ -117,6 +117,4 @@
 	private JLabel lM01Range = null;
 	private JLabel lM01Name = null;
-	public JLabel lM01Icon03 = null;
-	public JLabel lM01Icon02 = null;
 	private JLabel lM01Props02 = null;
 	private JLabel lM01StyleOfMark = null;
@@ -177,5 +175,5 @@
 
 	public SmpDialogAction() {
-		super(tr("SeaMap Symbol Entry"), "Smp", tr("Seamark Editor"), Shortcut
+		super(tr("Edit SeaMap Symbols"), "Smp", tr("Seamark Editor"), Shortcut
 				.registerShortcut("tools:Semarks",
 						tr("Tool: {0}", tr("Seamark Editor")), KeyEvent.VK_S,
@@ -826,14 +824,4 @@
 			lM01Name.setText("Name:");
 
-			lM01Icon03 = new JLabel();
-			lM01Icon03.setBounds(new Rectangle(205, 135, 70, 60));
-			lM01Icon03.setIcon(null);
-			lM01Icon03.setText("");
-
-			lM01Icon02 = new JLabel();
-			lM01Icon02.setBounds(new Rectangle(250, 0, 85, 140));
-			lM01Icon02.setIcon(null);
-			lM01Icon02.setText("");
-
 			lM01Props02 = new JLabel();
 			lM01Props02.setBounds(new Rectangle(5, 170, 90, 16));
@@ -861,5 +849,5 @@
 
 			lM01Icon01 = new JLabel();
-			lM01Icon01.setBounds(new Rectangle(250, 0, 85, 140));
+			lM01Icon01.setBounds(new Rectangle(225, 0, 160, 200));
 			lM01Icon01.setIcon(null);
 			lM01Icon01.setText("");
@@ -876,6 +864,4 @@
 			pM01SeaMap.add(lM01Kennung, null);
 			pM01SeaMap.add(lM01Name, null);
-			pM01SeaMap.add(lM01Icon03, null);
-			pM01SeaMap.add(lM01Icon02, null);
 			pM01SeaMap.add(lM01Props02, null);
 			pM01SeaMap.add(lM01StyleOfMark, null);
@@ -1200,5 +1186,5 @@
 		if (tfM01Name == null) {
 			tfM01Name = new JTextField();
-			tfM01Name.setBounds(new Rectangle(50, 120, 190, 20));
+			tfM01Name.setBounds(new Rectangle(50, 120, 175, 20));
 			tfM01Name.addFocusListener(new java.awt.event.FocusAdapter() {
 				public void focusLost(java.awt.event.FocusEvent e) {
@@ -1397,5 +1383,5 @@
 		if (tfM01FireMark == null) {
 			tfM01FireMark = new JTextField();
-			tfM01FireMark.setBounds(new Rectangle(240, 180, 100, 20));
+			tfM01FireMark.setBounds(new Rectangle(240, 160, 100, 20));
 			tfM01FireMark.setEditable(false);
 		}
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/SeaMark.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/SeaMark.java	(revision 22572)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/SeaMark.java	(revision 22623)
@@ -84,4 +84,6 @@
 	public final static int ISOL_SPAR = 2;
 	public final static int ISOL_BEACON = 3;
+	public final static int ISOL_TOWER = 4;
+	public final static int ISOL_FLOAT = 5;
 	public final static int SPEC_PILLAR = 1;
 	public final static int SPEC_SPAR = 2;
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java	(revision 22572)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java	(revision 22623)
@@ -71,5 +71,5 @@
 
 	}
-	
+
 	private String LightChar = "";
 
@@ -190,5 +190,4 @@
 
 	public boolean parseShape(Node node, String str) {
-		String lstr;
 		boolean ret = true;
 		Map<String, String> keys;
@@ -279,6 +278,4 @@
 
 		dlg.lM01Icon01.setIcon(null);
-		dlg.lM01Icon02.setIcon(null);
-		dlg.lM01Icon03.setIcon(null);
 	}
 
@@ -300,14 +297,17 @@
 
 		if (dlg.cM01Fired.isSelected()) {
-			if (LightColour == "R")
+			if (colour == "red") {
 				Main.main.undoRedo.add(new ChangePropertyCommand(Node,
 						"seamark:light:colour", "red"));
-			else if (LightColour == "G")
+				setLightColour("R");
+			} else if (colour == "green") {
 				Main.main.undoRedo.add(new ChangePropertyCommand(Node,
 						"seamark:light:colour", "green"));
-			else if (LightColour == "W")
+				setLightColour("G");
+			} else if (colour == "white") {
 				Main.main.undoRedo.add(new ChangePropertyCommand(Node,
 						"seamark:light:colour", "white"));
-
+				setLightColour("W");
+			}
 			if (LightPeriod != "" && LightPeriod != " " && LightChar != "Q")
 				Main.main.undoRedo.add(new ChangePropertyCommand(Node,
@@ -335,23 +335,4 @@
 	}
 
-	protected void Checker(String pic1, String pic2) {
-		// Abfrage Topzeichen
-		if (pic1 != null) {
-			if (dlg.cM01TopMark.isSelected())
-				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource(pic1)));
-			else
-				dlg.lM01Icon02.setIcon(null);
-		}
-
-		// Abfrage befeuert
-		if (pic2 != null) {
-			if (dlg.cM01Fired.isSelected())
-				dlg.lM01Icon03.setIcon(new ImageIcon(getClass().getResource(pic2)));
-			else
-				dlg.lM01Icon03.setIcon(null);
-		}
-
-	}
-
 	public boolean parseShape(Node node) {
 		return 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 22572)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyCard.java	(revision 22623)
@@ -104,191 +104,80 @@
 		dlg.cM01Fired.setEnabled(true);
 
+		String image = "/images/Cardinal";
+
+		switch (getStyleIndex()) {
+		case SeaMark.CARD_PILLAR:
+			image += "_Pillar";
+			break;
+
+		case SeaMark.CARD_SPAR:
+			image += "_Spar";
+			break;
+
+		case SeaMark.CARD_BEACON:
+			image += "_Beacon";
+			break;
+
+		case SeaMark.CARD_TOWER:
+			image += "_Tower";
+			break;
+
+		case SeaMark.CARD_FLOAT:
+			image += "_Float";
+			break;
+
+		default:
+			return;
+		}
+
 		switch (getBuoyIndex()) {
-		case SeaMark.CARD_NORTH:
-			switch (getStyleIndex()) {
-			case CARD_PILLAR:
-				dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-						"/images/Cardinal_Pillar_North.png")));
-				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource(
-						"/images/North_Top_Buoy.png")));
-				break;
-			case CARD_SPAR:
-				dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-						"/images/Cardinal_Spar_North.png")));
-				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource(
-						"/images/North_Top_Buoy.png")));
-				break;
-			case CARD_BEACON:
-				if (isFired())
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Cardinal_Beacon_Lit_North.png")));
-				else
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Cardinal_Beacon_North.png")));
-				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource(
-						"/images/North_Top_Post.png")));
-				break;
-			case CARD_TOWER:
-				dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-						"/images/Cardinal_Tower_North.png")));
-				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource(
-						"/images/North_Top_Post.png")));
-				break;
-			case CARD_FLOAT:
-				dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-						"/images/Cardinal_Float_North.png")));
-				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource(
-						"/images/North_Top_Post.png")));
-				break;
-			default:
-			}
-			break;
-
-		case SeaMark.CARD_EAST:
-			switch (getStyleIndex()) {
-			case CARD_PILLAR:
-				dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-						"/images/Cardinal_Pillar_East.png")));
-				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource(
-						"/images/East_Top_Buoy.png")));
-				break;
-			case CARD_SPAR:
-				dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-						"/images/Cardinal_Spar_East.png")));
-				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource(
-						"/images/East_Top_Buoy.png")));
-				break;
-			case CARD_BEACON:
-				if (isFired())
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Cardinal_Beacon_Lit_East.png")));
-				else
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Cardinal_Beacon_East.png")));
-				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource(
-						"/images/East_Top_Post.png")));
-				break;
-			case CARD_TOWER:
-				dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-						"/images/Cardinal_Tower_East.png")));
-				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource(
-						"/images/East_Top_Post.png")));
-				break;
-			case CARD_FLOAT:
-				dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-						"/images/Cardinal_Float_East.png")));
-				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource(
-						"/images/East_Top_Post.png")));
-				break;
-			default:
-			}
-			break;
-
-		case SeaMark.CARD_SOUTH:
-			switch (getStyleIndex()) {
-			case CARD_PILLAR:
-				dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-						"/images/Cardinal_Pillar_South.png")));
-				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource(
-						"/images/South_Top_Buoy.png")));
-				break;
-			case CARD_SPAR:
-				dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-						"/images/Cardinal_Spar_South.png")));
-				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource(
-						"/images/South_Top_Buoy.png")));
-				break;
-			case CARD_BEACON:
-				if (isFired())
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Cardinal_Beacon_Lit_South.png")));
-				else
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Cardinal_Beacon_South.png")));
-				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource(
-						"/images/South_Top_Post.png")));
-				break;
-			case CARD_TOWER:
-				dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-						"/images/Cardinal_Tower_South.png")));
-				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource(
-						"/images/South_Top_Post.png")));
-				break;
-			case CARD_FLOAT:
-				dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-						"/images/Cardinal_Float_South.png")));
-				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource(
-						"/images/South_Top_Post.png")));
-				break;
-			default:
-			}
-			break;
-
-		case SeaMark.CARD_WEST:
-			switch (getStyleIndex()) {
-			case CARD_PILLAR:
-				dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-						"/images/Cardinal_Pillar_West.png")));
-				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource(
-						"/images/West_Top_Buoy.png")));
-				break;
-			case CARD_SPAR:
-				dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-						"/images/Cardinal_Spar_West.png")));
-				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource(
-						"/images/West_Top_Buoy.png")));
-				break;
-			case CARD_BEACON:
-				if (isFired())
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Cardinal_Beacon_Lit_West.png")));
-				else
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Cardinal_Beacon_Lit_West.png")));
-				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource(
-						"/images/West_Top_Post.png")));
-				break;
-			case CARD_TOWER:
-				dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-						"/images/Cardinal_Tower_West.png")));
-				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource(
-						"/images/West_Top_Post.png")));
-				break;
-			case CARD_FLOAT:
-				dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-						"/images/Cardinal_Float_West.png")));
-				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource(
-						"/images/West_Top_Post.png")));
-				break;
-			default:
-			}
-			break;
-
+		case CARD_NORTH:
+			image += "_North";
+			break;
+		case CARD_EAST:
+			image += "_East";
+			break;
+		case CARD_SOUTH:
+			image += "_South";
+			break;
+		case CARD_WEST:
+			image += "_West";
+			break;
 		default:
-		}
-
-		if (getLightChar() != "") {
-			String tmp = null;
-			String c;
-			int i1;
-
-			c = getLightChar();
-			if (c.contains("+")) {
-				i1 = c.indexOf("+");
-				tmp = c.substring(i1, c.length());
-				c = c.substring(0, i1);
-			}
-
-			if (getLightGroup() != "")
-				c = c + "(" + getLightGroup() + ")";
-			if (tmp != null)
-				c = c + tmp;
-
-			dlg.cbM01Kennung.setSelectedItem(c);
-			if (dlg.cbM01Kennung.getSelectedItem() == "Not set")
-				c = "";
-		}
-
-		Checker(null, "/images/Light_White.png");
+			return;
+		}
+
+		if (image != "") {
+			if (isFired()) {
+				image += "_Lit";
+
+				if (getLightChar() != "") {
+					String tmp = null;
+					String c;
+					int i1;
+
+					c = getLightChar();
+					if (c.contains("+")) {
+						i1 = c.indexOf("+");
+						tmp = c.substring(i1, c.length());
+						c = c.substring(0, i1);
+					}
+
+					if (getLightGroup() != "")
+						c = c + "(" + getLightGroup() + ")";
+					if (tmp != null)
+						c = c + tmp;
+
+					dlg.cbM01Kennung.setSelectedItem(c);
+					if (dlg.cbM01Kennung.getSelectedItem() == "Not set")
+						c = "";
+				}
+			}
+
+			image += ".png";
+
+			dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(image)));
+		} else
+			dlg.lM01Icon01.setIcon(null);
 	}
 
@@ -319,7 +208,7 @@
 
 				if (getLightGroup() != "")
-				if (tmp != null) {
-					c = c + tmp;
-				}
+					if (tmp != null) {
+						c = c + tmp;
+					}
 
 				setLightChar(c);
@@ -366,16 +255,13 @@
 			else
 				ret = false;
-		}
-		else if (keys.containsKey("seamark:beacon_cardinal:shape")) {
-			str = keys.get("seamark:beacon_cardinal:shape");
-
-			if (str.compareTo("stake") == 0)
+		} else if (keys.containsKey("seamark:beacon_cardinal")) {
+			if (keys.containsKey("seamark:beacon_cardinal:shape")) {
+				str = keys.get("seamark:beacon_cardinal:shape");
+
+				if (str.compareTo("tower") == 0)
+					setStyleIndex(CARD_TOWER);
+			} else
 				setStyleIndex(CARD_BEACON);
-			else if (str.compareTo("tower") == 0)
-				setStyleIndex(CARD_TOWER);
-			else
-				ret = false;
-		}
-
+		}
 		return ret;
 	}
@@ -391,4 +277,6 @@
 		}
 
+		String shape = "";
+
 		switch (getStyleIndex()) {
 		case CARD_PILLAR:
@@ -404,6 +292,4 @@
 		case CARD_BEACON:
 			super.saveSign("beacon_cardinal");
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
-					"seamark:beacon_cardinal:shape", "stake"));
 			break;
 		case CARD_TOWER:
@@ -413,17 +299,12 @@
 			break;
 		case CARD_FLOAT:
-			super.saveSign("buoy_cardinal");
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
-					"seamark:buoy_cardinal:shape", "float"));
+			super.saveSign("light_float");
 			break;
 		default:
 		}
-		Main.main.undoRedo.add(new ChangePropertyCommand(node,
-				"seamark:buoy_cardinal:colour_pattern", "horizontal stripes"));
 
 		switch (getStyleIndex()) {
 		case CARD_PILLAR:
 		case CARD_SPAR:
-		case CARD_FLOAT:
 			switch (getBuoyIndex()) {
 			case SeaMark.CARD_NORTH:
@@ -432,4 +313,5 @@
 				Main.main.undoRedo.add(new ChangePropertyCommand(node,
 						"seamark:buoy_cardinal:colour", "black;yellow"));
+				shape = "2 cones up";
 				break;
 
@@ -439,4 +321,5 @@
 				Main.main.undoRedo.add(new ChangePropertyCommand(node,
 						"seamark:buoy_cardinal:colour", "black;yellow;black"));
+				shape = "2 cones base together";
 				break;
 
@@ -446,4 +329,5 @@
 				Main.main.undoRedo.add(new ChangePropertyCommand(node,
 						"seamark:buoy_cardinal:colour", "yellow;black"));
+				shape = "2 cones down";
 				break;
 
@@ -453,6 +337,10 @@
 				Main.main.undoRedo.add(new ChangePropertyCommand(node,
 						"seamark:buoy_cardinal:colour", "yellow;black;yellow"));
-				break;
-			}
+				shape = "2 cones point together";
+				break;
+			}
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_cardinal:colour_pattern", "horizontal stripes"));
+			break;
 		case CARD_BEACON:
 		case CARD_TOWER:
@@ -463,4 +351,5 @@
 				Main.main.undoRedo.add(new ChangePropertyCommand(node,
 						"seamark:beacon_cardinal:colour", "black;yellow"));
+				shape = "2 cones up";
 				break;
 
@@ -470,4 +359,5 @@
 				Main.main.undoRedo.add(new ChangePropertyCommand(node,
 						"seamark:beacon_cardinal:colour", "black;yellow;black"));
+				shape = "2 cones base together";
 				break;
 
@@ -477,4 +367,5 @@
 				Main.main.undoRedo.add(new ChangePropertyCommand(node,
 						"seamark:beacon_cardinal:colour", "yellow;black"));
+				shape = "2 cones down";
 				break;
 
@@ -484,8 +375,41 @@
 				Main.main.undoRedo.add(new ChangePropertyCommand(node,
 						"seamark:beacon_cardinal:colour", "yellow;black;yellow"));
-				break;
-			}
-		}
-
+				shape = "2 cones point together";
+				break;
+			}
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:beacon_cardinal:colour_pattern", "horizontal stripes"));
+			break;
+		case CARD_FLOAT:
+			switch (getBuoyIndex()) {
+			case SeaMark.CARD_NORTH:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:light_float:colour", "black;yellow"));
+				shape = "2 cones up";
+				break;
+
+			case SeaMark.CARD_EAST:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:light_float:colour", "black;yellow;black"));
+				shape = "2 cones base together";
+				break;
+
+			case SeaMark.CARD_SOUTH:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:light_float:colour", "yellow;black"));
+				shape = "2 cones down";
+				break;
+
+			case SeaMark.CARD_WEST:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:light_float:colour", "yellow;black;yellow"));
+				shape = "2 cones point together";
+				break;
+			}
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:light_float:colour_pattern", "horizontal stripes"));
+			break;
+		}
+		saveTopMarkData(shape, "black");
 		saveLightData("white");
 
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyIsol.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyIsol.java	(revision 22572)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyIsol.java	(revision 22623)
@@ -24,4 +24,6 @@
 		dlg.cbM01StyleOfMark.addItem("Spar Buoy");
 		dlg.cbM01StyleOfMark.addItem("Beacon");
+		dlg.cbM01StyleOfMark.addItem("Tower");
+		dlg.cbM01StyleOfMark.addItem("Float");
 
 		dlg.cbM01Kennung.removeAllItems();
@@ -55,80 +57,99 @@
 		dlg.cM01TopMark.setEnabled(false);
 
+		String image = "/images/Cardinal";
+
 		switch (getStyleIndex()) {
 		case ISOL_PILLAR:
-			dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-					"/images/Isolated_Danger_Pillar.png")));
+			image += "_Pillar_Single";
 			break;
 		case ISOL_SPAR:
-			dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-					"/images/Isolated_Danger_Spar.png")));
+			image += "_Spar_Single";
 			break;
 		case ISOL_BEACON:
-			if (isFired())
-				dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-						"/images/Isolated_Danger_Beacon_Lit.png")));
-			else
-				dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-						"/images/Isolated_Danger_Beacon.png")));
+			image += "_Beacon_Single";
+			break;
+		case ISOL_TOWER:
+			image += "_Tower_Single";
+			break;
+		case ISOL_FLOAT:
+			image += "_Float_Single";
 			break;
 		default:
 		}
 
-		if (getLightChar() != "") {
-			String c;
-
-			c = getLightChar();
-
-			dlg.cbM01Kennung.setSelectedItem(c);
-			if (dlg.cbM01Kennung.getSelectedItem() == "Not set")
-				c = "";
-		}
-
+		if (image != "/images/Cardinal") {
+			if (isFired()) {
+				image += "_Lit";
+				if (getLightChar() != "") {
+					String c;
+
+					c = getLightChar();
+
+					dlg.cbM01Kennung.setSelectedItem(c);
+					if (dlg.cbM01Kennung.getSelectedItem() == "Not set")
+						c = "";
+				}
+			}
+			image += ".png";
+			dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(image)));
+		} else
+			dlg.lM01Icon01.setIcon(null);
+	}
+
+	public void saveSign() {
+		Node node = getNode();
+
+		if (node == null) {
+			return;
+		}
+
+		switch (getStyleIndex()) {
+		case ISOL_PILLAR:
+			super.saveSign("buoy_isolated_danger");
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_isolated_danger:shape", "pillar"));
+			break;
+		case ISOL_SPAR:
+			super.saveSign("buoy_isolated_danger");
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_isolated_danger:shape", "spar"));
+			break;
+		case ISOL_BEACON:
+			super.saveSign("beacon_isolated_danger");
+			break;
+		case ISOL_TOWER:
+			super.saveSign("beacon_isolated_danger");
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:beacon_isolated_danger:shape", "tower"));
+			break;
+		case ISOL_FLOAT:
+			super.saveSign("light_float");
+			break;
+		default:
+		}
+		
 		switch (getStyleIndex()) {
 		case ISOL_PILLAR:
 		case ISOL_SPAR:
-			Checker("/images/Danger_Top_Buoy.png", "/images/Light_White.png");
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_isolated_danger:colour_pattern", "horizontal stripes"));
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_isolated_danger:colour", "black;red;black"));
 			break;
 		case ISOL_BEACON:
-			Checker("/images/Danger_Top_Post.png", "/images/Light_White.png");
-			break;
-		default:
-		}
-	}
-
-	public void saveSign() {
-		Node node = getNode();
-
-		if (node == null) {
-			return;
-		}
-
-		super.saveSign("buoy_isolated_danger");
-
-		switch (getStyleIndex()) {
-		case ISOL_PILLAR:
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
-					"seamark:buoy_isolated_danger:shape", "pillar"));
-			break;
-		case ISOL_SPAR:
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
-					"seamark:buoy_isolated_danger:shape", "spar"));
-			break;
-		case ISOL_BEACON:
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
-					"seamark:beacon_isolated_danger:shape", "stake"));
-			break;
-		default:
-		}
-		if (getStyleIndex() == ISOL_BEACON) {
-		Main.main.undoRedo.add(new ChangePropertyCommand(node,
-				"seamark:beacon_isolated_danger:colour_pattern", "horizontal stripes"));
-		Main.main.undoRedo.add(new ChangePropertyCommand(node,
-				"seamark:beacon_isolated_danger:colour", "black;red;black"));
-		} else {
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
-					"seamark:buoy_isolated_danger:colour_pattern", "horizontal stripes"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
-					"seamark:buoy_isolated_danger:colour", "black;red;black"));
+		case ISOL_TOWER:
+			Main.main.undoRedo
+					.add(new ChangePropertyCommand(node,
+							"seamark:beacon_isolated_danger:colour_pattern",
+							"horizontal stripes"));
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:beacon_isolated_danger:colour", "black;red;black"));
+			break;
+		case ISOL_FLOAT:
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:light_float:colour_pattern", "horizontal stripes"));
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:light_float:colour", "black;red;black"));
+			break;
 		}
 
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyLat.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyLat.java	(revision 22572)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyLat.java	(revision 22623)
@@ -84,4 +84,5 @@
 			dlg.cbM01StyleOfMark.addItem("Beacon");
 			dlg.cbM01StyleOfMark.addItem("Tower");
+			dlg.cbM01StyleOfMark.addItem("Float");
 			break;
 
@@ -92,4 +93,5 @@
 			dlg.cbM01StyleOfMark.addItem("Beacon");
 			dlg.cbM01StyleOfMark.addItem("Tower");
+			dlg.cbM01StyleOfMark.addItem("Float");
 			break;
 
@@ -113,4 +115,6 @@
 		dlg.cM01Fired.setEnabled(true);
 		dlg.cM01TopMark.setEnabled(true);
+
+		String image = "/images/Lateral";
 
 		int cat = getBuoyIndex();
@@ -123,34 +127,23 @@
 				switch (style) {
 				case LAT_CAN:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Can_Red.png")));
+					image += "_Can_Red";
 					break;
 				case LAT_PILLAR:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Pillar_Red.png")));
+					image += "_Pillar_Red";
 					break;
 				case LAT_SPAR:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Spar_Red.png")));
+					image += "_Spar_Red";
 					break;
 				case LAT_BEACON:
-					if (isFired())
-						dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-								"/images/Lateral_Beacon_Lit_Red.png")));
-					else
-						dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-								"/images/Lateral_Beacon_Red.png")));
+					image += "_Beacon_Red";
 					break;
 				case LAT_TOWER:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Tower_Red.png")));
+					image += "_Tower_Red";
 					break;
 				case LAT_FLOAT:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Float_Red.png")));
+					image += "_Float_Red";
 					break;
 				case LAT_PERCH:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Perch_Port.png")));
+					image += "_Perch_Port";
 					break;
 				default:
@@ -159,34 +152,23 @@
 				switch (style) {
 				case LAT_CAN:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Can_Green.png")));
+					image += "_Can_Green";
 					break;
 				case LAT_PILLAR:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Pillar_Green.png")));
+					image += "_Pillar_Green";
 					break;
 				case LAT_SPAR:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Spar_Green.png")));
+					image += "_Spar_Green";
 					break;
 				case LAT_BEACON:
-					if (isFired())
-						dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-								"/images/Lateral_Beacon_Lit_Green.png")));
-					else
-						dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-								"/images/Lateral_Beacon_Green.png")));
+					image += "_Beacon_Green";
 					break;
 				case LAT_TOWER:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Tower_Green.png")));
+					image += "_Tower_Green";
 					break;
 				case LAT_FLOAT:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Float_Green.png")));
+					image += "_Float_Green";
 					break;
 				case LAT_PERCH:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Perch_Port.png")));
+					image += "_Perch_Port";
 					break;
 				default:
@@ -198,34 +180,23 @@
 				switch (style) {
 				case LAT_CONE:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Cone_Green.png")));
+					image += "_Cone_Green";
 					break;
 				case LAT_PILLAR:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Pillar_Green.png")));
+					image += "_Pillar_Green";
 					break;
 				case LAT_SPAR:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Spar_Green.png")));
+					image += "_Spar_Green";
 					break;
 				case LAT_BEACON:
-					if (isFired())
-						dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-								"/images/Lateral_Beacon_Lit_Green.png")));
-					else
-						dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-								"/images/Lateral_Beacon_Green.png")));
+					image += "_Beacon_Green";
 					break;
 				case LAT_TOWER:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Tower_Green.png")));
+					image += "_Tower_Green";
 					break;
 				case LAT_FLOAT:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Float_Green.png")));
+					image += "_Float_Green";
 					break;
 				case LAT_PERCH:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Perch_Starboard.png")));
+					image += "_Perch_Starboard";
 					break;
 				default:
@@ -234,34 +205,23 @@
 				switch (style) {
 				case LAT_CONE:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Cone_Red.png")));
+					image += "_Cone_Red";
 					break;
 				case LAT_PILLAR:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Pillar_Red.png")));
+					image += "_Pillar_Red";
 					break;
 				case LAT_SPAR:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Spar_Red.png")));
+					image += "_Spar_Red";
 					break;
 				case LAT_BEACON:
-					if (isFired())
-						dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-								"/images/Lateral_Beacon_Lit_Red.png")));
-					else
-						dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-								"/images/Lateral_Beacon_Red.png")));
+					image += "_Beacon_Red";
 					break;
 				case LAT_TOWER:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Tower_Red.png")));
+					image += "_Tower_Red";
 					break;
 				case LAT_FLOAT:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Float_Red.png")));
+					image += "_Float_Red";
 					break;
 				case LAT_PERCH:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Perch_Starboard.png")));
+					image += "_Perch_Starboard";
 					break;
 				default:
@@ -273,26 +233,20 @@
 				switch (style) {
 				case LAT_CAN:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Can_Red_Green_Red.png")));
+					image += "_Can_Red_Green_Red";
 					break;
 				case LAT_PILLAR:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Pillar_Red_Green_Red.png")));
+					image += "_Pillar_Red_Green_Red";
 					break;
 				case LAT_SPAR:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Spar_Red_Green_Red.png")));
+					image += "_Spar_Red_Green_Red";
 					break;
 				case LAT_BEACON:
-					if (isFired())
-						dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-								"/images/Lateral_Beacon_Lit_Red_Green_Red.png")));
-					else
-						dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-								"/images/Lateral_Beacon_Red_Green_Red.png")));
+					image += "_Beacon_Red_Green_Red";
 					break;
 				case LAT_TOWER:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Tower_Red_Green_Red.png")));
+					image += "_Tower_Red_Green_Red";
+					break;
+				case LAT_FLOAT:
+					image += "_Float_Red_Green_Red";
 					break;
 				default:
@@ -301,26 +255,20 @@
 				switch (style) {
 				case LAT_CAN:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Can_Green_Red_Green.png")));
+					image += "_Can_Green_Red_Green";
 					break;
 				case LAT_PILLAR:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Pillar_Green_Red_Green.png")));
+					image += "_Pillar_Green_Red_Green";
 					break;
 				case LAT_SPAR:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Spar_Green_Red_Green.png")));
+					image += "_Spar_Green_Red_Green";
 					break;
 				case LAT_BEACON:
-					if (isFired())
-						dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-								"/images/Lateral_Beacon_Lit_Green_Red_Green.png")));
-					else
-						dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-								"/images/Lateral_Beacon_Green_Red_Green.png")));
+					image += "_Beacon_Green_Red_Green";
 					break;
 				case LAT_TOWER:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Tower_Green_Red_Green.png")));
+					image += "_Tower_Green_Red_Green";
+					break;
+				case LAT_FLOAT:
+					image += "_Float_Green_Red_Green";
 					break;
 				default:
@@ -332,26 +280,20 @@
 				switch (style) {
 				case LAT_CONE:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Cone_Green_Red_Green.png")));
+					image += "_Cone_Green_Red_Green";
 					break;
 				case LAT_PILLAR:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Pillar_Green_Red_Green.png")));
+					image += "_Pillar_Green_Red_Green";
 					break;
 				case LAT_SPAR:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Spar_Green_Red_Green.png")));
+					image += "_Spar_Green_Red_Green";
 					break;
 				case LAT_BEACON:
-					if (isFired())
-						dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-								"/images/Lateral_Beacon_Lit_Green_Red_Green.png")));
-					else
-						dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-								"/images/Lateral_Beacon_Green_Red_Green.png")));
+					image += "_Beacon_Green_Red_Green";
 					break;
 				case LAT_TOWER:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Tower_Green_Red_Green.png")));
+					image += "_Tower_Green_Red_Green";
+					break;
+				case LAT_FLOAT:
+					image += "_Float_Green_Red_Green";
 					break;
 				default:
@@ -360,26 +302,20 @@
 				switch (style) {
 				case LAT_CONE:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Cone_Red_Green_Red.png")));
+					image += "_Cone_Red_Green_Red";
 					break;
 				case LAT_PILLAR:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Pillar_Red_Green_Red.png")));
+					image += "_Pillar_Red_Green_Red";
 					break;
 				case LAT_SPAR:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Spar_Red_Green_Red.png")));
+					image += "_Spar_Red_Green_Red";
 					break;
 				case LAT_BEACON:
-					if (isFired())
-						dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-								"/images/Lateral_Beacon_Li_Red_Green_Red.png")));
-					else
-						dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-								"/images/Lateral_Beacon_Red_Green_Red.png")));
+					image += "_Beacon_Red_Green_Red";
 					break;
 				case LAT_TOWER:
-					dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Lateral_Tower_Red_Green_Red.png")));
+					image += "_Tower_Red_Green_Red";
+					break;
+				case LAT_FLOAT:
+					image += "_Float_Red_Green_Red";
 					break;
 				default:
@@ -390,67 +326,33 @@
 		}
 
-		if (getLightChar() != "") {
-			String c;
-
-			c = getLightChar();
-			if (getLightGroup() != "")
-				c = c + "(" + getLightGroup() + ")";
-
-			dlg.cbM01Kennung.setSelectedItem(c);
-			if (dlg.cbM01Kennung.getSelectedItem() == "Not set")
-				c = "";
-		}
-
-		if (cat == PORT_HAND || cat == PREF_PORT_HAND)
-			switch (style) {
-			case LAT_CAN:
-				if (region != SeaMark.IALA_B)
-					Checker("/images/Can_Top_Can_Red.png", "/images/Light_Red.png");
+		if (image != "/images/Lateral") {
+
+			if (hasTopMark()) {
+				if (cat == PORT_HAND || cat == PREF_PORT_HAND)
+					image += "_Can";
 				else
-					Checker("/images/Can_Top_Can_Green.png", "/images/Light_Green.png");
-				break;
-			case LAT_PILLAR:
-			case LAT_SPAR:
-				if (region != SeaMark.IALA_B)
-					Checker("/images/Can_Top_Buoy_Red.png", "/images/Light_Red.png");
-				else
-					Checker("/images/Can_Top_Buoy_Green.png", "/images/Light_Green.png");
-				break;
-			case LAT_BEACON:
-			case LAT_TOWER:
-			case LAT_FLOAT:
-				if (region != SeaMark.IALA_B)
-					Checker("/images/Can_Top_Post_Red.png", "/images/Light_Red.png");
-				else
-					Checker("/images/Can_Top_Post_Green.png", "/images/Light_Green.png");
-				break;
-			default:
-			}
-		else
-			switch (style) {
-			case LAT_CONE:
-				if (region != SeaMark.IALA_B)
-					Checker("/images/Cone_Top_Cone_Green.png", "/images/Light_Green.png");
-				else
-					Checker("/images/Cone_Top_Cone_Red.png", "/images/Light_Red.png");
-				break;
-			case LAT_PILLAR:
-			case LAT_SPAR:
-				if (region != SeaMark.IALA_B)
-					Checker("/images/Cone_Top_Buoy_Green.png", "/images/Light_Green.png");
-				else
-					Checker("/images/Cone_Top_Buoy_Red.png", "/images/Light_Red.png");
-				break;
-			case LAT_BEACON:
-			case LAT_TOWER:
-			case LAT_FLOAT:
-				if (region != SeaMark.IALA_B)
-					Checker("/images/Cone_Top_Post_Green.png", "/images/Light_Green.png");
-				else
-					Checker("/images/Cone_Top_Post_Red.png", "/images/Light_Red.png");
-				break;
-			default:
-			}
-
+					image += "_Cone";
+			}
+
+			if (isFired())
+				image += "_Lit";
+			if (getLightChar() != "") {
+				String c;
+
+				c = getLightChar();
+				if (getLightGroup() != "")
+					c = c + "(" + getLightGroup() + ")";
+
+				dlg.cbM01Kennung.setSelectedItem(c);
+				if (dlg.cbM01Kennung.getSelectedItem() == "Not set")
+					c = "";
+			}
+
+			image += ".png";
+
+// System.out.println("finename: " + image);
+			dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(image)));
+		} else
+			dlg.lM01Icon01.setIcon(null);
 	}
 
@@ -487,6 +389,4 @@
 			case LAT_BEACON:
 				super.saveSign("beacon_lateral");
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
-						"seamark:beacon_lateral:shape", "stake"));
 				break;
 			case LAT_TOWER:
@@ -496,7 +396,5 @@
 				break;
 			case LAT_FLOAT:
-				super.saveSign("buoy_lateral");
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
-						"seamark:buoy_lateral:shape", "float"));
+				super.saveSign("light_float");
 				break;
 			case LAT_PERCH:
@@ -511,5 +409,4 @@
 			case LAT_PILLAR:
 			case LAT_SPAR:
-			case LAT_FLOAT:
 			case LAT_PERCH:
 				Main.main.undoRedo.add(new ChangePropertyCommand(node,
@@ -536,4 +433,15 @@
 					Main.main.undoRedo.add(new ChangePropertyCommand(node,
 							"seamark:beacon_lateral:colour", "green"));
+					colour = "green";
+				}
+				break;
+			case LAT_FLOAT:
+				if (getRegion() != SeaMark.IALA_B) {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:light_float:colour", "red"));
+					colour = "red";
+				} else {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:light_float:colour", "green"));
 					colour = "green";
 				}
@@ -562,6 +470,4 @@
 			case LAT_BEACON:
 				super.saveSign("beacon_lateral");
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
-						"seamark:beacon_lateral:shape", "stake"));
 				break;
 			case LAT_TOWER:
@@ -571,7 +477,5 @@
 				break;
 			case LAT_FLOAT:
-				super.saveSign("buoy_lateral");
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
-						"seamark:buoy_lateral:shape", "float"));
+				super.saveSign("light_float");
 				break;
 			default:
@@ -581,5 +485,4 @@
 			case LAT_PILLAR:
 			case LAT_SPAR:
-			case LAT_FLOAT:
 				Main.main.undoRedo.add(new ChangePropertyCommand(node,
 						"seamark:buoy_lateral:category", "preferred_channel_port"));
@@ -609,4 +512,17 @@
 					Main.main.undoRedo.add(new ChangePropertyCommand(node,
 							"seamark:beacon_lateral:colour", "green;red;green"));
+					colour = "green";
+				}
+				break;
+			case LAT_FLOAT:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:light_float:colour_pattern", "horizontal stripes"));
+				if (getRegion() != SeaMark.IALA_B) {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:light_float:colour", "red;green;red"));
+					colour = "red";
+				} else {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:light_float:colour", "green;red;green"));
 					colour = "green";
 				}
@@ -644,7 +560,5 @@
 				break;
 			case LAT_FLOAT:
-				super.saveSign("buoy_lateral");
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
-						"seamark:buoy_lateral:shape", "float"));
+				super.saveSign("light_float");
 				break;
 			case LAT_PERCH:
@@ -659,5 +573,4 @@
 			case LAT_PILLAR:
 			case LAT_SPAR:
-			case LAT_FLOAT:
 				Main.main.undoRedo.add(new ChangePropertyCommand(node,
 						"seamark:buoy_lateral:category", "starboard"));
@@ -683,4 +596,15 @@
 					Main.main.undoRedo.add(new ChangePropertyCommand(node,
 							"seamark:beacon_lateral:colour", "red"));
+					colour = "red";
+				}
+				break;
+			case LAT_FLOAT:
+				if (getRegion() != SeaMark.IALA_B) {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:light_float:colour", "green"));
+					colour = "green";
+				} else {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:light_float:colour", "red"));
 					colour = "red";
 				}
@@ -716,4 +640,7 @@
 				Main.main.undoRedo.add(new ChangePropertyCommand(node,
 						"seamark:beacon_lateral:shape", "tower"));
+				break;
+			case LAT_FLOAT:
+				super.saveSign("light_float");
 				break;
 			default:
@@ -723,5 +650,4 @@
 			case LAT_PILLAR:
 			case LAT_SPAR:
-			case LAT_FLOAT:
 				Main.main.undoRedo.add(new ChangePropertyCommand(node,
 						"seamark:buoy_lateral:category", "preferred_channel_starboard"));
@@ -751,4 +677,17 @@
 					Main.main.undoRedo.add(new ChangePropertyCommand(node,
 							"seamark:beacon_lateral:colour", "red;green;red"));
+					colour = "red";
+				}
+				break;
+			case LAT_FLOAT:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:light_float:colour_pattern", "horizontal stripes"));
+				if (getRegion() != SeaMark.IALA_B) {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:light_float:colour", "green;red;green"));
+					colour = "green";
+				} else {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:light_float:colour", "red;green;red"));
 					colour = "red";
 				}
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyNota.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyNota.java	(revision 22572)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyNota.java	(revision 22623)
@@ -99,14 +99,4 @@
 		}
 
-		if (getLightColour() == "W")
-			dlg.lM01Icon03.setIcon(new ImageIcon(getClass().getResource(
-					"/images/Light_White.png")));
-		else if (getLightColour() == "R")
-			dlg.lM01Icon03.setIcon(new ImageIcon(getClass().getResource(
-					"/images/Light_Red.png")));
-		else if (getLightColour() == "G")
-			dlg.lM01Icon03.setIcon(new ImageIcon(getClass().getResource(
-					"/images/Light_Green.png")));
-
 	}
 
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java	(revision 22572)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java	(revision 22623)
@@ -57,82 +57,85 @@
 		dlg.cM01TopMark.setEnabled(true);
 
+		String image = "/images/Safe_Water";
+
 		switch (getStyleIndex()) {
 		case SAFE_PILLAR:
-			dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-					"/images/Safe_Water_Pillar.png")));
+			image += "_Pillar";
 			break;
 		case SAFE_SPAR:
-			dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-					"/images/Safe_Water_Spar.png")));
+			image += "_Spar";
 			break;
 		case SAFE_SPHERE:
-			dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-					"/images/Safe_Water_Sphere.png")));
+			image += "_Sphere";
 			break;
 		case SAFE_FLOAT:
-			dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-					"/images/Safe_Water_Float.png")));
+			image += "_Float";
 			break;
 		default:
 		}
 
-		if (getLightChar() != "") {
-			String c;
-
-			c = getLightChar();
-
-			dlg.cbM01Kennung.setSelectedItem(c);
-			if (dlg.cbM01Kennung.getSelectedItem() == "Not set")
-				c = "";
-		}
-		
+		if (image != "/images/Safe_Water") {
+
+			if (hasTopMark())
+				image += "_Sphere";
+
+			if (isFired()) {
+				image += "_Lit";
+				if (getLightChar() != "") {
+					String c;
+
+					c = getLightChar();
+
+					dlg.cbM01Kennung.setSelectedItem(c);
+					if (dlg.cbM01Kennung.getSelectedItem() == "Not set")
+						c = "";
+				}
+			}
+			image += ".png";
+
+			dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(image)));
+		} else
+			dlg.lM01Icon01.setIcon(null);
+	}
+
+	public void saveSign() {
+		Node node = getNode();
+
+		if (node == null) {
+			return;
+		}
+
 		switch (getStyleIndex()) {
 		case SAFE_PILLAR:
+			super.saveSign("buoy_safe_water");
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_safe_water:shape", "pillar"));
+			break;
 		case SAFE_SPAR:
-			Checker("/images/Sphere_Top_Buoy_Red.png", "/images/Light_White.png");
+			super.saveSign("buoy_safe_water");
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_safe_water:shape", "spar"));
 			break;
 		case SAFE_SPHERE:
-			Checker("/images/Sphere_Top_Sphere_Red.png", "/images/Light_White.png");
+			super.saveSign("buoy_safe_water");
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_safe_water:shape", "sphere"));
 			break;
 		case SAFE_FLOAT:
-			Checker("/images/Sphere_Top_Post_Red.png", "/images/Light_White.png");
+			super.saveSign("light_float");
 			break;
 		default:
 		}
-	}
-
-	public void saveSign() {
-		Node node = getNode();
-
-		if (node == null) {
-			return;
-		}
-
-		super.saveSign("buoy_safe_water");
-
-		switch (getStyleIndex()) {
-		case SAFE_PILLAR:
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
-					"seamark:buoy_safe_water:shape", "pillar"));
-			break;
-		case SAFE_SPAR:
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
-					"seamark:buoy_safe_water:shape", "spar"));
-			break;
-		case SAFE_SPHERE:
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
-					"seamark:buoy_safe_water:shape", "sphere"));
-			break;
-		case SAFE_FLOAT:
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
-					"seamark:buoy_safe_water:shape", "float"));
-			break;
-		default:
-		}
-		Main.main.undoRedo.add(new ChangePropertyCommand(node,
-				"seamark:buoy_safe_water:colour_pattern", "vertical stripes"));
-		Main.main.undoRedo.add(new ChangePropertyCommand(node,
-				"seamark:buoy_safe_water:colour", "red;white"));
-
+		if (getStyleIndex() == SAFE_FLOAT) {
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:light_float:colour_pattern", "vertical stripes"));
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:light_float:colour", "red;white"));
+		} else {
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_safe_water:colour_pattern", "vertical stripes"));
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_safe_water:colour", "red;white"));
+		}
 		saveTopMarkData("spherical", "red");
 
@@ -217,5 +220,5 @@
 		if (keys.containsKey("seamark:buoy_safe_water:shape")) {
 			str = keys.get("seamark:buoy_safe_water:shape");
-			
+
 			if (str.compareTo("pillar") == 0)
 				setStyleIndex(SAFE_PILLAR);
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java	(revision 22572)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java	(revision 22623)
@@ -24,5 +24,4 @@
 		dlg.cbM01StyleOfMark.addItem("Spar Buoy");
 		dlg.cbM01StyleOfMark.addItem("Sphere Buoy");
-		dlg.cbM01StyleOfMark.addItem("Barrel");
 
 		dlg.cbM01Kennung.removeAllItems();
@@ -53,58 +52,54 @@
 		dlg.cM01TopMark.setEnabled(true);
 
+		String image = "/images/Special_Purpose";
+
 		switch (getStyleIndex()) {
 		case SPEC_PILLAR:
-			dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-					"/images/Special_Purpose_Pillar.png")));
+			image += "_Pillar";
 			break;
 		case SPEC_SPAR:
-			dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-					"/images/Special_Purpose_Spar.png")));
+			image += "_Spar";
 			break;
 		case SPEC_SPHERE:
-			dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-					"/images/Special_Purpose_Sphere.png")));
-			break;
-		case SPEC_BARREL:
-			dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
-					"/images/Special_Purpose_Barrel.png")));
+			image += "_Sphere";
 			break;
 		default:
 		}
 
-		if (getLightChar() != "") {
-			String c;
-
-			c = getLightChar();
-
-			dlg.cbM01Kennung.setSelectedItem(c);
-			if (dlg.cbM01Kennung.getSelectedItem() == "Not set")
-				c = "";
-		}
+		if (image != "/images/Special_Purpose") {
+
+			if (hasTopMark())
+				image += "_CrossY";
+
+			if (isFired()) {
+				image += "_Lit";
+				if (getLightChar() != "") {
+					String c;
+
+					c = getLightChar();
+
+					dlg.cbM01Kennung.setSelectedItem(c);
+					if (dlg.cbM01Kennung.getSelectedItem() == "Not set")
+						c = "";
+				}
+			}
+			image += ".png";
+
+			dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(image)));
+		} else
+			dlg.lM01Icon01.setIcon(null);
+	}
+
+	public void saveSign() {
+		Node node = getNode();
+
+		if (node == null) {
+			return;
+		}
+
+		super.saveSign("buoy_special_purpose");
 
 		switch (getStyleIndex()) {
 		case SPEC_PILLAR:
-		case SPEC_SPAR:
-			Checker("/images/Cross_Top_Buoy_Yellow.png", "/images/Light_White.png");
-			break;
-		case SPEC_SPHERE:
-		case SPEC_BARREL:
-			Checker("/images/Cross_Top_Sphere_Yellow.png", "/images/Light_White.png");
-			break;
-		default:
-		}
-	}
-
-	public void saveSign() {
-		Node node = getNode();
-
-		if (node == null) {
-			return;
-		}
-
-		super.saveSign("buoy_special_purpose");
-
-		switch (getStyleIndex()) {
-		case SPEC_PILLAR:
 			Main.main.undoRedo.add(new ChangePropertyCommand(node,
 					"seamark:buoy_special_purpose:shape", "pillar"));
@@ -127,5 +122,5 @@
 				"seamark:buoy_special_purpose:colour", "yellow"));
 
-		saveTopMarkData("cross", "yellow");
+		saveTopMarkData("x-shape", "yellow");
 
 		saveLightData("white");
@@ -148,5 +143,5 @@
 			str = keys.get("seamark:topmark:shape");
 
-			if (str.compareTo("cross") == 0) {
+			if (str.compareTo("x-shape") == 0) {
 				setTopMark(true);
 
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyUkn.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyUkn.java	(revision 22572)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyUkn.java	(revision 22623)
@@ -38,8 +38,4 @@
 		if (dlg.lM01Icon01 != null)
 			dlg.lM01Icon01.setIcon(null);
-		if (dlg.lM01Icon02 != null)
-			dlg.lM01Icon02.setIcon(null);
-		if (dlg.lM01Icon03 != null)
-			dlg.lM01Icon03.setIcon(null);
 		if (getErrMsg() != null)
 			dlg.sM01StatusBar.setText(getErrMsg());
