diff --git a/web/js/controller-status.js b/web/js/controller-status.js
index fa887e3..5c1ae30 100644
--- a/web/js/controller-status.js
+++ b/web/js/controller-status.js
@@ -32,7 +32,7 @@
 	    },
 	    dataType: "json"
         });
-    }, 5000); 
+    }, 3000); 
 
     function draw(json){
 //	var data = json.data;
diff --git a/web/js/onos-topology.js b/web/js/onos-topology.js
index cea8f1a..3772127 100644
--- a/web/js/onos-topology.js
+++ b/web/js/onos-topology.js
@@ -257,12 +257,26 @@
 	    .text(function(d) { return d.name; });
 
 	circle.attr("fill", function(d) {
-	    if (d.group == 1){return "red";}
-	    else if (d.group == 2){return "blue";}
-	    else if (d.group == 3){return "green";}
-	    else if (d.group == 4){return "orange";}
-	    else if (d.group == 1000){return "black";}
-	    else{ return "gray"; }
+               if (d.group == 1){
+                    return "red"
+                }else if (d.group == 2){
+                    return "blue"
+                }else if (d.group == 3){
+                    return "green"
+                }else if (d.group == 4){
+                    return "orange"
+                }else if (d.group == 5){
+                    return "cyan"
+                }else if (d.group == 6){
+                    return "magenta"
+                }else if (d.group == 7){
+                    return "yellow"
+                }else if (d.group == 8){
+                    return "purple"
+                }else{
+                    return "gray"
+                }
+
 	});
 
 	path.attr("stroke", function(d) {
@@ -364,12 +378,25 @@
 	})
 
 	circle.attr("fill", function(d) {
-	    ;	    if (d.group == 1){return "red";}
-	    else if (d.group == 2){return "blue";}
-	    else if (d.group == 3){return "green";}
-	    else if (d.group == 4){return "orange";}
-	    else if (d.group == 1000){return "black";}
-	    else{ return "gray"; }
+                if (d.group == 1){
+                    return "red"
+                }else if (d.group == 2){
+                    return "blue"
+                }else if (d.group == 3){
+                    return "green"
+                }else if (d.group == 4){
+                    return "orange"
+                }else if (d.group == 5){
+                    return "cyan"
+                }else if (d.group == 6){
+                    return "magenta"
+                }else if (d.group == 7){
+                    return "yellow"
+                }else if (d.group == 8){
+                    return "purple"
+                }else{
+                    return "gray"
+                }
 	});
 //	text.attr("x", function(d) { return d.x; }).attr("y", function(d) { return d.y; });
 	text.attr("transform", function(d) {
