Index: applications/editors/josm/plugins/smed/plugs/oseam/src/images/PlatformButton.svg
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/images/PlatformButton.svg	(revision 27438)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/images/PlatformButton.svg	(revision 27439)
@@ -26187,6 +26187,6 @@
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
-     inkscape:zoom="22.627416"
-     inkscape:cx="1.8124961"
+     inkscape:zoom="3.9999998"
+     inkscape:cx="-5.6784167"
      inkscape:cy="15.194363"
      inkscape:document-units="px"
@@ -26216,5 +26216,5 @@
         <dc:type
            rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
+        <dc:title />
       </cc:Work>
     </rdf:RDF>
@@ -26239,27 +26239,29 @@
        transform="translate(-125.22893,1000.408)" />
     <g
-       style="display:inline"
-       id="g7823"
-       transform="matrix(0.2,0,0,0.2,-14,996.3622)">
+       id="g12177"
+       transform="matrix(0.2,0,0,0.2,12.8,829.08976)">
       <g
-         inkscape:label="Platform"
-         id="layer9">
-        <rect
-           y="152"
-           x="102"
-           height="96"
-           width="96"
-           id="rect3584"
-           style="fill:none;stroke:#000000;stroke-width:20;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <path
-           transform="matrix(0.6222222,0,0,0.57931037,56.555558,83.517238)"
-           d="m 155,201.07143 c 0,2.86004 -2.15862,5.17857 -4.82143,5.17857 -2.6628,0 -4.82143,-2.31853 -4.82143,-5.17857 0,-2.86005 2.15863,-5.17857 4.82143,-5.17857 2.66281,0 4.82143,2.31852 4.82143,5.17857 z"
-           sodipodi:ry="5.1785712"
-           sodipodi:rx="4.8214288"
-           sodipodi:cy="201.07143"
-           sodipodi:cx="150.17857"
-           id="path4354"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           sodipodi:type="arc" />
+         transform="translate(-134,836.3622)"
+         id="g7823"
+         style="display:inline">
+        <g
+           id="layer9"
+           inkscape:label="Platform">
+          <path
+             inkscape:connector-curvature="0"
+             d="m 100,150 0,2 0,96 0,2 2,0 96,0 2,0 0,-2 0,-96 0,-2 -2,0 -96,0 -2,0 z m 4,4 92,0 0,92 -92,0 0,-92 z"
+             style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans"
+             id="path12181" />
+          <path
+             sodipodi:type="arc"
+             style="fill:#000000;fill-opacity:1;stroke:none"
+             id="path4354"
+             sodipodi:cx="150.17857"
+             sodipodi:cy="201.07143"
+             sodipodi:rx="4.8214288"
+             sodipodi:ry="5.1785712"
+             d="m 155,201.07143 c 0,2.86004 -2.15862,5.17857 -4.82143,5.17857 -2.6628,0 -4.82143,-2.31853 -4.82143,-5.17857 0,-2.86005 2.15863,-5.17857 4.82143,-5.17857 2.66281,0 4.82143,2.31852 4.82143,5.17857 z"
+             transform="matrix(0.6222222,0,0,0.57931037,56.555558,83.517238)" />
+        </g>
       </g>
     </g>
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLights.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLights.java	(revision 27438)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLights.java	(revision 27439)
@@ -64,4 +64,17 @@
 				int idx = platformCats.get(cat);
 				if (dlg.node != null && (idx == platformCatBox.getSelectedIndex())) {
+					dlg.panelMain.mark.setCategory(cat);
+					dlg.panelMain.mark.testValid();
+				}
+			}
+		}
+	};
+	public JComboBox pilotCatBox;
+	public EnumMap<Cat, Integer> pilotCats = new EnumMap<Cat, Integer>(Cat.class);
+	private ActionListener alPilotCatBox = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			for (Cat cat : pilotCats.keySet()) {
+				int idx = pilotCats.get(cat);
+				if (dlg.node != null && (idx == pilotCatBox.getSelectedIndex())) {
 					dlg.panelMain.mark.setCategory(cat);
 					dlg.panelMain.mark.testValid();
@@ -80,4 +93,9 @@
 	public JRadioButton warningButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/WarningButton.png")));
 	public JRadioButton platformButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PlatformButton.png")));
+	public JRadioButton coastguardButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/CoastguardButton.png")));
+	public JRadioButton pilotButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PilotButton.png")));
+	public JRadioButton rescueButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RescueButton.png")));
+	public JRadioButton radioButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RadioStationButton.png")));
+	public JRadioButton radarButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RadarStationButton.png")));
 	public EnumMap<Obj, JRadioButton> objects = new EnumMap<Obj, JRadioButton>(Obj.class);
 	private ActionListener alObj = new ActionListener() {
@@ -96,39 +114,31 @@
 				dlg.panelMain.mark.setShape(Shp.FLOAT);
 			else dlg.panelMain.mark.setShape(Shp.UNKSHP);
+			categoryLabel.setVisible(false);
+			landCatBox.setVisible(false);
+			trafficCatBox.setVisible(false);
+			warningCatBox.setVisible(false);
+			platformCatBox.setVisible(false);
+			pilotCatBox.setVisible(false);
+			dlg.panelMain.mark.setCategory(Cat.NOCAT);
 			if (landButton.isSelected()) {
 				categoryLabel.setVisible(true);
 				landCatBox.setVisible(true);
-				trafficCatBox.setVisible(false);
-				warningCatBox.setVisible(false);
-				platformCatBox.setVisible(false);
 				alLandCatBox.actionPerformed(null);
 			} else if (trafficButton.isSelected()) {
 				categoryLabel.setVisible(true);
 				trafficCatBox.setVisible(true);
-				landCatBox.setVisible(false);
-				warningCatBox.setVisible(false);
-				platformCatBox.setVisible(false);
 				alTrafficCatBox.actionPerformed(null);
 			} else if (warningButton.isSelected()) {
 				categoryLabel.setVisible(true);
 				warningCatBox.setVisible(true);
-				landCatBox.setVisible(false);
-				trafficCatBox.setVisible(false);
-				platformCatBox.setVisible(false);
 				alWarningCatBox.actionPerformed(null);
 			} else if (platformButton.isSelected()) {
 				categoryLabel.setVisible(true);
 				platformCatBox.setVisible(true);
-				warningCatBox.setVisible(false);
-				landCatBox.setVisible(false);
-				trafficCatBox.setVisible(false);
 				alPlatformCatBox.actionPerformed(null);
-			} else {
-				dlg.panelMain.mark.setCategory(Cat.NOCAT);
-				categoryLabel.setVisible(false);
-				landCatBox.setVisible(false);
-				trafficCatBox.setVisible(false);
-				warningCatBox.setVisible(false);
-				platformCatBox.setVisible(false);
+			} else if (pilotButton.isSelected()) {
+				categoryLabel.setVisible(true);
+				pilotCatBox.setVisible(true);
+				alPilotCatBox.actionPerformed(null);
 			}
 			dlg.panelMain.mark.testValid();
@@ -148,12 +158,17 @@
 		add(getObjButton(trafficButton, 68, 35, 34, 32, "SSTraffic", Obj.SISTAT));
 		add(getObjButton(warningButton, 102, 35, 34, 32, "SSWarning", Obj.SISTAW));
+		add(getObjButton(coastguardButton, 0, 70, 34, 32, "Coastguard", Obj.CGUSTA));
+		add(getObjButton(pilotButton, 34, 70, 34, 32, "PilotBoarding", Obj.PILBOP));
+		add(getObjButton(rescueButton, 68, 70, 34, 32, "RescueStation", Obj.RSCSTA));
+		add(getObjButton(radioButton, 102, 70, 34, 32, "RadioStation", Obj.RDOSTA));
+		add(getObjButton(radarButton, 136, 70, 34, 32, "RadarStation", Obj.RADSTA));
 
 		categoryLabel = new JLabel(Messages.getString("Category"), SwingConstants.CENTER);
-		categoryLabel.setBounds(new Rectangle(5, 80, 160, 20));
+		categoryLabel.setBounds(new Rectangle(5, 110, 160, 20));
 		add(categoryLabel);
 		categoryLabel.setVisible(false);
 
 		landCatBox = new JComboBox();
-		landCatBox.setBounds(new Rectangle(5, 100, 160, 20));
+		landCatBox.setBounds(new Rectangle(5, 130, 160, 20));
 		add(landCatBox);
 		landCatBox.addActionListener(alLandCatBox);
@@ -181,5 +196,5 @@
 
 		trafficCatBox = new JComboBox();
-		trafficCatBox.setBounds(new Rectangle(5, 100, 160, 20));
+		trafficCatBox.setBounds(new Rectangle(5, 130, 160, 20));
 		add(trafficCatBox);
 		trafficCatBox.addActionListener(alTrafficCatBox);
@@ -198,5 +213,5 @@
 
 		warningCatBox = new JComboBox();
-		warningCatBox.setBounds(new Rectangle(10, 100, 160, 20));
+		warningCatBox.setBounds(new Rectangle(5, 130, 160, 20));
 		add(warningCatBox);
 		warningCatBox.addActionListener(alWarningCatBox);
@@ -220,5 +235,5 @@
 
 		platformCatBox = new JComboBox();
-		platformCatBox.setBounds(new Rectangle(10, 100, 160, 20));
+		platformCatBox.setBounds(new Rectangle(5, 130, 160, 20));
 		add(platformCatBox);
 		platformCatBox.addActionListener(alPlatformCatBox);
@@ -235,13 +250,26 @@
 		addPLItem(Messages.getString("NCCB"), Cat.OFP_NCCB);
 		platformCatBox.setVisible(false);
+
+		pilotCatBox = new JComboBox();
+		pilotCatBox.setBounds(new Rectangle(5, 130, 160, 20));
+		add(pilotCatBox);
+		pilotCatBox.addActionListener(alPilotCatBox);
+		addPTItem("", Cat.NOCAT);
+		addPTItem(Messages.getString("CruisingVessel"), Cat.PIL_VESS);
+		addPTItem(Messages.getString("Helicopter"), Cat.PIL_HELI);
+		addPTItem(Messages.getString("FromShore"), Cat.PIL_SHORE);
+		pilotCatBox.setVisible(false);
 	}
 
 	public void syncPanel() {
+		categoryLabel.setVisible(false);
+		landCatBox.setVisible(false);
+		trafficCatBox.setVisible(false);
+		warningCatBox.setVisible(false);
+		platformCatBox.setVisible(false);
+		pilotCatBox.setVisible(false);
 		if ((dlg.panelMain.mark.getObject() == Obj.LNDMRK) && (dlg.panelMain.mark.getCategory() != Cat.NOCAT)) {
 			categoryLabel.setVisible(true);
 			landCatBox.setVisible(true);
-			trafficCatBox.setVisible(false);
-			warningCatBox.setVisible(false);
-			platformCatBox.setVisible(false);
 			for (Cat cat : landCats.keySet()) {
 				int item = landCats.get(cat);
@@ -252,7 +280,4 @@
 				categoryLabel.setVisible(true);
 				trafficCatBox.setVisible(true);
-				landCatBox.setVisible(false);
-				warningCatBox.setVisible(false);
-				platformCatBox.setVisible(false);
 				for (Cat cat : trafficCats.keySet()) {
 					int item = trafficCats.get(cat);
@@ -263,7 +288,4 @@
 			categoryLabel.setVisible(true);
 			warningCatBox.setVisible(true);
-			landCatBox.setVisible(false);
-			trafficCatBox.setVisible(false);
-			platformCatBox.setVisible(false);
 			for (Cat cat : warningCats.keySet()) {
 				int item = warningCats.get(cat);
@@ -274,7 +296,4 @@
 			categoryLabel.setVisible(true);
 			platformCatBox.setVisible(true);
-			landCatBox.setVisible(false);
-			warningCatBox.setVisible(false);
-			trafficCatBox.setVisible(false);
 			for (Cat cat : platformCats.keySet()) {
 				int item = platformCats.get(cat);
@@ -282,10 +301,13 @@
 					platformCatBox.setSelectedIndex(item);
 			}
+		} else if (dlg.panelMain.mark.getObject() == Obj.PILBOP) {
+			categoryLabel.setVisible(true);
+			pilotCatBox.setVisible(true);
+			for (Cat cat : pilotCats.keySet()) {
+				int item = pilotCats.get(cat);
+				if (dlg.panelMain.mark.getCategory() == cat)
+					pilotCatBox.setSelectedIndex(item);
+			}
 		} else {
-			categoryLabel.setVisible(false);
-			landCatBox.setVisible(false);
-			trafficCatBox.setVisible(false);
-			warningCatBox.setVisible(false);
-			platformCatBox.setVisible(false);
 		}
 		for (Obj obj : objects.keySet()) {
@@ -314,4 +336,9 @@
 		platformCats.put(cat, platformCatBox.getItemCount());
 		platformCatBox.addItem(str);
+	}
+
+	private void addPTItem(String str, Cat cat) {
+		pilotCats.put(cat, pilotCatBox.getItemCount());
+		pilotCatBox.addItem(str);
 	}
 
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 27438)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMain.java	(revision 27439)
@@ -313,4 +313,6 @@
 			case SIS:
 			case PLF:
+			case CGS:
+			case PLT:
 				lightsButton.setBorderPainted(true);
 				panelLights.setVisible(true);
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 27438)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSpec.java	(revision 27439)
@@ -138,8 +138,8 @@
 
 		categoryLabel = new JLabel(Messages.getString("Category"), SwingConstants.CENTER);
-		categoryLabel.setBounds(new Rectangle(5, 100, 160, 20));
+		categoryLabel.setBounds(new Rectangle(5, 110, 160, 20));
 		add(categoryLabel);
 		categoryBox = new JComboBox();
-		categoryBox.setBounds(new Rectangle(5, 120, 160, 20));
+		categoryBox.setBounds(new Rectangle(5, 130, 160, 20));
 		add(categoryBox);
 		categoryBox.setVisible(true);
@@ -164,5 +164,5 @@
 		addCatItem(Messages.getString("Anchorage"), Cat.SPM_ANCH);
 		mooringBox = new JComboBox();
-		mooringBox.setBounds(new Rectangle(5, 120, 160, 20));
+		mooringBox.setBounds(new Rectangle(5, 130, 160, 20));
 		add(mooringBox);
 		mooringBox.setVisible(false);
@@ -187,9 +187,9 @@
 		add(topmarkButton);
 
-//		mooringButton.setBounds(new Rectangle(136, 64, 34, 32));
-//		mooringButton.setToolTipText(Messages.getString("Mooring"));
-//		mooringButton.setBorder(BorderFactory.createLoweredBevelBorder());
-//		mooringButton.addActionListener(alMooring);
-//		add(mooringButton);
+		mooringButton.setBounds(new Rectangle(136, 64, 34, 32));
+		mooringButton.setToolTipText(Messages.getString("Mooring"));
+		mooringButton.setBorder(BorderFactory.createLoweredBevelBorder());
+		mooringButton.addActionListener(alMooring);
+		add(mooringButton);
 	}
 
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 27438)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java	(revision 27439)
@@ -65,5 +65,6 @@
 		FLTCAR, FLTISD, FLTLAT, FLTSAW, FLTSPP,
 		LITMAJ, LITMIN, LITFLT, LITVES, LITHSE, LNDMRK,
-		MORFAC, BOYINB, SISTAW, SISTAT, OFSPLF
+		MORFAC, BOYINB, SISTAW, SISTAT, OFSPLF,
+		CGUSTA, PILBOP, RSCSTA, RDOSTA, RADSTA
 	}
 
@@ -96,4 +97,9 @@
 		ObjSTR.put(Obj.SISTAW, "signal_station_warning");
 		ObjSTR.put(Obj.SISTAT, "signal_station_traffic");
+		ObjSTR.put(Obj.CGUSTA, "coastguard_station");
+		ObjSTR.put(Obj.PILBOP, "pilot_boarding");
+		ObjSTR.put(Obj.RSCSTA, "rescue_station");
+		ObjSTR.put(Obj.RDOSTA, "radio_station");
+		ObjSTR.put(Obj.RADSTA, "radar_station");
 	}
 
