Index: applications/editors/josm/plugins/public_transport/src/public_transport/StopImporterAction.java
===================================================================
--- applications/editors/josm/plugins/public_transport/src/public_transport/StopImporterAction.java	(revision 20790)
+++ applications/editors/josm/plugins/public_transport/src/public_transport/StopImporterAction.java	(revision 20791)
@@ -304,14 +304,5 @@
   {
     Node node = new Node(latLon);
-    if ("bus".equals(type))
-      node.put("highway", "bus_stop");
-    else if ("tram".equals(type))
-      node.put("railway", "tram_stop");
-    else if ("light_rail".equals(type))
-      node.put("railway", "station");
-    else if ("subway".equals(type))
-      node.put("railway", "station");
-    else if ("rail".equals(type))
-      node.put("railway", "station");
+    setTagsWrtType(node, type);
     node.put("name", name);
     if (Main.main.getCurrentDataSet() == null)
Index: applications/editors/josm/plugins/public_transport/src/public_transport/WaypointTableModel.java
===================================================================
--- applications/editors/josm/plugins/public_transport/src/public_transport/WaypointTableModel.java	(revision 20790)
+++ applications/editors/josm/plugins/public_transport/src/public_transport/WaypointTableModel.java	(revision 20791)
@@ -9,4 +9,5 @@
 import javax.swing.table.DefaultTableModel;
 
+import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.gpx.WayPoint;
@@ -17,4 +18,5 @@
 {
   private StopImporterAction controller = null;
+  public boolean inEvent = false;
   public Vector< Node > nodes = new Vector< Node >();
   public Vector< LatLon > coors = new Vector< LatLon >();
@@ -86,4 +88,10 @@
     if (e.getType() == TableModelEvent.UPDATE)
     {
+      if (inEvent)
+	return;
+      Main.main.undoRedo.add(new WaypointsNameCommand
+	  (this, e.getFirstRow(), (String)getValueAt(e.getFirstRow(), 1)));
+    }
+/*    {
       if (nodes.elementAt(e.getFirstRow()) != null)
       {
@@ -91,5 +99,5 @@
 	node.put("name", (String)getValueAt(e.getFirstRow(), 1));
       }
-    }
+    }*/
   }
 };
Index: applications/editors/josm/plugins/public_transport/src/public_transport/WaypointsNameCommand.java
===================================================================
--- applications/editors/josm/plugins/public_transport/src/public_transport/WaypointsNameCommand.java	(revision 20791)
+++ applications/editors/josm/plugins/public_transport/src/public_transport/WaypointsNameCommand.java	(revision 20791)
@@ -0,0 +1,62 @@
+package public_transport;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.command.Command;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+
+import java.util.Collection;
+import java.util.Vector;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.MutableTreeNode;
+
+public class WaypointsNameCommand extends Command
+{
+  private int workingLine = 0;
+  private WaypointTableModel waypointTM = null;
+  private String oldName = null;
+  private String name = null;
+  
+  public WaypointsNameCommand(WaypointTableModel waypointTM, int workingLine, String name)
+  {
+    this.waypointTM = waypointTM;
+    this.workingLine = workingLine;
+    if (waypointTM.nodes.elementAt(workingLine) != null)
+      oldName = waypointTM.nodes.elementAt(workingLine).get("name");
+    this.name = name;
+  }
+  
+  public boolean executeCommand()
+  {
+    if (waypointTM.nodes.elementAt(workingLine) != null)
+    {
+      waypointTM.nodes.elementAt(workingLine).put("name", name);
+      waypointTM.inEvent = true;
+      waypointTM.setValueAt(name, workingLine, 1);
+      waypointTM.inEvent = false;
+    }
+    return true;
+  }
+  
+  public void undoCommand()
+  {
+    if (waypointTM.nodes.elementAt(workingLine) != null)
+    {
+      waypointTM.nodes.elementAt(workingLine).put("name", oldName);
+      waypointTM.inEvent = true;
+      waypointTM.setValueAt(oldName, workingLine, 1);
+      waypointTM.inEvent = false;
+    }
+  }
+  
+  public void fillModifiedData
+    (Collection< OsmPrimitive > modified, Collection< OsmPrimitive > deleted,
+     Collection< OsmPrimitive > added)
+  {
+  }
+  
+  public MutableTreeNode description()
+  {
+    return new DefaultMutableTreeNode("public_transport.Waypoints.EditName");
+  }
+};
