diff --git a/scripts/ctrl-add-ext.sh b/scripts/ctrl-add-ext.sh
new file mode 100755
index 0000000..88be2f3
--- /dev/null
+++ b/scripts/ctrl-add-ext.sh
@@ -0,0 +1,29 @@
+#! /usr/bin/env python
+import sys
+import time
+import os
+import re
+import json
+import socket
+
+CONFIG_FILE=os.getenv("HOME") + "/ONOS/web/config.json"
+
+def read_config():
+  global controllers
+  f = open(CONFIG_FILE)
+  conf = json.load(f)
+  controllers = conf['controllers']
+  f.close()
+
+if __name__ == "__main__":
+  read_config()
+  controllers.pop(0) 
+  url = ""
+  for c in controllers:
+    url += " " + "tcp:%s:6633" % socket.gethostbyname(c)
+
+  switches = os.popen("sudo ovs-vsctl list-br").read().split("\n");
+  switches.remove('')
+  for s in switches:
+    print "set switch %s controller %s" % (s, url)  
+    os.popen("sudo ovs-vsctl set-controller %s %s" % (s, url) )
diff --git a/web/config.json.hw b/web/config.json.hw
new file mode 100644
index 0000000..493a2b4
--- /dev/null
+++ b/web/config.json.hw
@@ -0,0 +1,25 @@
+{
+    "LB": false, 
+    "ONOS_DEFAULT_HOST": "localhost",
+    "ONOS_GUI3_CONTROL_HOST": "http://10.128.4.11:9000", 
+    "ONOS_GUI3_HOST": "http://10.128.4.11:9000", 
+    "cluster_basename": "ONOS", 
+    "controllers": [
+        "ONOS1", 
+        "ONOS2", 
+        "ONOS3", 
+        "ONOS4", 
+        "ONOS5", 
+        "ONOS6", 
+        "ONOS7", 
+        "ONOS8"
+    ], 
+    "core_switches": [
+        "00:00:00:00:ba:5e:ba:11", 
+        "00:00:00:00:00:00:ba:12", 
+        "00:00:20:4e:7f:51:8a:35", 
+        "00:00:00:00:ba:5e:ba:13", 
+        "00:00:00:08:a2:08:f9:01", 
+        "00:01:00:16:97:08:9a:46"
+    ]
+}
diff --git a/web/config.json.sw b/web/config.json.sw
new file mode 100644
index 0000000..b1903c6
--- /dev/null
+++ b/web/config.json.sw
@@ -0,0 +1,25 @@
+{
+    "LB": false, 
+    "ONOS_DEFAULT_HOST": "localhost",
+    "ONOS_GUI3_CONTROL_HOST": "http://devy-gui.onlab.us:8080", 
+    "ONOS_GUI3_HOST": "http://devy-gui.onlab.us:8080", 
+    "cluster_basename": "onosdevy", 
+    "controllers": [
+        "onosdevy1", 
+        "onosdevy2", 
+        "onosdevy3", 
+        "onosdevy4", 
+        "onosdevy5", 
+        "onosdevy6", 
+        "onosdevy7", 
+        "onosdevy8"
+    ], 
+    "core_switches": [
+        "00:00:00:00:ba:5e:ba:11", 
+        "00:00:00:00:00:00:ba:12", 
+        "00:00:20:4e:7f:51:8a:35", 
+        "00:00:00:00:ba:5e:ba:13", 
+        "00:00:00:08:a2:08:f9:01", 
+        "00:00:00:16:97:08:9a:46"
+    ]
+}
diff --git a/web/config.json.sw_dev b/web/config.json.sw_dev
new file mode 100644
index 0000000..57a1a3d
--- /dev/null
+++ b/web/config.json.sw_dev
@@ -0,0 +1,25 @@
+{
+    "LB": false, 
+    "ONOS_DEFAULT_HOST": "localhost",
+    "ONOS_GUI3_CONTROL_HOST": "http://devy-gui.onlab.us:8080", 
+    "ONOS_GUI3_HOST": "http://devy-gui.onlab.us:8080", 
+    "cluster_basename": "onosdevy", 
+    "controllers": [
+        "onosdevy1", 
+        "onosdevy2", 
+        "onosdevy3", 
+        "onosdevy4", 
+        "onosdevy5", 
+        "onosdevy6", 
+        "onosdevy7", 
+        "onosdevy8"
+    ], 
+    "core_switches": [
+        "00:00:00:00:00:00:01:01", 
+        "00:00:00:00:00:00:01:02", 
+        "00:00:00:00:00:00:01:03", 
+        "00:00:00:00:00:00:01:04", 
+        "00:00:00:00:00:00:01:05", 
+        "00:00:00:00:00:00:01:06"
+    ]
+}
diff --git a/web/pingallm.py b/web/pingallm.py
index 43f10ad..db1f81c 100755
--- a/web/pingallm.py
+++ b/web/pingallm.py
@@ -3,12 +3,20 @@
 import time
 import os
 import re
+import json
 
-hosts=['onosdevz1', 'onosdevz2', 'onosdevz3', 'onosdevz4', 'onosdevz5', 'onosdevz6', 'onosdevz7', 'onosdevz8']
 ping_cnt=3
 wait1=ping_cnt
 wait2=10
 
+CONFIG_FILE=os.getenv("HOME") + "/ONOS/web/config.json"
+
+def read_config():
+  global controllers
+  f = open(CONFIG_FILE)
+  conf = json.load(f)
+  controllers = conf['controllers']
+  f.close()
 
 def do_pingall():
 
