Index: /src/org/openstreetmap/josm/Main.java
===================================================================
--- /src/org/openstreetmap/josm/Main.java	(revision 89)
+++ /src/org/openstreetmap/josm/Main.java	(revision 90)
@@ -270,12 +270,4 @@
 		main.setVisible(true);
 
-
-		if (arguments.remove("--show-modifiers")) {
-			Point p = main.getLocationOnScreen();
-			Dimension s = main.getSize();
-			new ShowModifiers(p.x + s.width - 3, p.y + s.height - 32);
-			main.setVisible(true);
-		}
-		
 		if (!arguments.remove("--no-fullscreen")) {
 			if (Toolkit.getDefaultToolkit().isFrameStateSupported(MAXIMIZED_BOTH))
@@ -316,5 +308,12 @@
 			}
 		}
-		
+
+		if (arguments.remove("--show-modifiers")) {
+			Point p = main.getLocationOnScreen();
+			Dimension s = main.getSize();
+			new ShowModifiers(p.x + s.width - 3, p.y + s.height - 32);
+			main.setVisible(true);
+		}
+
 		for (String s : arguments)
 			main.openAction.openFile(new File(s));
Index: /src/org/openstreetmap/josm/actions/UploadAction.java
===================================================================
--- /src/org/openstreetmap/josm/actions/UploadAction.java	(revision 89)
+++ /src/org/openstreetmap/josm/actions/UploadAction.java	(revision 90)
@@ -53,4 +53,11 @@
 			int cutPos = osmDataServer.endsWith("/0.2") ? 4 : 5;
 			Main.pref.put("osm-server.url", osmDataServer.substring(0, osmDataServer.length()-cutPos));
+		}
+		
+		if (!Main.main.getMapFrame().conflictDialog.conflicts.isEmpty()) {
+			JOptionPane.showMessageDialog(Main.main, "There are unresolved conflicts. You have to resolve these first.");
+			Main.main.getMapFrame().conflictDialog.action.button.setSelected(true);
+			Main.main.getMapFrame().conflictDialog.action.actionPerformed(null);
+			return;
 		}
 
Index: /src/org/openstreetmap/josm/actions/mapmode/AddWayAction.java
===================================================================
--- /src/org/openstreetmap/josm/actions/mapmode/AddWayAction.java	(revision 89)
+++ /src/org/openstreetmap/josm/actions/mapmode/AddWayAction.java	(revision 90)
@@ -72,6 +72,6 @@
 		
 		if (numberOfSelectedWays > 0) {
-			String ways = "way" + (numberOfSelectedWays==1?"":"s");
-			int answer = JOptionPane.showConfirmDialog(Main.main, numberOfSelectedWays+" "+ways+" have been selected.\n" +
+			String ways = "way" + (numberOfSelectedWays==1?" has":"s have");
+			int answer = JOptionPane.showConfirmDialog(Main.main, numberOfSelectedWays+" "+ways+" been selected.\n" +
 					"Do you wish to select all segments belonging to the "+ways+" instead?");
 			if (answer == JOptionPane.CANCEL_OPTION)
@@ -83,4 +83,7 @@
 			}
 		}
+		
+		if (segments.isEmpty())
+			return;
 		
 		// sort the segments in best possible order. This is done by:
Index: /src/org/openstreetmap/josm/command/ChangePropertyCommand.java
===================================================================
--- /src/org/openstreetmap/josm/command/ChangePropertyCommand.java	(revision 89)
+++ /src/org/openstreetmap/josm/command/ChangePropertyCommand.java	(revision 90)
@@ -39,9 +39,13 @@
 		super.executeCommand(); // save old
 		if (value == null) {
-			for (OsmPrimitive osm : objects)
+			for (OsmPrimitive osm : objects) {
+				osm.modified = true;
 				osm.remove(key);
+			}
 		} else {
-			for (OsmPrimitive osm : objects)
+			for (OsmPrimitive osm : objects) {
+				osm.modified = true;
 				osm.put(key, value);
+			}
 		}
 	}
Index: /src/org/openstreetmap/josm/command/ConflictResolveCommand.java
===================================================================
--- /src/org/openstreetmap/josm/command/ConflictResolveCommand.java	(revision 89)
+++ /src/org/openstreetmap/josm/command/ConflictResolveCommand.java	(revision 90)
@@ -9,10 +9,9 @@
 import java.util.Map.Entry;
 
