Index: /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java	(revision 25541)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java	(revision 25542)
@@ -28,4 +28,54 @@
 	 * private Variablen
 	 */
+
+	private String Longname = "";
+
+	public String getLongname() {
+		return Longname;
+	}
+
+	public void setLongname(String name) {
+		Longname = name;
+	}
+
+	private String Ref = "";
+
+	public String getRef() {
+		return Ref;
+	}
+
+	public void setRef(String ref) {
+		Ref = ref;
+	}
+
+	private String Inf = "";
+
+	public String getInf() {
+		return Inf;
+	}
+
+	public void setInf(String inf) {
+		Inf = inf;
+	}
+
+	private String Fixme = "";
+
+	public String getFixme() {
+		return Fixme;
+	}
+
+	public void setFixme(String name) {
+		Fixme = name;
+	}
+
+	private String LMheight = "";
+
+	public String getLMheight() {
+		return LMheight;
+	}
+
+	public void setLMheight(String height) {
+		LMheight = height;
+	}
 
 	private int BuoyIndex = 0;
@@ -169,4 +219,5 @@
 			setBearing2("");
 			setRadius("");
+			setSeq("");
 		}
 	}
@@ -258,4 +309,18 @@
 			Range = new String[10];
 		Range[SectorIndex] = range;
+	}
+
+	private String[] Sequence = new String[10];
+
+	public String getSeq() {
+		if (Sequence[SectorIndex] == null)
+			return (Sequence[0]);
+		return Sequence[SectorIndex];
+	}
+
+	public void setSeq(String seq) {
+		if (SectorIndex == 0)
+			Sequence = new String[10];
+		Sequence[SectorIndex] = seq;
 	}
 
@@ -418,4 +483,8 @@
 				if (index != 0)
 					setSectored(true);
+				if (key.equals("ref"))
+					setRef(value);
+				if (key.equals("inform"))
+					setInf(value);
 				if (key.equals("colour")) {
 					if (value.equals("red"))
@@ -435,4 +504,10 @@
 				} else if (key.equals("range")) {
 					Range[index] = value;
+				} else if (key.equals("sequence")) {
+					Sequence[index] = value;
+				} else if (key.equals("sector_start")) {
+					Bearing1[index] = value;
+				} else if (key.equals("sector_end")) {
+					Bearing2[index] = value;
 				}
 			}
@@ -801,6 +876,9 @@
 		String str = dlg.tfM01Name.getText();
 		if (!str.isEmpty())
-			Main.main.undoRedo.add(new ChangePropertyCommand(Node, "seamark:name",
-					str));
+			Main.main.undoRedo.add(new ChangePropertyCommand(Node, "seamark:name", str));
+		if (!Longname.isEmpty())
+			Main.main.undoRedo.add(new ChangePropertyCommand(Node, "seamark:longname", Longname));
+		if (!Fixme.isEmpty())
+			Main.main.undoRedo.add(new ChangePropertyCommand(Node, "seamark:fixme", Fixme));
 		Main.main.undoRedo
 				.add(new ChangePropertyCommand(Node, "seamark:type", type));
@@ -810,5 +888,5 @@
 		String colour;
 		if (dlg.cM01Fired.isSelected()) {
-			if (!(colour = LightColour[0]).isEmpty())
+			if (!(colour = LightColour[0]).isEmpty() && !Sectored)
 				if (colour.equals("R")) {
 					Main.main.undoRedo.add(new ChangePropertyCommand(Node,
@@ -821,4 +899,12 @@
 							"seamark:light:colour", "white"));
 				}
+
+			if (!Ref.isEmpty())
+				Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+						"seamark:light:ref", Ref));
+
+			if (!Inf.isEmpty())
+				Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+						"seamark:light:inform", Inf));
 
 			if (!LightPeriod[0].isEmpty())
@@ -841,4 +927,8 @@
 				Main.main.undoRedo.add(new ChangePropertyCommand(Node,
 						"seamark:light:range", Range[0]));
+
+			if (!Sequence[0].isEmpty())
+				Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+						"seamark:light:sequence", Sequence[0]));
 
 			for (int i = 1; i < 10; i++) {
@@ -886,4 +976,8 @@
 							"seamark:light:" + i + ":height", Height[i]));
 
