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;
 	});
diff --git a/web/onos-topology.html b/web/onos-topology.html
index 0b5c313..6e13034 100644
--- a/web/onos-topology.html
+++ b/web/onos-topology.html
@@ -26,7 +26,7 @@
 </head>
 <body>
 <button id="more">more</button>
-<button id="less">lesse</button>
+<button id="less">less</button>
 <svg width="4in" height="2in" 
      viewBox="0 0 4000 2000" version="1.1"
      xmlns="http://www.w3.org/2000/svg">
@@ -39,7 +39,12 @@
       <path d="M0,-5L10,0L0,5"/>
     </marker>
   </defs>
+<div id="servers"></div>
+<div id="onos-status"></div>
+<div id="cassandra-status"></div>
+<script type="text/javascript" src="js/controller-status.js"></script>
 <script type="text/javascript">
+controller_status("http://gui.onlab.us:8080/topology");
 gui("http://gui.onlab.us:8080/topology");
 </script>
 </svg>
