Index: src/org/openstreetmap/josm/data/ServerSidePreferences.java
===================================================================
--- src/org/openstreetmap/josm/data/ServerSidePreferences.java	(revision 198)
+++ src/org/openstreetmap/josm/data/ServerSidePreferences.java	(revision 199)
@@ -15,4 +15,6 @@
 import java.util.Collection;
 import java.util.Collections;
+import java.util.LinkedList;
+import java.util.StringTokenizer;
 import java.util.Map.Entry;
 
@@ -119,12 +121,12 @@
 		if (!properties.containsKey("osm-server.password") && password != null)
 			properties.put("osm-server.password", password);
-        Reader in = new StringReader(connection.download());
+		Reader in = new StringReader(connection.download());
 		try {
-	        XmlObjectParser.Uniform<Prop> parser = new XmlObjectParser.Uniform<Prop>(in, "tag", Prop.class);
-	        for (Prop p : parser)
-	        	properties.put(p.key, p.value);
-        } catch (RuntimeException e) {
-	        e.printStackTrace();
-        }
+			XmlObjectParser.Uniform<Prop> parser = new XmlObjectParser.Uniform<Prop>(in, "tag", Prop.class);
+			for (Prop p : parser)
+				properties.put(p.key, p.value);
+		} catch (RuntimeException e) {
+			e.printStackTrace();
+		}
 	}
 
@@ -138,4 +140,6 @@
 		StringBuilder b = new StringBuilder("<preferences>\n");
 		for (Entry<String, String> p : properties.entrySet()) {
+			if (p.getKey().equals("osm-server.password"))
+				continue; // do not upload password. It would get stored in plain!
 			b.append("<tag key='");
 			b.append(XmlWriter.encode(p.getKey()));
@@ -149,5 +153,30 @@
 
 	@Override public Collection<Bookmark> loadBookmarks() {
-		return Collections.<Bookmark>emptyList();
+		try {
+			Collection<Bookmark> bookmarks;
+			BufferedReader in = new BufferedReader(new InputStreamReader(new URL("http://"+connection.serverUrl.getHost()+"/josm/bookmarks").openStream()));
+			bookmarks = new LinkedList<Bookmark>();
+			for (String line = in.readLine(); line != null; line = in.readLine()) {
+				StringTokenizer st = new StringTokenizer(line, ",");
+				if (st.countTokens() < 5)
+					continue;
+				Bookmark b = new Bookmark();
+				b.name = st.nextToken();
+				try {
+					for (int i = 0; i < b.latlon.length; ++i)
+						b.latlon[i] = Double.parseDouble(st.nextToken());
+					bookmarks.add(b);
+				} catch (NumberFormatException x) {
+					// line not parsed
+				}
+			}
+			in.close();
+			return bookmarks;
+		} catch (MalformedURLException e) {
+			e.printStackTrace();
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		return Collections.emptyList();
 	}
 
Index: src/org/openstreetmap/josm/gui/MainApplet.java
===================================================================
--- src/org/openstreetmap/josm/gui/MainApplet.java	(revision 198)
+++ src/org/openstreetmap/josm/gui/MainApplet.java	(revision 199)
@@ -53,5 +53,6 @@
 	};
 
-	private Map<String, Collection<String>> args = new HashMap<String, Collection<String>>(); 
+	private Map<String, Collection<String>> args = new HashMap<String, Collection<String>>();
+	private UploadPreferencesAction uploadPreferences = new UploadPreferencesAction(); 
 
 	@Override public String[][] getParameterInfo() {
@@ -99,5 +100,5 @@
 		// remove offending stuff from JOSM (that would break the SecurityManager)
 		m.remove(m.fileMenu);
-		m.editMenu.add(new UploadPreferencesAction());
+		m.editMenu.add(uploadPreferences);
 		m.open.setEnabled(false);
 		m.exit.setEnabled(false);
Index: src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java	(revision 198)
+++ src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java	(revision 199)
@@ -78,5 +78,5 @@
 			public void actionPerformed(ActionEvent e) {
 				final JFrame f = new JFrame(name);
-				f.setAlwaysOnTop(true);
+				try {f.setAlwaysOnTop(true);} catch (SecurityException e1) {}
 				parent.remove(ToggleDialog.this);
 				f.getContentPane().add(ToggleDialog.this);
Index: src/org/openstreetmap/josm/plugins/Plugin.java
===================================================================
--- src/org/openstreetmap/josm/plugins/Plugin.java	(revision 198)
+++ src/org/openstreetmap/josm/plugins/Plugin.java	(revision 199)
@@ -42,7 +42,9 @@
 	public Plugin() {
 		URL[] urls = ((URLClassLoader)getClass().getClassLoader()).getURLs();
-		String s = urls[urls.length-1].toString();
-		int lastSlash = s.lastIndexOf('/');
-		name = s.substring(lastSlash+1, s.length()-4);
+		name = urls[urls.length-1].toString();
+		if (name.toLowerCase().endsWith(".jar")) {
+			int lastSlash = name.lastIndexOf('/');
+			name = name.substring(lastSlash+1, name.length()-4);
+		}
     }
 