-import javax.swing.DefaultListModel;
-
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.conflict.ConflictItem;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.ConflictResolver;
+import org.openstreetmap.josm.gui.dialogs.ConflictDialog;
 
 public class ConflictResolveCommand extends Command {
@@ -21,8 +20,10 @@
 	private final Map<OsmPrimitive, OsmPrimitive> resolved;
 	private Map<OsmPrimitive, OsmPrimitive> origAllConflicts;
+	private final ConflictDialog conflictDialog;
 
 	public ConflictResolveCommand(List<ConflictItem> conflicts, Map<OsmPrimitive, OsmPrimitive> resolved) {
 		this.conflicts = conflicts;
 		this.resolved = resolved;
+		conflictDialog = Main.main.getMapFrame().conflictDialog;
 	}
 
@@ -30,6 +31,5 @@
 		super.executeCommand();
 
-		origAllConflicts = new HashMap<OsmPrimitive, OsmPrimitive>(Main.main.getMapFrame().conflictDialog.conflicts);
-
+		origAllConflicts = new HashMap<OsmPrimitive, OsmPrimitive>(conflictDialog.conflicts);
 		
 		Set<OsmPrimitive> completed = new HashSet<OsmPrimitive>(resolved.keySet());
@@ -44,20 +44,15 @@
 			}
 		}
-		for (OsmPrimitive k : completed) {
-			Main.main.getMapFrame().conflictDialog.conflicts.remove(k);
-			Main.main.getMapFrame().conflictDialog.model.removeElement(k);
-		}
+		for (OsmPrimitive k : completed)
+			conflictDialog.conflicts.remove(k);
+		if (!completed.isEmpty())
+			conflictDialog.rebuildList();
 	}
 
 	@Override public void undoCommand() {
 		super.undoCommand();
-		Map<OsmPrimitive, OsmPrimitive> c = Main.main.getMapFrame().conflictDialog.conflicts;
-		DefaultListModel m = Main.main.getMapFrame().conflictDialog.model;
-
-		c.clear();
-		c.putAll(origAllConflicts);
-		m.removeAllElements();
-		for (Entry<OsmPrimitive, OsmPrimitive> e : c.entrySet())
-			m.addElement(e.getKey());
+		Main.main.getMapFrame().conflictDialog.conflicts.clear();
+		Main.main.getMapFrame().conflictDialog.conflicts.putAll(origAllConflicts);
+		Main.main.getMapFrame().conflictDialog.rebuildList();
 	}
 
Index: /src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
===================================================================
--- /src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 89)
+++ /src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 90)
@@ -1,4 +1,5 @@
 package org.openstreetmap.josm.data.osm;
 
+import java.text.SimpleDateFormat;
 import java.util.Collection;
 import java.util.Collections;
@@ -161,3 +162,7 @@
 		(keys == null ? osm.keys==null : keys.equals(osm.keys));
 	}
+	
+	public String getTimeStr() {
+		return timestamp == null ? null : new SimpleDateFormat("y-M-d H:m:s").format(timestamp);
+	}
 }
Index: /src/org/openstreetmap/josm/gui/IconToggleButton.java
===================================================================
--- /src/org/openstreetmap/josm/gui/IconToggleButton.java	(revision 89)
+++ /src/org/openstreetmap/josm/gui/IconToggleButton.java	(revision 90)
@@ -22,10 +22,7 @@
 		setText(null);
 
-		// Tooltip
-		String toolTipText = "";
 		Object o = action.getValue(Action.SHORT_DESCRIPTION);
 		if (o != null)
-			toolTipText = o.toString();
-		setToolTipText(toolTipText);
+			setToolTipText(o.toString());
 		
 		action.addPropertyChangeListener(this);
Index: /src/org/openstreetmap/josm/gui/MapFrame.java
===================================================================
--- /src/org/openstreetmap/josm/gui/MapFrame.java	(revision 89)
+++ /src/org/openstreetmap/josm/gui/MapFrame.java	(revision 90)
@@ -4,4 +4,5 @@
 import java.awt.Component;
 import java.awt.Container;