+				if (Sequence[i] != null)
+					Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+							"seamark:light:" + i + ":sequence", Sequence[i]));
+
 				if (Range[i] != null)
 					Main.main.undoRedo.add(new ChangePropertyCommand(Node,
@@ -1026,4 +1120,8 @@
 		dlg.tfM01Name.setEnabled(false);
 		setName("");
+		setLongname("");
+		setFixme("");
+		setRef("");
+		setInf("");
 		dlg.cM01TopMark.setSelected(false);
 		dlg.cM01TopMark.setVisible(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 25541)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyCard.java	(revision 25542)
@@ -56,4 +56,10 @@
 		if (keys.containsKey("seamark:name")) //$NON-NLS-1$
 			setName(keys.get("seamark:name")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:longname")) //$NON-NLS-1$
+			setLongname(keys.get("seamark:longname")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:fixme")) //$NON-NLS-1$
+			setFixme(keys.get("seamark:fixme")); //$NON-NLS-1$
 
 		if (keys.containsKey("seamark:buoy_cardinal:name")) //$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 25541)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyIsol.java	(revision 25542)
@@ -49,4 +49,10 @@
 		if (keys.containsKey("seamark:name")) //$NON-NLS-1$
 			setName(keys.get("seamark:name")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:longname")) //$NON-NLS-1$
+			setLongname(keys.get("seamark:longname")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:fixme")) //$NON-NLS-1$
+			setFixme(keys.get("seamark:fixme")); //$NON-NLS-1$
 
 		if (keys.containsKey("seamark:buoy_isolated_danger:name")) //$NON-NLS-1$
Index: /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyLat.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyLat.java	(revision 25541)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyLat.java	(revision 25542)
@@ -54,4 +54,10 @@
 		if (keys.containsKey("seamark:name")) //$NON-NLS-1$
 			setName(keys.get("seamark:name")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:longname")) //$NON-NLS-1$
+			setLongname(keys.get("seamark:longname")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:fixme")) //$NON-NLS-1$
+			setFixme(keys.get("seamark:fixme")); //$NON-NLS-1$
 
 		if (keys.containsKey("seamark:buoy_lateral:name")) //$NON-NLS-1$
@@ -274,4 +280,11 @@
 			setStyleIndex(LAT_FLOAT);
 		}
+
+		if (keys.containsKey("seamark:buoy_lateral:marsys")) //$NON-NLS-1$
+			setRegion(keys.get("seamark:buoy_lateral:marsys").equals("B")); //$NON-NLS-1$
+		else if (keys.containsKey("seamark:beacon_lateral:marsys")) //$NON-NLS-1$
+			setRegion(keys.get("seamark:beacon_lateral:marsys").equals("B")); //$NON-NLS-1$
+		else if (keys.containsKey("seamark:light_float:marsys")) //$NON-NLS-1$
+			setRegion(keys.get("seamark:light_float:marsys").equals("B")); //$NON-NLS-1$
 
 		refreshStyles();
@@ -913,6 +926,4 @@
 			case LAT_BEACON:
 				super.saveSign("beacon_lateral"); //$NON-NLS-1$
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
-						"seamark:beacon_lateral:shape", "stake")); //$NON-NLS-1$ //$NON-NLS-2$
 				break;
 			case LAT_TOWER:
@@ -999,6 +1010,4 @@
 			case LAT_BEACON:
 				super.saveSign("beacon_lateral"); //$NON-NLS-1$
-				Main.main.undoRedo.add(new ChangePropertyCommand(node,
-						"seamark:beacon_lateral:shape", "stake")); //$NON-NLS-1$ //$NON-NLS-2$
 				break;
 			case LAT_TOWER:
@@ -1065,4 +1074,24 @@
 		default:
 		}
+
+		switch (getStyleIndex()) {
+		case LAT_CAN:
+//		case LAT_CONE:
+		case LAT_PILLAR:
+		case LAT_SPAR:
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_lateral:marsys", (getRegion() ? "B" : "A"))); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case LAT_BEACON:
+		case LAT_TOWER:
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:beacon_lateral:marsys", (getRegion() ? "B" : "A"))); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case LAT_FLOAT:
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:light_float:marsys", (getRegion() ? "B" : "A"))); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		}
+		
 		saveTopMarkData(shape, colour);
 		saveLightData();
Index: /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyNota.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyNota.java	(revision 25541)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyNota.java	(revision 25542)
@@ -46,4 +46,13 @@
 		if (keys.containsKey("seamark:name")) //$NON-NLS-1$
 			setName(keys.get("seamark:name")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:longname")) //$NON-NLS-1$
+			setLongname(keys.get("seamark:longname")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:fixme")) //$NON-NLS-1$
+			setFixme(keys.get("seamark:fixme")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:landmark:height")) //$NON-NLS-1$
+			setLMheight(keys.get("seamark:landmark:height")); //$NON-NLS-1$
 
 		if (keys.containsKey("seamark:landmark:name")) //$NON-NLS-1$
@@ -151,4 +160,6 @@
 		default:
 		}
+		if (!getLMheight().isEmpty())
+			Main.main.undoRedo.add(new ChangePropertyCommand(node, "seamark:landmark:height", getLMheight()));
 		saveLightData(); //$NON-NLS-1$
 		saveRadarFogData();
Index: /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java	(revision 25541)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java	(revision 25542)
@@ -48,4 +48,10 @@
 		if (keys.containsKey("seamark:name")) //$NON-NLS-1$
 			setName(keys.get("seamark:name")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:longname")) //$NON-NLS-1$
+			setLongname(keys.get("seamark:longname")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:fixme")) //$NON-NLS-1$
+			setFixme(keys.get("seamark:fixme")); //$NON-NLS-1$
 
 		if (keys.containsKey("seamark:buoy_safe_water:name")) //$NON-NLS-1$
Index: /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java	(revision 25541)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java	(revision 25542)
@@ -61,4 +61,10 @@
 		if (keys.containsKey("seamark:name")) //$NON-NLS-1$
 			setName(keys.get("seamark:name")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:longname")) //$NON-NLS-1$
+			setLongname(keys.get("seamark:longname")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:fixme")) //$NON-NLS-1$
+			setFixme(keys.get("seamark:fixme")); //$NON-NLS-1$
 
 		if (keys.containsKey("seamark:buoy_special_purpose:name")) //$NON-NLS-1$