@@ -131,5 +137,6 @@
 
 	public enum Ent {
-		BODY, BUOY, BEACON, LFLOAT, TOPMARK, LIGHT, MOORING, STATION, PLATFORM
+		BODY, BUOY, BEACON, LFLOAT, TOPMARK, LIGHT, MOORING, STATION, PLATFORM,
+		COASTGUARD, PILOT
 	}
 
@@ -162,8 +169,10 @@
 		EntMAP.put(Obj.SISTAW, Ent.STATION);
 		EntMAP.put(Obj.SISTAT, Ent.STATION);
+		EntMAP.put(Obj.CGUSTA, Ent.COASTGUARD);
+		EntMAP.put(Obj.PILBOP, Ent.PILOT);
 	}
 
 	public enum Grp {
-		NUL, LAT, CAR, SAW, ISD, SPP, LGT, SIS, PLF
+		NUL, LAT, CAR, SAW, ISD, SPP, LGT, SIS, PLF, CGS, PLT
 	}
 
@@ -197,4 +206,6 @@
 		GrpMAP.put(Obj.SISTAW, Grp.SIS);
 		GrpMAP.put(Obj.SISTAT, Grp.SIS);
+		GrpMAP.put(Obj.CGUSTA, Grp.CGS);
+		GrpMAP.put(Obj.PILBOP, Grp.PLT);
 	}
 