+import java.awt.event.ActionEvent;
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
@@ -14,4 +15,5 @@
 import javax.swing.JToolBar;
 
+import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.AutoScaleAction;
 import org.openstreetmap.josm.actions.mapmode.AddSegmentAction;
@@ -116,6 +118,10 @@
 
 	private void addIconToggle(JPanel toggleDialogs, ToggleDialog dlg) {
-        toolBarActions.add(new IconToggleButton(dlg.action));
+        IconToggleButton button = new IconToggleButton(dlg.action);
+        dlg.action.button = button;
+		toolBarActions.add(button);
 		toggleDialogs.add(dlg);
+		if (Main.pref.getBoolean(dlg.action.prefname+".visible"))
+			dlg.action.actionPerformed(new ActionEvent(this, 0, ""));
 	}
 
Index: /src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java
===================================================================
--- /src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 89)
+++ /src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 90)
@@ -44,5 +44,5 @@
 
 	public final Map<OsmPrimitive, OsmPrimitive> conflicts = new HashMap<OsmPrimitive, OsmPrimitive>();
-	public final DefaultListModel model = new DefaultListModel();
+	private final DefaultListModel model = new DefaultListModel();
 	private final JList displaylist = new JList(model);
 
@@ -120,9 +120,20 @@
 	}
 
+	public final void rebuildList() {
+		model.removeAllElements();
+		for (OsmPrimitive osm : this.conflicts.keySet())
+			if (osm instanceof Node)
+				model.addElement(osm);
+		for (OsmPrimitive osm : this.conflicts.keySet())
+			if (osm instanceof Segment)
+				model.addElement(osm);
+		for (OsmPrimitive osm : this.conflicts.keySet())
+			if (osm instanceof Way)
+				model.addElement(osm);
+	}
+	
 	public final void add(Map<OsmPrimitive, OsmPrimitive> conflicts) {
 		this.conflicts.putAll(conflicts);
-		model.removeAllElements();
-		for (OsmPrimitive osm : this.conflicts.keySet())
-			model.addElement(osm);
+		rebuildList();
 	}
 
Index: /src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
===================================================================
--- /src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 89)
+++ /src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 90)
@@ -117,5 +117,4 @@
 				};
 				pane.createDialog(Main.main, "Search").setVisible(true);
-				System.out.println(pane.getValue());
 				if (!Integer.valueOf(JOptionPane.OK_OPTION).equals(pane.getValue()))
 					return;
Index: /src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java
===================================================================
--- /src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java	(revision 89)
+++ /src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java	(revision 90)
@@ -2,5 +2,4 @@
 
 import java.awt.BorderLayout;
-import java.awt.EventQueue;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
@@ -23,9 +22,26 @@
 public class ToggleDialog extends JPanel {
 
+	public final class ToggleDialogAction extends JosmAction {
+	    public final String prefname;
+	    public AbstractButton button;
+
+	    private ToggleDialogAction(String name, String iconName, String tooltip, String shortcut, KeyStroke cut, String prefname) {
+		    super(name, iconName, tooltip, shortcut, cut);
+		    this.prefname = prefname;
+	    }
+
+	    public void actionPerformed(ActionEvent e) {
+	    	if (e != null && !(e.getSource() instanceof AbstractButton))
+	    		button.setSelected(!button.isSelected());
+	    	setVisible(button.isSelected());
+	        Main.pref.put(prefname+".visible", button.isSelected());
+	    }
+    }
+
 	/**
 	 * The action to toggle this dialog.
 	 */
-	public JosmAction action;
-	
+	public ToggleDialogAction action;
+
 	/**
 	 * Create a new ToggleDialog.
@@ -34,25 +50,9 @@
 	 */
 	public ToggleDialog(String title, String name, String iconName, String tooltip, String shortCutName, int shortCut, final String prefName) {
-		action = new JosmAction(name, "dialogs/"+iconName, tooltip, "Alt-"+shortCutName, KeyStroke.getKeyStroke(shortCut, KeyEvent.ALT_MASK)){
-			public void actionPerformed(ActionEvent e) {
-				boolean show = !isVisible();
-				if (e != null && e.getSource() instanceof AbstractButton)
-					show = ((AbstractButton)e.getSource()).isSelected();
-				setVisible(show);
-                Main.pref.put(prefName+".visible", show);
-			}
-		};
+		action = new ToggleDialogAction(name, "dialogs/"+iconName, tooltip, "Alt-"+shortCutName, KeyStroke.getKeyStroke(shortCut, KeyEvent.ALT_MASK), prefName);
 		setLayout(new BorderLayout());
 		add(new JLabel(title), BorderLayout.NORTH);
 		setVisible(false);
 		setBorder(BorderFactory.createEtchedBorder());
-		if (Main.pref.getBoolean(prefName+".visible")) {
-		    EventQueue.invokeLater(new Runnable(){
-		        public void run() {
-		        	action.putValue("active", true);
-		            action.actionPerformed(null);
-		        }
-		    });
-        }
 	}
 }