@@ -20,8 +28,8 @@
   nr_ping = 0
   for line in f:
     if line[0] != "#":
-#      logfile="/tmp/ping.pid%d.%d" % (pid, fid)
       fid=int(line.strip().split()[0])
+#      logfile="/tmp/ping.pid%d.%d" % (pid, fid)
       logfile="/tmp/ping.%d" % (fid)
       src_dpid=line.strip().split()[2]
       dst_dpid=line.strip().split()[4]
@@ -31,8 +39,8 @@
       dst_hostid=int(dst_dpid.split(':')[-1], 16)
       cmd="echo \"Pingall flow %d : 192.168.%d.%d -> 192.168.%d.%d\" > %s" % (fid, src_nwid, src_hostid, dst_nwid, dst_hostid,logfile)
       os.popen(cmd)
-      cmd="ssh %s \'${HOME}/ONOS/test-network/mininet/mrun host%d \'ping -c %d -W 1 192.168.%d.%d\'\' >> %s 2>&1 &" % (hosts[src_nwid-1], src_hostid, ping_cnt, dst_nwid, dst_hostid,logfile)
-    #    print cmd
+      cmd="ssh %s \'${HOME}/ONOS/test-network/mininet/mrun host%d \'ping -c %d -W 1 192.168.%d.%d\'\' >> %s 2>&1 &" % (controllers[src_nwid-1], src_hostid, ping_cnt, dst_nwid, dst_hostid,logfile)
+      print cmd
       result = os.popen(cmd).read()
       time.sleep(0.2)
       nr_ping = nr_ping + 1
@@ -72,6 +80,7 @@
         print "flow # %d %s : %s" % (i+1, flow_desc, result)
 
 if __name__ == "__main__":
+  read_config()
   nr_ping=do_pingall()
   nr_done=wait_ping_finish(nr_ping)
   report(nr_ping, nr_done)
diff --git a/web/topology_rest.py b/web/topology_rest.py
index 87bdeb0..b1ce2ca 100755
--- a/web/topology_rest.py
+++ b/web/topology_rest.py
@@ -13,28 +13,25 @@
 
 from flask import Flask, json, Response, render_template, make_response, request
 
+
+CONFIG_FILE=os.getenv("HOME") + "/ONOS/web/config.json"
+
 ## Global Var for ON.Lab local REST ##
 RestIP="localhost"
 RestPort=8080
-
-LB=False #; True or False
 ONOS_DEFAULT_HOST="localhost" ;# Has to set if LB=False
-TESTBED="hw"
 DEBUG=1
 
-if (TESTBED == "hw"): 
-  # Settings for running on hardware testbed
-  controllers=["ONOS1", "ONOS2", "ONOS3", "ONOS4", "ONOS5", "ONOS6", "ONOS7", "ONOS8"]
-  core_switches=["00:00:00:00:ba:5e:ba:11", "00:00:00:00:00:00:ba:12", "00:00:20:4e:7f:51:8a:35", "00:00:00:00:ba:5e:ba:13", "00:00:00:08:a2:08:f9:01", "00:01:00:16:97:08:9a:46"]
-  ONOS_GUI3_HOST="http://10.128.4.11:9000"
-  ONOS_GUI3_CONTROL_HOST="http://10.128.4.11:9000"
-else:
-  # Settings for running on software testbed
-  controllers=["onosdevt1", "onosdevt2", "onosdevt3", "onosdevt4", "onosdevt5", "onosdevt6", "onosdevt7", "onosdevt8"]
-#  core_switches=["00:00:00:00:ba:5e:ba:11", "00:00:00:00:00:00:ba:12", "00:00:20:4e:7f:51:8a:35", "00:00:00:00:ba:5e:ba:13", "00:00:00:08:a2:08:f9:01", "00:00:00:16:97:08:9a:46"]
-  core_switches=["00:00:00:00:00:00:01:01", "00:00:00:00:00:00:01:02", "00:00:00:00:00:00:01:03", "00:00:00:00:00:00:01:04", "00:00:00:00:00:00:01:05", "00:00:00:00:00:00:01:06"]
-  ONOS_GUI3_HOST="http://devt-gui.onlab.us:8080"
-  ONOS_GUI3_CONTROL_HOST="http://devt-gui.onlab.us:8080"
+def read_config():
+  global LB, controllers, core_switches, ONOS_GUI3_HOST, ONOS_GUI3_CONTROL_HOST
+  f = open(CONFIG_FILE)
+  conf = json.load(f)
+  LB = conf['LB']
+  controllers = conf['controllers']
+  core_switcehs=conf['core_switches']
+  ONOS_GUI3_HOST=conf['ONOS_GUI3_HOST']
+  ONOS_GUI3_CONTROL_HOST=conf['ONOS_GUI3_CONTROL_HOST']
+  f.close()
 
 pp = pprint.PrettyPrinter(indent=4)
 app = Flask(__name__)
@@ -986,6 +983,7 @@
 
 if __name__ == "__main__":
   random.seed()
+  read_config()
   if len(sys.argv) > 1 and sys.argv[1] == "-d":
 #      add_flow("00:00:00:00:00:00:02:02", 1, "00:00:00:00:00:00:03:02", 1, "00:00:00:00:02:02", "00:00:00:00:03:0c")
 #     link_change("up", "00:00:00:00:ba:5e:ba:11", 1, "00:00:00:00:00:00:00:00", 1)
