diff --git a/web/js/onos-topology-route.js b/web/js/onos-topology-route.js
index e94d1aa..3b13b9c 100644
--- a/web/js/onos-topology-route.js
+++ b/web/js/onos-topology-route.js
@@ -43,6 +43,29 @@
 	draw(nodes, links);
     }
 
+    var node_drag = d3.behavior.drag()
+        .on("dragstart", dragstart)
+        .on("drag", dragmove)
+        .on("dragend", dragend);
+
+    function dragstart(d, i) {
+        force.stop() // stops the force auto positioning before you start dragging
+    }
+
+    function dragmove(d, i) {
+        d.px += d3.event.dx;
+        d.py += d3.event.dy;
+        d.x += d3.event.dx;
+        d.y += d3.event.dy; 
+        tick(); // this is the key to make it work together with updating both px,py,x,y on d !
+    }
+
+    function dragend(d, i) {
+        d.fixed = true; // of course set the node to fixed so the force doesn't include the node in its auto positioning stuff
+        tick();
+        force.resume();
+    }
+
     function update(json) {
 	Array.prototype.diff2 = function(arr) {
 	    return this.filter(function(i) {
@@ -210,7 +233,8 @@
 			alert("to set to " + d.name);
 		    }
 		}) */
-               .call(force.drag);
+	        .call(node_drag);
+//               .call(force.drag);
 
 /*	    text.enter().append("svg:text")
 		.attr("x", 8)
@@ -298,7 +322,8 @@
 		    alert("to set to " + d.name);
 		}
 	    }) */
-          .call(force.drag);
+	    .call(node_drag);
+//          .call(force.drag);
 
 /*	text.enter().append("svg:text")
 	    .attr("x", 8)
@@ -344,7 +369,7 @@
 	path.attr("d", function(d) {
 	    var dx = d.target.x - d.source.x,
 	    dy = d.target.y - d.source.y,
-	    dr = 1/d.linknum;  //linknum is defined above
+//	    dr = 1/d.linknum;  //linknum is defined above
 	    dr = 300;
 	    return "M" + d.source.x + "," + d.source.y + "A" + dr + "," + dr + " 0 0,1 " + d.target.x + "," + d.target.y;
 	});