Index: /src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- /src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 89)
+++ /src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 90)
@@ -3,4 +3,5 @@
 import java.awt.Graphics;
 import java.awt.GridBagLayout;
+import java.awt.event.ActionEvent;
 import java.util.Collection;
 import java.util.HashSet;
@@ -13,4 +14,5 @@
 import javax.swing.JLabel;
 import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JPopupMenu;
@@ -30,4 +32,5 @@
 import org.openstreetmap.josm.data.osm.visitor.Visitor;
 import org.openstreetmap.josm.gui.MapView;
+import org.openstreetmap.josm.gui.dialogs.ConflictDialog;
 import org.openstreetmap.josm.gui.dialogs.LayerListPopup;
 import org.openstreetmap.josm.tools.GBC;
@@ -159,5 +162,9 @@
 		if (visitor.conflicts.isEmpty())
 			return;
-		Main.main.getMapFrame().conflictDialog.add(visitor.conflicts);
+		ConflictDialog dlg = Main.main.getMapFrame().conflictDialog;
+		dlg.add(visitor.conflicts);
+		JOptionPane.showMessageDialog(Main.main, "There were conflicts during import.");
+		if (!dlg.isVisible())
+			dlg.action.actionPerformed(new ActionEvent(this, 0, ""));
 	}
 
Index: /src/org/openstreetmap/josm/io/OsmWriter.java
===================================================================
--- /src/org/openstreetmap/josm/io/OsmWriter.java	(revision 89)
+++ /src/org/openstreetmap/josm/io/OsmWriter.java	(revision 90)
@@ -3,12 +3,11 @@
 import java.io.PrintWriter;
 import java.io.Writer;
-import java.text.SimpleDateFormat;
 import java.util.HashMap;
 import java.util.Map.Entry;
 
 import org.openstreetmap.josm.data.osm.DataSet;
-import org.openstreetmap.josm.data.osm.Segment;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Segment;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.visitor.Visitor;
@@ -138,5 +137,5 @@
 		}
 		if (osm.timestamp != null) {
-			String time = new SimpleDateFormat("y-M-d H:m:s").format(osm.timestamp);
+			String time = osm.getTimeStr();
 			out.print(" timestamp='"+time+"'");
 		}
Index: /src/org/openstreetmap/josm/tools/SearchCompiler.java
===================================================================
--- /src/org/openstreetmap/josm/tools/SearchCompiler.java	(revision 89)
+++ /src/org/openstreetmap/josm/tools/SearchCompiler.java	(revision 90)
@@ -6,7 +6,7 @@
 import java.util.Map.Entry;
 
-import org.openstreetmap.josm.data.osm.Segment;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Segment;
 import org.openstreetmap.josm.data.osm.Way;
 
@@ -71,12 +71,16 @@
 		public KeyValue(String key, String value, boolean notValue) {this.key = key; this.value = value; this.notValue = notValue;}
 		@Override public boolean match(OsmPrimitive osm) {
-			String value = osm.get(key);
+			String value = null;
+			if (key.equals("timestamp"))
+				value = osm.getTimeStr();
+			else
+				value = osm.get(key);
 			if (value == null)
-				return false;
+				return notValue;
 			return (value.indexOf(this.value) != -1) != notValue;
 		}
 		@Override public String toString() {return key+"="+(notValue?"!":"")+value;}
 	}
-	
+
 	private static class Any extends Match {
 		private String s;
