Index: /applications/editors/josm/plugins/smed2/js57toosm/src/js57toosm/Js57toosm.java
===================================================================
--- /applications/editors/josm/plugins/smed2/js57toosm/src/js57toosm/Js57toosm.java	(revision 30323)
+++ /applications/editors/josm/plugins/smed2/js57toosm/src/js57toosm/Js57toosm.java	(revision 30324)
@@ -167,5 +167,5 @@
 		out.println("</osm>\n");
 		out.close();
-		System.out.println("Finished");
+		System.err.println("Finished");
 	}
 	
Index: /applications/editors/josm/plugins/smed2/src/panels/PanelS57.java
===================================================================
--- /applications/editors/josm/plugins/smed2/src/panels/PanelS57.java	(revision 30323)
+++ /applications/editors/josm/plugins/smed2/src/panels/PanelS57.java	(revision 30324)
@@ -41,5 +41,5 @@
 	ArrayList<Obj> types = new ArrayList<Obj>();
 	S57map map;
-	ArrayList<Long> done = new ArrayList<Long>();
+	HashMap<Long, Long> done = new HashMap<Long, Long>();
 	
 	public PanelS57() {
@@ -82,10 +82,10 @@
 							Snode snode;
 							while ((snode = map.nodes.get(ref)) != null) {
-								if (!done.contains(ref)) {
-									Node node = new Node(ref, 1);
+								if (!done.containsKey(ref)) {
+									Node node = new Node(0, 1);
 									node.setCoor((new LatLon(Math.toDegrees(snode.lat), Math.toDegrees(snode.lon))));
 									data.addPrimitive(node);
 									addKeys(node, feature, type);
-									done.add(ref);
+									done.put(ref, node.getUniqueId());
 								}
 								ref++;
@@ -110,9 +110,9 @@
 									long ref = git.nextRef();
 									Snode snode = map.nodes.get(ref);
-									if (!done.contains(ref)) {
-										Node node = new Node(ref, 1);
+									if (!done.containsKey(ref)) {
+										Node node = new Node(0, 1);
 										node.setCoor((new LatLon(Math.toDegrees(snode.lat), Math.toDegrees(snode.lon))));
 										data.addPrimitive(node);
-										done.add(ref);
+										done.put(ref, node.getUniqueId());
 									}
 								}
@@ -122,5 +122,5 @@
 						while (git.hasComp()) {
 							long edge = git.nextComp();
-							Way way = new Way(edge, 1);
+							Way way = new Way(0, 1);
 							data.addPrimitive(way);
 							while (git.hasEdge()) {
@@ -128,5 +128,5 @@
 								while (git.hasNode()) {
 									long ref = git.nextRef();
-									way.addNode((Node)data.getPrimitiveById(ref, OsmPrimitiveType.NODE));
+									way.addNode((Node)data.getPrimitiveById(done.get(ref), OsmPrimitiveType.NODE));
 								}
 							}
@@ -142,9 +142,9 @@
 									long ref = git.nextRef();
 									Snode snode = map.nodes.get(ref);
-									if (!done.contains(ref)) {
-										Node node = new Node(ref, 1);
+									if (!done.containsKey(ref)) {
+										Node node = new Node(0, 1);
 										node.setCoor((new LatLon(Math.toDegrees(snode.lat), Math.toDegrees(snode.lon))));
 										data.addPrimitive(node);
-										done.add(ref);
+										done.put(ref, node.getUniqueId());
 									}
 								}
@@ -154,5 +154,6 @@
 						while (git.hasComp()) {
 							long ref = git.nextComp();
-							Way way = new Way(ref, 1);
+							Way way = new Way(0, 1);
+							done.put(ref, way.getUniqueId());
 							data.addPrimitive(way);
 							while (git.hasEdge()) {
@@ -160,9 +161,9 @@
 								while (git.hasNode()) {
 									ref = git.nextRef();
-									way.addNode((Node) data.getPrimitiveById(ref, OsmPrimitiveType.NODE));
-								}
-							}
-						}
-						Relation rel = new Relation(map.ref++, 1);
+									way.addNode((Node) data.getPrimitiveById(done.get(ref), OsmPrimitiveType.NODE));
+								}
+							}
+						}
+						Relation rel = new Relation(0, 1);
 						data.addPrimitive(rel);
 						git = map.new GeomIterator(feature.geom);
@@ -171,7 +172,7 @@
 							long ref = git.nextComp();
 							if (outers-- > 0) {
-								rel.addMember(new RelationMember("outer", (Way) data.getPrimitiveById(ref, OsmPrimitiveType.WAY)));
+								rel.addMember(new RelationMember("outer", (Way) data.getPrimitiveById(done.get(ref), OsmPrimitiveType.WAY)));
 							} else {
-								rel.addMember(new RelationMember("inner", (Way) data.getPrimitiveById(ref, OsmPrimitiveType.WAY)));
+								rel.addMember(new RelationMember("inner", (Way) data.getPrimitiveById(done.get(ref), OsmPrimitiveType.WAY)));
 							}
 						}
