Index: applications/editors/josm/plugins/smed2/src/seamap/Map.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/seamap/Map.java	(revision 29152)
+++ applications/editors/josm/plugins/smed2/src/seamap/Map.java	(revision 29153)
@@ -38,5 +38,4 @@
 
 	public class Feature {
-		public long id;
 		public Fflag flag;
 		public ArrayList<Long> refs;
@@ -50,5 +49,4 @@
 		
 		void clean() {
-			id = 0;
 			flag = Fflag.UNKN;
 			refs = new ArrayList<Long>();
Index: applications/editors/josm/plugins/smed2/src/smed2/Smed2Action.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/smed2/Smed2Action.java	(revision 29152)
+++ applications/editors/josm/plugins/smed2/src/smed2/Smed2Action.java	(revision 29153)
@@ -41,40 +41,40 @@
 		@Override
 		public void dataChanged(DataChangedEvent e) {
-			System.out.println(e);
+			reMap();
 		}
 
 		@Override
 		public void nodeMoved(NodeMovedEvent e) {
-			System.out.println(e);
+			reMap();
 		}
 
 		@Override
 		public void otherDatasetChange(AbstractDatasetChangedEvent e) {
-			System.out.println(e);
+			reMap();
 		}
 
 		@Override
 		public void primitivesAdded(PrimitivesAddedEvent e) {
-			System.out.println(e);
+			reMap();
 		}
 
 		@Override
 		public void primitivesRemoved(PrimitivesRemovedEvent e) {
-			System.out.println(e);
+			reMap();
 		}
 
 		@Override
 		public void relationMembersChanged(RelationMembersChangedEvent e) {
-			System.out.println(e);
+			reMap();
 		}
 
 		@Override
 		public void tagsChanged(TagsChangedEvent e) {
-			System.out.println(e);
+			reMap();
 		}
 
 		@Override
 		public void wayNodesChanged(WayNodesChangedEvent e) {
-			System.out.println(e);
+			reMap();
 		}
 	};
@@ -143,15 +143,5 @@
 			newLayer.data.addDataSetListener(dataSetListener);
 			data = newLayer.data.allPrimitives();
-			map = new Map();
-			for (OsmPrimitive osm : data) {
-				if (osm instanceof Node) {
-					map.addNode(((Node)osm).getId(), ((Node)osm).getCoor().lat(), ((Node)osm).getCoor().lon());
-				} else if (osm instanceof Way) {
-					map.addWay(((Way)osm).getId());
-				}
-				for (Entry<String, String> entry : osm.getKeys().entrySet()) {
-					map.addTag(entry.getKey(), entry.getValue());
-				}
-			}
+			reMap();
  		} else {
 			data = null;
@@ -165,4 +155,22 @@
 
 	}
+	
+	void reMap() {
+		map = new Map();
+		for (OsmPrimitive osm : data) {
+			if (osm instanceof Node) {
+				map.addNode(((Node)osm).getId(), ((Node)osm).getCoor().lat(), ((Node)osm).getCoor().lon());
+			} else if (osm instanceof Way) {
+				map.addWay(((Way)osm).getId());
+				for (Node node : ((Way)osm).getNodes()) {
+					map.addToWay(((Way)osm).getUniqueId(), node.getUniqueId());
+				}
+			}
+			for (Entry<String, String> entry : osm.getKeys().entrySet()) {
+				map.addTag(entry.getKey(), entry.getValue());
+			}
+		}
+	
+	}
 
 }
