Index: src/org/openstreetmap/josm/Main.java
===================================================================
--- src/org/openstreetmap/josm/Main.java	(revision 53)
+++ src/org/openstreetmap/josm/Main.java	(revision 54)
@@ -9,4 +9,5 @@
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
+import java.io.File;
 import java.util.Arrays;
 import java.util.Collection;
@@ -73,4 +74,10 @@
 	public final UndoAction undoAction;
 	public final RedoAction redoAction;
+
+	/**
+	 * This directory is used for all disc IO access as starting directory. Should
+	 * be set accordingly after the IO action.
+	 */
+	public File currentDirectory = new File(".");
 	
 	/**
Index: src/org/openstreetmap/josm/actions/OpenAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/OpenAction.java	(revision 53)
+++ src/org/openstreetmap/josm/actions/OpenAction.java	(revision 54)
@@ -43,5 +43,5 @@
 
 	public void actionPerformed(ActionEvent e) {
-		JFileChooser fc = new JFileChooser("data");
+		JFileChooser fc = new JFileChooser(Main.main.currentDirectory);
 		for (int i = 0; i < ExtensionFileFilter.filters.length; ++i)
 			fc.addChoosableFileFilter(ExtensionFileFilter.filters[i]);
@@ -50,4 +50,6 @@
 		if (fc.showOpenDialog(Main.main) != JFileChooser.APPROVE_OPTION)
 			return;
+		
+		Main.main.currentDirectory = fc.getCurrentDirectory();
 
 		File filename = fc.getSelectedFile();
Index: src/org/openstreetmap/josm/actions/SaveAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/SaveAction.java	(revision 53)
+++ src/org/openstreetmap/josm/actions/SaveAction.java	(revision 54)
@@ -42,5 +42,5 @@
 			return;
 
-		JFileChooser fc = new JFileChooser("data");
+		JFileChooser fc = new JFileChooser(Main.main.currentDirectory);
 		for (int i = 0; i < ExtensionFileFilter.filters.length; ++i)
 			fc.addChoosableFileFilter(ExtensionFileFilter.filters[i]);
@@ -49,4 +49,8 @@
 		File file = fc.getSelectedFile();
 		if (file == null)
+			return;
+		Main.main.currentDirectory = fc.getCurrentDirectory();
+		if (file.exists() && JOptionPane.YES_OPTION != 
+				JOptionPane.showConfirmDialog(Main.main, "File exists. Overwrite?", "Overwrite", JOptionPane.YES_NO_OPTION))
 			return;
 
Index: src/org/openstreetmap/josm/io/OsmWriter.java
===================================================================
--- src/org/openstreetmap/josm/io/OsmWriter.java	(revision 53)
+++ src/org/openstreetmap/josm/io/OsmWriter.java	(revision 54)
@@ -83,8 +83,8 @@
 	 * Create a properties element.
 	 */
-	private Element parseProperty(OsmPrimitive osm, Entry<Key, String> entry) {
+	private Element parseProperty(OsmPrimitive osm, long id, Entry<Key, String> entry) {
 		Element e = new Element("property");
 		Key key = entry.getKey();
-		e.setAttribute("uid", ""+osm.id);
+		e.setAttribute("uid", ""+id);
 		e.setAttribute("key", key.name);
 		e.setAttribute("value", entry.getValue());
@@ -104,5 +104,5 @@
 		if (osm.keys != null)
 			for (Entry<Key, String> entry : osm.keys.entrySet())
-				properties.add(parseProperty(osm, entry));
+				properties.add(parseProperty(osm, id, entry));
 		if (osm.isDeleted())
 			e.setAttribute("action", "delete");
