diff --git a/src/org/openstreetmap/josm/data/osm/Changeset.java b/src/org/openstreetmap/josm/data/osm/Changeset.java
index 5abc6d4..fc1af76 100644
--- a/src/org/openstreetmap/josm/data/osm/Changeset.java
+++ b/src/org/openstreetmap/josm/data/osm/Changeset.java
@@ -87,6 +87,13 @@ public final class Changeset implements Tagged {
         }
     }
 
+    public static Changeset fromPrimitive(final OsmPrimitive p) {
+        final Changeset changeset = new Changeset(p.getChangesetId());
+        changeset.setUser(p.getUser());
+        changeset.setCreatedAt(p.getTimestamp()); // not accurate in all cases
+        return changeset;
+    }
+
     public void visit(Visitor v) {
         v.visit(this);
     }
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java b/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java
index 03b634c..8e0d2b7 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java
@@ -26,6 +26,7 @@ import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.conflict.ConflictColors;
 import org.openstreetmap.josm.gui.conflict.pair.IConflictResolver;
 import org.openstreetmap.josm.gui.conflict.pair.MergeDecisionType;
+import org.openstreetmap.josm.gui.history.VersionInfoPanel;
 import org.openstreetmap.josm.tools.ImageProvider;
 
 /**
@@ -47,6 +48,8 @@ public class PropertiesMerger extends JPanel implements Observer, IConflictResol
     private JLabel lblTheirReferrers;
 
     private final transient PropertiesMergeModel model;
+    private final VersionInfoPanel mineVersionInfo = new VersionInfoPanel();
+    private final VersionInfoPanel theirVersionInfo = new VersionInfoPanel();
 
     /**
      * Constructs a new {@code PropertiesMerger}.
@@ -77,30 +80,39 @@ public class PropertiesMerger extends JPanel implements Observer, IConflictResol
         gc.anchor = GridBagConstraints.CENTER;
         gc.weightx = 0.0;
         gc.weighty = 0.0;
-        gc.insets = new Insets(10, 0, 10, 0);
+        gc.insets = new Insets(10, 0, 0, 0);
         JLabel lblMyVersion = new JLabel(tr("My version"));
         lblMyVersion.setToolTipText(tr("Properties in my dataset, i.e. the local dataset"));
         add(lblMyVersion, gc);
 
         gc.gridx = 3;
-        gc.gridy = 0;
         JLabel lblMergedVersion = new JLabel(tr("Merged version"));
         lblMergedVersion.setToolTipText(
                 tr("Properties in the merged element. They will replace properties in my elements when merge decisions are applied."));
         add(lblMergedVersion, gc);
 
         gc.gridx = 5;
-        gc.gridy = 0;
         JLabel lblTheirVersion = new JLabel(tr("Their version"));
         lblTheirVersion.setToolTipText(tr("Properties in their dataset, i.e. the server dataset"));
         add(lblTheirVersion, gc);
+
+        gc.gridx = 1;
+        gc.gridy = 1;
+        gc.fill = GridBagConstraints.HORIZONTAL;
+        gc.anchor = GridBagConstraints.LINE_START;
+        gc.insets = new Insets(0, 0, 20, 0);
+        add(mineVersionInfo, gc);
+
+        gc.gridx = 5;
+        add(theirVersionInfo, gc);
+
     }
 
     protected void buildCoordinateConflictRows() {
         GridBagConstraints gc = new GridBagConstraints();
 
         gc.gridx = 0;
-        gc.gridy = 1;
+        gc.gridy = 2;
         gc.gridwidth = 1;
         gc.gridheight = 1;
         gc.fill = GridBagConstraints.HORIZONTAL;
@@ -111,7 +123,6 @@ public class PropertiesMerger extends JPanel implements Observer, IConflictResol
         add(new JLabel(tr("Coordinates:")), gc);
 
         gc.gridx = 1;
-        gc.gridy = 1;
         gc.fill = GridBagConstraints.BOTH;
         gc.anchor = GridBagConstraints.CENTER;
         gc.weightx = 0.33;
@@ -119,7 +130,6 @@ public class PropertiesMerger extends JPanel implements Observer, IConflictResol
         add(lblMyCoordinates = buildValueLabel("label.mycoordinates"), gc);
 
         gc.gridx = 2;
-        gc.gridy = 1;
         gc.fill = GridBagConstraints.NONE;
         gc.anchor = GridBagConstraints.CENTER;
         gc.weightx = 0.0;
@@ -131,7 +141,6 @@ public class PropertiesMerger extends JPanel implements Observer, IConflictResol
         add(btnKeepMyCoordinates, gc);
 
         gc.gridx = 3;
-        gc.gridy = 1;
         gc.fill = GridBagConstraints.BOTH;
         gc.anchor = GridBagConstraints.CENTER;
         gc.weightx = 0.33;
@@ -139,7 +148,6 @@ public class PropertiesMerger extends JPanel implements Observer, IConflictResol
         add(lblMergedCoordinates = buildValueLabel("label.mergedcoordinates"), gc);
 
         gc.gridx = 4;
-        gc.gridy = 1;
         gc.fill = GridBagConstraints.NONE;
         gc.anchor = GridBagConstraints.CENTER;
         gc.weightx = 0.0;
@@ -150,7 +158,6 @@ public class PropertiesMerger extends JPanel implements Observer, IConflictResol
         add(btnKeepTheirCoordinates, gc);
 
         gc.gridx = 5;
-        gc.gridy = 1;
         gc.fill = GridBagConstraints.BOTH;
         gc.anchor = GridBagConstraints.CENTER;
         gc.weightx = 0.33;
@@ -159,7 +166,7 @@ public class PropertiesMerger extends JPanel implements Observer, IConflictResol
 
         // ---------------------------------------------------
         gc.gridx = 3;
-        gc.gridy = 2;
+        gc.gridy = 3;
         gc.fill = GridBagConstraints.NONE;
         gc.anchor = GridBagConstraints.CENTER;
         gc.weightx = 0.0;
@@ -174,7 +181,7 @@ public class PropertiesMerger extends JPanel implements Observer, IConflictResol
         GridBagConstraints gc = new GridBagConstraints();
 
         gc.gridx = 0;
-        gc.gridy = 3;
+        gc.gridy = 4;
         gc.gridwidth = 1;
         gc.gridheight = 1;
         gc.fill = GridBagConstraints.BOTH;
@@ -185,7 +192,6 @@ public class PropertiesMerger extends JPanel implements Observer, IConflictResol
         add(new JLabel(tr("Deleted State:")), gc);
 
         gc.gridx = 1;
-        gc.gridy = 3;
         gc.fill = GridBagConstraints.BOTH;
         gc.anchor = GridBagConstraints.CENTER;
         gc.weightx = 0.33;
@@ -193,7 +199,6 @@ public class PropertiesMerger extends JPanel implements Observer, IConflictResol
         add(lblMyDeletedState = buildValueLabel("label.mydeletedstate"), gc);
 
         gc.gridx = 2;
-        gc.gridy = 3;
         gc.fill = GridBagConstraints.NONE;
         gc.anchor = GridBagConstraints.CENTER;
         gc.weightx = 0.0;
@@ -205,7 +210,6 @@ public class PropertiesMerger extends JPanel implements Observer, IConflictResol
         add(btnKeepMyDeletedState, gc);
 
         gc.gridx = 3;
-        gc.gridy = 3;
         gc.fill = GridBagConstraints.BOTH;
         gc.anchor = GridBagConstraints.CENTER;
         gc.weightx = 0.33;
@@ -213,7 +217,6 @@ public class PropertiesMerger extends JPanel implements Observer, IConflictResol
         add(lblMergedDeletedState = buildValueLabel("label.mergeddeletedstate"), gc);
 
         gc.gridx = 4;
-        gc.gridy = 3;
         gc.fill = GridBagConstraints.NONE;
         gc.anchor = GridBagConstraints.CENTER;
         gc.weightx = 0.0;
@@ -225,7 +228,6 @@ public class PropertiesMerger extends JPanel implements Observer, IConflictResol
         add(btnKeepTheirDeletedState, gc);
 
         gc.gridx = 5;
-        gc.gridy = 3;
         gc.fill = GridBagConstraints.BOTH;
         gc.anchor = GridBagConstraints.CENTER;
         gc.weightx = 0.33;
@@ -234,7 +236,7 @@ public class PropertiesMerger extends JPanel implements Observer, IConflictResol
 
         // ---------------------------------------------------
         gc.gridx = 3;
-        gc.gridy = 4;
+        gc.gridy = 5;
         gc.fill = GridBagConstraints.NONE;
         gc.anchor = GridBagConstraints.CENTER;
         gc.weightx = 0.0;
@@ -506,5 +508,7 @@ public class PropertiesMerger extends JPanel implements Observer, IConflictResol
     @Override
     public void populate(Conflict<? extends OsmPrimitive> conflict) {
         model.populate(conflict);
+        mineVersionInfo.update(conflict.getMy(), true);
+        theirVersionInfo.update(conflict.getTheir(), false);
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMerger.java b/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMerger.java
index a7cfcf5..8b6fa24 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMerger.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMerger.java
@@ -30,6 +30,7 @@ import org.openstreetmap.josm.data.conflict.Conflict;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.conflict.pair.IConflictResolver;
 import org.openstreetmap.josm.gui.conflict.pair.MergeDecisionType;
+import org.openstreetmap.josm.gui.history.VersionInfoPanel;
 import org.openstreetmap.josm.tools.ImageProvider;
 
 /**
@@ -42,6 +43,8 @@ public class TagMerger extends JPanel implements IConflictResolver {
     private JTable mergedTable;
     private JTable theirTable;
     private final TagMergeModel model;
+    private final VersionInfoPanel mineVersionInfo = new VersionInfoPanel();
+    private final VersionInfoPanel theirVersionInfo = new VersionInfoPanel();
     private transient AdjustmentSynchronizer adjustmentSynchronizer;
 
     /**
@@ -130,7 +133,7 @@ public class TagMerger extends JPanel implements IConflictResolver {
         gc.anchor = GridBagConstraints.CENTER;
         gc.weightx = 0.0;
         gc.weighty = 0.0;
-        gc.insets = new Insets(10, 0, 10, 0);
+        gc.insets = new Insets(10, 0, 0, 0);
         JLabel lblMy = new JLabel(tr("My version (local dataset)"));
         add(lblMy, gc);
 
@@ -153,24 +156,37 @@ public class TagMerger extends JPanel implements IConflictResolver {
         gc.anchor = GridBagConstraints.CENTER;
         gc.weightx = 0.0;
         gc.weighty = 0.0;
-        gc.insets = new Insets(0, 0, 0, 0);
         JLabel lblTheir = new JLabel(tr("Their version (server dataset)"));
         add(lblTheir, gc);
 
         gc.gridx = 0;
         gc.gridy = 1;
+        gc.fill = GridBagConstraints.HORIZONTAL;
+        gc.anchor = GridBagConstraints.FIRST_LINE_START;
+        gc.insets = new Insets(0, 0, 20, 0);
+        add(mineVersionInfo, gc);
+
+        gc.gridx = 4;
+        gc.gridy = 1;
+        gc.fill = GridBagConstraints.HORIZONTAL;
+        gc.anchor = GridBagConstraints.FIRST_LINE_START;
+        add(theirVersionInfo, gc);
+
+        gc.gridx = 0;
+        gc.gridy = 2;
         gc.gridwidth = 1;
         gc.gridheight = 1;
         gc.fill = GridBagConstraints.BOTH;
         gc.anchor = GridBagConstraints.FIRST_LINE_START;
         gc.weightx = 0.3;
         gc.weighty = 1.0;
+        gc.insets = new Insets(0, 0, 0, 0);
         JScrollPane tabMy = buildMineTagTable();
         lblMy.setLabelFor(tabMy);
         add(tabMy, gc);
 
         gc.gridx = 1;
-        gc.gridy = 1;
+        gc.gridy = 2;
         gc.gridwidth = 1;
         gc.gridheight = 1;
         gc.fill = GridBagConstraints.NONE;
@@ -184,7 +200,7 @@ public class TagMerger extends JPanel implements IConflictResolver {
         add(btnKeepMine, gc);
 
         gc.gridx = 2;
-        gc.gridy = 1;
+        gc.gridy = 2;
         gc.gridwidth = 1;
         gc.gridheight = 1;
         gc.fill = GridBagConstraints.BOTH;
@@ -196,7 +212,7 @@ public class TagMerger extends JPanel implements IConflictResolver {
         add(tabMerge, gc);
 
         gc.gridx = 3;
-        gc.gridy = 1;
+        gc.gridy = 2;
         gc.gridwidth = 1;
         gc.gridheight = 1;
         gc.fill = GridBagConstraints.NONE;
@@ -209,7 +225,7 @@ public class TagMerger extends JPanel implements IConflictResolver {
         add(btnKeepTheir, gc);
 
         gc.gridx = 4;
-        gc.gridy = 1;
+        gc.gridy = 2;
         gc.gridwidth = 1;
         gc.gridheight = 1;
         gc.fill = GridBagConstraints.BOTH;
@@ -441,5 +457,7 @@ public class TagMerger extends JPanel implements IConflictResolver {
             int index = table.getRowCount() > 0 ? 0 : -1;
             table.getSelectionModel().setSelectionInterval(index, index);
         }
+        mineVersionInfo.update(conflict.getMy(), true);
+        theirVersionInfo.update(conflict.getTheir(), false);
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java b/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java
index 1f3ec85..2199452 100644
--- a/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java
+++ b/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java
@@ -12,6 +12,7 @@ import java.awt.Insets;
 import java.awt.event.ActionEvent;
 import java.text.DateFormat;
 import java.util.Collections;
+import java.util.Date;
 import java.util.Observable;
 import java.util.Observer;
 
@@ -133,25 +134,22 @@ public class VersionInfoPanel extends JPanel implements Observer {
         return model.getPointInTime(pointInTimeType);
     }
 
-    protected String getInfoText() {
-        HistoryOsmPrimitive primitive = getPrimitive();
-        if (primitive == null)
-            return "";
+    protected String getInfoText(final Date timestamp, final long version, final boolean isLatest) {
         String text;
-        if (model.isLatest(primitive)) {
+        if (isLatest) {
             OsmDataLayer editLayer = Main.main.getEditLayer();
             text = tr("<html>Version <strong>{0}</strong> currently edited in layer ''{1}''</html>",
-                    Long.toString(primitive.getVersion()),
+                    Long.toString(version),
                     editLayer == null ? tr("unknown") : editLayer.getName()
                     );
         } else {
             String date = "?";
-            if (primitive.getTimestamp() != null) {
-                date = DateUtils.formatDateTime(primitive.getTimestamp(), DateFormat.SHORT, DateFormat.SHORT);
+            if (timestamp != null) {
+                date = DateUtils.formatDateTime(timestamp, DateFormat.SHORT, DateFormat.SHORT);
             }
             text = tr(
                     "<html>Version <strong>{0}</strong> created on <strong>{1}</strong></html>",
-                    Long.toString(primitive.getVersion()), date);
+                    Long.toString(version), date);
         }
         return text;
     }
@@ -189,17 +187,24 @@ public class VersionInfoPanel extends JPanel implements Observer {
 
     @Override
     public void update(Observable o, Object arg) {
-        lblInfo.setText(getInfoText());
-
         HistoryOsmPrimitive primitive = getPrimitive();
         Changeset cs = primitive.getChangeset();
+        update(cs, model.isLatest(primitive), primitive.getTimestamp(), primitive.getVersion());
+    }
 
-        if (!model.isLatest(primitive)) {
-            User user = primitive.getUser();
-            String url = Main.getBaseBrowseUrl() + "/changeset/" + primitive.getChangesetId();
+    public void update(final OsmPrimitive primitive, final boolean isLatest) {
+        update(Changeset.fromPrimitive(primitive), isLatest, primitive.getTimestamp(), primitive.getVersion());
+    }
+
+    public void update(final Changeset cs, final boolean isLatest, final Date timestamp, final long version) {
+        lblInfo.setText(getInfoText(timestamp, version, isLatest));
+
+        if (!isLatest) {
+            User user = cs.getUser();
+            String url = Main.getBaseBrowseUrl() + "/changeset/" + cs.getId();
             lblChangeset.setUrl(url);
-            lblChangeset.setDescription(Long.toString(primitive.getChangesetId()));
-            changesetDialogAction.setId((int) primitive.getChangesetId());
+            lblChangeset.setDescription(Long.toString(cs.getId()));
+            changesetDialogAction.setId(cs.getId());
             changesetButton.setEnabled(true);
 
             String username = "";
@@ -227,7 +232,7 @@ public class VersionInfoPanel extends JPanel implements Observer {
             changesetButton.setEnabled(false);
         }
 
-        final Changeset oppCs = model.getPointInTime(pointInTimeType.opposite()).getChangeset();
+        final Changeset oppCs = model != null ? model.getPointInTime(pointInTimeType.opposite()).getChangeset() : null;
         updateText(cs, "comment", texChangesetComment, null, oppCs, texChangesetComment);
         updateText(cs, "source", texChangesetSource, lblSource, oppCs, pnlChangesetSource);
         updateText(cs, "imagery_used", texChangesetImageryUsed, lblImageryUsed, oppCs, pnlChangesetImageryUsed);
