Index: trunk/src/org/openstreetmap/josm/actions/CombineWayAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/CombineWayAction.java	(revision 2201)
+++ trunk/src/org/openstreetmap/josm/actions/CombineWayAction.java	(revision 2202)
@@ -31,4 +31,5 @@
 import org.openstreetmap.josm.data.osm.Tag;
 import org.openstreetmap.josm.data.osm.TagCollection;
+import org.openstreetmap.josm.data.osm.TigerUtils;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.ExtendedDialog;
@@ -46,22 +47,4 @@
         super(tr("Combine Way"), "combineway", tr("Combine several ways into one."),
                 Shortcut.registerShortcut("tools:combineway", tr("Tool: {0}", tr("Combine Way")), KeyEvent.VK_C, Shortcut.GROUP_EDIT), true);
-    }
-
-    protected Set<OsmPrimitive> intersect(Set<? extends OsmPrimitive> s1, Set<? extends OsmPrimitive> s2) {
-        HashSet<OsmPrimitive> ret = new HashSet<OsmPrimitive>(s1);
-        ret.retainAll(s2);
-        return ret;
-    }
-
-    protected boolean confirmCombiningWithConflictsInRelationMemberships() {
-        ExtendedDialog ed = new ExtendedDialog(Main.parent,
-                tr("Combine ways with different memberships?"),
-                new String[] {tr("Combine Anyway"), tr("Cancel")});
-        ed.setButtonIcons(new String[] {"combineway.png", "cancel.png"});
-        ed.setContent(tr("The selected ways have differing relation memberships.  "
-                + "Do you still want to combine them?"));
-        ed.showDialog();
-
-        return ed.getValue() == 1;
     }
 
@@ -82,5 +65,5 @@
         JOptionPane.showMessageDialog(
                 Main.parent,
-                msg,  //FIXME: not sure whether this fits in a dialog
+                msg,
                 tr("Information"),
                 JOptionPane.INFORMATION_MESSAGE
@@ -120,4 +103,17 @@
     }
 
+    /**
+     * Combines tags from TIGER data
+     * 
+     * @param tc the tag collection
+     */
+    protected static void combineTigerTags(TagCollection tc) {
+        for (String key: tc.getKeys()) {
+            if (TigerUtils.isTigerTag(key)) {
+                tc.setUniqueForKey(key, TigerUtils.combineTags(key, tc.getValues(key)));
+            }
+        }
+    }
+
     protected static void completeTagCollectionForEditing(TagCollection tc) {
         for (String key: tc.getKeys()) {
@@ -148,6 +144,6 @@
 
 
-        // try to build a new way out of the combination of ways
-        // which are combined
+        // try to build a new way which includes all the combined
+        // ways
         //
         NodeGraph graph = NodeGraph.createDirectedGraphFromWays(ways);
@@ -172,4 +168,5 @@
 
         TagCollection completeWayTags = new TagCollection(wayTags);
+        combineTigerTags(completeWayTags);
         completeTagCollectionWithMissingTags(completeWayTags, ways);
         TagCollection tagsToEdit = new TagCollection(completeWayTags);
@@ -216,5 +213,4 @@
         }
     }
-
 
     public void actionPerformed(ActionEvent event) {
Index: trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java	(revision 2201)
+++ trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java	(revision 2202)
@@ -25,4 +25,5 @@
 import org.openstreetmap.josm.data.osm.Tag;
 import org.openstreetmap.josm.data.osm.TagCollection;
+import org.openstreetmap.josm.data.osm.TigerUtils;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.BackreferencedDataSet.RelationToChildReference;
@@ -93,4 +94,17 @@
 
     /**
+     * Combines tags from TIGER data
+     * 
+     * @param tc the tag collection
+     */
+    protected static void combineTigerTags(TagCollection tc) {
+        for (String key: tc.getKeys()) {
+            if (TigerUtils.isTigerTag(key)) {
+                tc.setUniqueForKey(key, TigerUtils.combineTags(key, tc.getValues(key)));
+            }
+        }
+    }
+
+    /**
      * Selects a node out of a collection of candidate nodes. The selected
      * node will become the target node the remaining nodes are merged to.
@@ -153,5 +167,5 @@
      * Fixes the parent ways referring to one of the nodes.
      * 
-     * Replies null, if the ways could not be fixed, i.e. because a way would have to be delted
+     * Replies null, if the ways could not be fixed, i.e. because a way would have to be deleted
      * which is referred to by a relation.
      * 
@@ -159,5 +173,5 @@
      * @param nodesToDelete the collection of nodes to be deleted
      * @param targetNode the target node the other nodes are merged to
-     * @return a list of command; null, the ways could not be fixed
+     * @return a list of commands; null, if the ways could not be fixed
      */
     protected static List<Command> fixParentWays(BackreferencedDataSet backreferences, Collection<OsmPrimitive> nodesToDelete, Node targetNode) {
@@ -207,10 +221,10 @@
     /**
      * Merges the nodes in <code>node</code> onto one of the nodes. Uses the dataset
-     * managed by <code>layer</code> as reference. <code>backreferences</code> is precomputed
+     * managed by <code>layer</code> as reference. <code>backreferences</code> is a precomputed
      * collection of all parent/child references in the dataset.
      *
      * @param layer layer the reference data layer. Must not be null.
-     * @param backreferences if null, backreferneces are first computed from layer.data; otherwise
-     *    backreferences.getSource() == layer.data must hold
+     * @param backreferences if null, backreferences are first computed from layer.data; otherwise
+     *    backreferences.getSource() == layer.data must be true
      * @param nodes the collection of nodes. Ignored if null.
      * @param targetNode the target node the collection of nodes is merged to. Must not be null.
@@ -235,4 +249,5 @@
         //
         TagCollection nodeTags = TagCollection.unionOfAllPrimitives(nodes);
+        combineTigerTags(nodeTags);
         completeTagCollectionWithMissingTags(nodeTags, nodes);
         TagCollection nodeTagsToEdit = new TagCollection(nodeTags);
@@ -258,5 +273,5 @@
         nodesToDelete.remove(targetNode);
 
-        // change the ways referring to at least one of the merge nodes
+        // fix the ways referring to at least one of the merged nodes
         //
         Collection<Way> waysToDelete= new HashSet<Way>();
@@ -287,5 +302,5 @@
 
     /**
-     * Enable the "Merge Nodes" menu option if more then one node is selected
+     * Enable the "Merge Nodes" menu option if more than one node is selected
      */
     @Override