@@ -210,5 +221,6 @@
 		LMK_CHMY, LMK_CARN, LMK_DSHA, LMK_FLGS, LMK_FLRS, LMK_MNMT, LMK_TOWR, LMK_WNDM, LMK_WTRT,
 		LMK_MAST, LMK_WNDS, LMK_CLMN, LMK_OBLK, LMK_STAT, LMK_CROS, LMK_DOME, LMK_SCNR, LMK_WNDL, LMK_SPIR,
-		OFP_OIL, OFP_PRD, OFP_OBS, OFP_ALP, OFP_SALM, OFP_MOR, OFP_ISL, OFP_FPSO, OFP_ACC, OFP_NCCB
+		OFP_OIL, OFP_PRD, OFP_OBS, OFP_ALP, OFP_SALM, OFP_MOR, OFP_ISL, OFP_FPSO, OFP_ACC, OFP_NCCB,
+		PIL_VESS, PIL_HELI, PIL_SHORE
 	}
 
@@ -305,4 +317,7 @@
 		CatSTR.put(Cat.OFP_ACC, "accommodation");
 		CatSTR.put(Cat.OFP_NCCB, "nccb");
+		CatSTR.put(Cat.PIL_VESS, "cruising_vessel");
+		CatSTR.put(Cat.PIL_HELI, "helicopter");
+		CatSTR.put(Cat.PIL_SHORE, "from_shore");
 	}
 
@@ -1141,5 +1156,6 @@
 		case MORFAC:
 		case BOYINB:
-			tmp = true;
+		case PILBOP:
+ 			tmp = true;
 			break;
 		case LNDMRK:
@@ -1898,5 +1914,8 @@
 				break;
 			case OFSPLF:
-				imgStr += "Platform";
+				if (getCategory() == Cat.OFP_FPSO)
+					imgStr += "Storage";
+				else
+					imgStr += "Platform";
 				break;
 			case MORFAC:
@@ -1918,4 +1937,10 @@
 			case BOYINB:
 				imgStr += "Super";
+				break;
+			case CGUSTA:
+				imgStr += "Signal_Station";
+				break;
+			case PILBOP:
+				imgStr += "Pilot";
 				break;
 			}
