Index: /applications/editors/josm/plugins/turbopen/src/org/openstreetmap/josm/plugins/fastdraw/DrawnPolyLine.java
===================================================================
--- /applications/editors/josm/plugins/turbopen/src/org/openstreetmap/josm/plugins/fastdraw/DrawnPolyLine.java	(revision 26105)
+++ /applications/editors/josm/plugins/turbopen/src/org/openstreetmap/josm/plugins/fastdraw/DrawnPolyLine.java	(revision 26106)
@@ -273,12 +273,3 @@
     }
 
-    
-
-   
-        
-        
-    
-
-    
-        
 }
Index: /applications/editors/josm/plugins/turbopen/src/org/openstreetmap/josm/plugins/fastdraw/FastDrawingMode.java
===================================================================
--- /applications/editors/josm/plugins/turbopen/src/org/openstreetmap/josm/plugins/fastdraw/FastDrawingMode.java	(revision 26105)
+++ /applications/editors/josm/plugins/turbopen/src/org/openstreetmap/josm/plugins/fastdraw/FastDrawingMode.java	(revision 26106)
@@ -16,4 +16,5 @@
 import java.awt.event.MouseEvent;
 import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.osm.Tag;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -27,8 +28,10 @@
 import java.awt.event.KeyEvent;
 import java.io.IOException;
+import java.lang.annotation.Target;
 import java.util.*;
 import javax.swing.JOptionPane;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.actions.PasteTagsAction.TagPaster;
 import org.openstreetmap.josm.actions.mapmode.MapMode;
 import org.openstreetmap.josm.command.AddCommand;
@@ -50,13 +53,13 @@
         AWTEventListener {
     private static final String SIMPLIFYMODE_MESSAGE=
-            "Press Enter to simplify or save, Up/Down to tune simplification";
+            "Press Enter to simplify or save, Ctrl-Enter to save with tags, Up/Down to tune simplification";
     private static final String DRAWINGMODE_MESSAGE=
-    "Click or Click&drag to continue, Ctrl-Click to add fixed node, Shift-Click to start new line";
-    
-    private static final Color COLOR_FIXED = Color.green;
-    private static final Color COLOR_NORMAL = Color.white;
-    private static final Color COLOR_DELETE = Color.red;
-    private static final Color COLOR_SELECTEDFRAGMENT = Color.red;
-    private static final Color COLOR_EDITEDFRAGMENT = Color.orange;
+    "Click or Click&drag to continue, Ctrl-Click to add fixed node, Shift-Click to delete, Enter to simplify or save, Ctrl-Shift-Click to start new line";
+    
+    private Color COLOR_FIXED;
+    private Color COLOR_NORMAL;
+    private Color COLOR_DELETE;
+    private Color COLOR_SELECTEDFRAGMENT;
+    private Color COLOR_EDITEDFRAGMENT;
     
     private double maxDist;
@@ -191,5 +194,5 @@
                 pp2 = it2.next();
                 p2 = line.getPoint(pp2);
-                if (highlighted==pp1) {lineColor=COLOR_SELECTEDFRAGMENT;}
+                if (shift && highlighted==pp1 && nearestIdx<0) {lineColor=COLOR_SELECTEDFRAGMENT;}
                 if (line.isLastPoint(i)) { lineColor=COLOR_EDITEDFRAGMENT; }
                 g.setColor(lineColor);
@@ -212,5 +215,5 @@
                 }
                 if (ctrl && !line.wasSimplified() && nearestIdx==i+1 ) {
-                    // highlight node to delete
+                    // highlight node to toggle fixation
                     g.setStroke(strokeForDelete);
                     g.setColor( line.isFixed(pp2) ? COLOR_NORMAL: COLOR_FIXED);
@@ -293,6 +296,6 @@
         if (e.getButton() != MouseEvent.BUTTON1) return;
         drawing = false;
-        if (!ready) setStatusLine(tr(DRAWINGMODE_MESSAGE)
-                        + tr(SIMPLIFYMODE_MESSAGE));
+        highlighted=null;
+        if (!ready) setStatusLine(tr(DRAWINGMODE_MESSAGE));
         repaint();
     }
@@ -435,4 +438,15 @@
             w.addNode(nd);
             i++;
+        }
+        if (ctrl) {
+            // paste tags - from ctrl-shift-v
+            Set <OsmPrimitive> ts = new HashSet<OsmPrimitive>();
+            ts.add(w);
+            TagPaster tp = new TagPaster(Main.pasteBuffer.getDirectlyAdded(), ts);
+            List<Tag> execute = tp.execute();
+            Map<String,String> tgs=new HashMap<String,String>();
+            for (Tag t : execute) {
+                w.put(t.getKey(), t.getValue());
+            }
         }
         cmds.add(new AddCommand(w));
@@ -487,4 +501,9 @@
     
     void loadPrefs() {
+        COLOR_DELETE = Main.pref.getColor("fastdraw.color.delete", Color.red);
+        COLOR_EDITEDFRAGMENT = Main.pref.getColor("fastdraw.color.edit", Color.orange);
+        COLOR_FIXED = Main.pref.getColor("fastdraw.color.fixed", Color.green);
+        COLOR_NORMAL = Main.pref.getColor("fastdraw.color.normal", Color.red);
+        COLOR_SELECTEDFRAGMENT = Main.pref.getColor("fastdraw.color.select", Color.blue);
         maxDist = Main.pref.getDouble("fastdraw.maxdist", 5);
         epsilonMult = Main.pref.getDouble("fastdraw.epsilonmult", 1.1);
@@ -496,4 +515,9 @@
     
     void savePrefs() {
+         Main.pref.putColor("fastdraw.color.delete", COLOR_DELETE );
+         Main.pref.putColor("fastdraw.color.edit", COLOR_EDITEDFRAGMENT);
+         Main.pref.putColor("fastdraw.color.fixed", COLOR_FIXED);
+         Main.pref.putColor("fastdraw.color.normal", COLOR_NORMAL);
+         Main.pref.putColor("fastdraw.color.select", COLOR_SELECTEDFRAGMENT);
          Main.pref.putDouble("fastdraw.maxdist", maxDist);
          Main.pref.putDouble("fastdraw.epsilonmult", epsilonMult);
