diff --git a/TestON/dependancies/onos.properties.proactive b/TestON/dependancies/onos.properties.proactive
deleted file mode 100644
index 2b5150a..0000000
--- a/TestON/dependancies/onos.properties.proactive
+++ /dev/null
@@ -1,16 +0,0 @@
-floodlight.modules = net.floodlightcontroller.core.FloodlightProvider,\
-net.floodlightcontroller.threadpool.ThreadPool,\
-net.onrc.onos.core.topology.TopologyPublisher, \
-net.onrc.onos.core.datagrid.HazelcastDatagrid,\
-net.onrc.onos.core.flowprogrammer.FlowProgrammer,\
-net.onrc.onos.core.intent.runtime.PathCalcRuntimeModule,\
-net.onrc.onos.core.intent.runtime.PlanInstallModule,\
-net.onrc.onos.core.registry.ZookeeperRegistry
-net.floodlightcontroller.restserver.RestApiServer.port = 8080
-net.floodlightcontroller.core.FloodlightProvider.openflowport = 6633
-net.floodlightcontroller.core.FloodlightProvider.workerthreads = 16
-net.floodlightcontroller.forwarding.Forwarding.idletimeout = 5
-net.floodlightcontroller.forwarding.Forwarding.hardtimeout = 0
-net.onrc.onos.core.datagrid.HazelcastDatagrid.datagridConfig = conf/hazelcast.xml
-net.onrc.onos.ofcontroller.floodlightlistener.NetworkGraphPublisher.dbconf = conf/ramcloud.conf
-net.onrc.onos.ofcontroller.floodlightlistener.NetworkGraphPublisher.graph_db_store = ramcloud
diff --git a/TestON/dependancies/onos.properties.reactive b/TestON/dependancies/onos.properties.reactive
deleted file mode 100644
index 8d78222..0000000
--- a/TestON/dependancies/onos.properties.reactive
+++ /dev/null
@@ -1,19 +0,0 @@
-floodlight.modules = net.floodlightcontroller.core.FloodlightProvider,\
-net.floodlightcontroller.threadpool.ThreadPool,\
-net.onrc.onos.core.topology.TopologyPublisher, \
-net.onrc.onos.core.datagrid.HazelcastDatagrid,\
-net.onrc.onos.core.flowprogrammer.FlowProgrammer,\
-net.onrc.onos.core.intent.runtime.PathCalcRuntimeModule,\
-net.onrc.onos.core.intent.runtime.PlanInstallModule,\
-net.onrc.onos.core.registry.ZookeeperRegistry,\
-net.onrc.onos.apps.proxyarp.ProxyArpManager,\
-net.onrc.onos.core.main.config.DefaultConfiguration,\
-net.onrc.onos.apps.forwarding.Forwarding
-net.floodlightcontroller.restserver.RestApiServer.port = 8080
-net.floodlightcontroller.core.FloodlightProvider.openflowport = 6633
-net.floodlightcontroller.core.FloodlightProvider.workerthreads = 16
-net.floodlightcontroller.forwarding.Forwarding.idletimeout = 5
-net.floodlightcontroller.forwarding.Forwarding.hardtimeout = 0
-net.onrc.onos.core.datagrid.HazelcastDatagrid.datagridConfig = conf/hazelcast.xml
-net.onrc.onos.ofcontroller.floodlightlistener.NetworkGraphPublisher.dbconf = conf/ramcloud.conf
-net.onrc.onos.ofcontroller.floodlightlistener.NetworkGraphPublisher.graph_db_store = ramcloud
diff --git a/TestON/dependancies/pyintents.py b/TestON/dependancies/pyintents.py
deleted file mode 100755
index b593845..0000000
--- a/TestON/dependancies/pyintents.py
+++ /dev/null
@@ -1,46 +0,0 @@
-#! /usr/bin/env python
-'''
-This file creates the ONOS intents for the sanity 4 nodes tests. These intents will be translated into flows by ONOS and pushed to the switches.
-'''
-
-import json
-import requests
-
-url = 'http://127.0.0.1:8080/wm/onos/datagrid/add/intents/json'
-headers = {'Content-type': 'application/json', 'Accept': 'application/json'}
-
-
-'''response
-[{'intent_id':'5','status':'CREATED','log':['created, time:73268214932534']}]
-'''
-
-
-
-for i in range(6,16):
-    #intent = [{'intent_id': '%d' %i,'intent_type':'shortest_intent_type','intent_op':'add','srcSwitch':'8249','srcPort':1,'srcMac':'00:00:00:00:00:01','dstSwitch':'4103','dstPort':1,'dstMac':'00:00:00:00:00:02'}]
-    srcMac = '00:00:00:00:00:'+ str(hex(i)[2:]).zfill(2)
-    dstMac = '00:00:00:00:00:'+ str(hex(i+10)[2:])
-    srcSwitch = '00:00:00:00:00:00:10:'+ str(i).zfill(2)
-    dstSwitch = '00:00:00:00:00:00:20:'+ str(i+25)
-    srcPort = 1 
-    dstPort = 1 
-
-    intent = [{'intent_id': '%d' %(i),'intent_type':'shortest_intent_type','intent_op':'add','srcSwitch':srcSwitch,'srcPort':srcPort,'srcMac':srcMac,'dstSwitch':dstSwitch,'dstPort':dstPort,'dstMac':dstMac}]
-
-
-    print json.dumps(intent, sort_keys = True)
-
-
-    #r = requests.post(url, data=json.dumps(iid, sort_keys=True)+json.dumps(intent, sort_keys=True), headers = headers)
-    r = requests.post(url, data=json.dumps(intent, sort_keys=True), headers = headers)
-    print r
-    print r.content
-
-
-
-    intent = [{'intent_id': '%d' %(i+10),'intent_type':'shortest_intent_type','intent_op':'add','srcSwitch':dstSwitch,'srcPort':dstPort,'srcMac':dstMac,'dstSwitch':srcSwitch,'dstPort':srcPort,'dstMac':srcMac}]
-    print json.dumps(intent, sort_keys = True)
-    r = requests.post(url, data=json.dumps(intent, sort_keys=True), headers = headers)
-    print r
-    print r.content
-
diff --git a/TestON/dependancies/rmpyintents.py b/TestON/dependancies/rmpyintents.py
deleted file mode 100755
index 10bb5d4..0000000
--- a/TestON/dependancies/rmpyintents.py
+++ /dev/null
@@ -1,49 +0,0 @@
-#! /usr/bin/env python
-
-'''
-This file removes the ONOS intents for the sanity 4 nodes tests. The flows associated with these intents should be deleted from the switches.
-'''
-
-import json
-import requests
-
-
-
-url = 'http://127.0.0.1:8080/wm/onos/datagrid/add/intents/json'
-headers = {'Content-type': 'application/json', 'Accept': 'application/json'}
-
-
-'''response
-[{'intent_id':'5','status':'CREATED','log':['created, time:73268214932534']}]
-'''
-
-
-
-for i in range(6,16):
-    #intent = [{'intent_id': '%d' %i,'intent_type':'shortest_intent_type','intent_op':'remove','srcSwitch':'8249','srcPort':1,'srcMac':'00:00:00:00:00:01','dstSwitch':'4103','dstPort':1,'dstMac':'00:00:00:00:00:02'}]
-    srcMac = '00:00:00:00:00:'+ str(hex(i)[2:]).zfill(2)
-    dstMac = '00:00:00:00:00:'+ str(hex(i+10)[2:])
-    srcSwitch = '00:00:00:00:00:00:10:'+ str(i).zfill(2)
-    dstSwitch = '00:00:00:00:00:00:20:'+ str(i+25)
-    srcPort = 1 
-    dstPort = 1 
-
-    intent = [{'intent_id': '%d' %(i),'intent_type':'shortest_intent_type','intent_op':'remove','srcSwitch':srcSwitch,'srcPort':srcPort,'srcMac':srcMac,'dstSwitch':dstSwitch,'dstPort':dstPort,'dstMac':dstMac}]
-
-
-    print json.dumps(intent, sort_keys = True)
-
-
-    #r = requests.post(url, data=json.dumps(iid, sort_keys=True)+json.dumps(intent, sort_keys=True), headers = headers)
-    r = requests.post(url, data=json.dumps(intent, sort_keys=True), headers = headers)
-    print r
-    print r.content
-
-
-
-    intent = [{'intent_id': '%d' %(i+10),'intent_type':'shortest_intent_type','intent_op':'remove','srcSwitch':dstSwitch,'srcPort':dstPort,'srcMac':dstMac,'dstSwitch':srcSwitch,'dstPort':srcPort,'dstMac':srcMac}]
-    print json.dumps(intent, sort_keys = True)
-    r = requests.post(url, data=json.dumps(intent, sort_keys=True), headers = headers)
-    print r
-    print r.content
-
diff --git a/TestON/dependancies/topo-onos4node.py b/TestON/dependancies/topo-onos4node.py
deleted file mode 100644
index 4fc036c..0000000
--- a/TestON/dependancies/topo-onos4node.py
+++ /dev/null
@@ -1,63 +0,0 @@
-"""Custom topology example
-
-Two directly connected switches plus a host for each switch:
-
-   host --- switch --- switch --- host
-
-Adding the 'topos' dict with a key/value pair to generate our newly defined
-topology enables one to pass in '--topo=mytopo' from the command line.
-"""
-
-from mininet.topo import Topo
-
-class MyTopo( Topo ):
-	"Simple topology example."
-
-	def __init__( self ):
-		"Create custom topo."
-		# Initialize topology
-		Topo.__init__( self )
-
-		# Make the middle triangle	
-		leftSwitch = self.addSwitch( 's1' , dpid = '1000'.zfill(16))
-		rightSwitch = self.addSwitch( 's2' , dpid = '2000'.zfill(16))
-		topSwitch = self.addSwitch( 's3' , dpid = '3000'.zfill(16))
-		lefthost = self.addHost( 'h1' )
-		righthost = self.addHost( 'h2' )
-		tophost = self.addHost( 'h3' )
-		self.addLink( leftSwitch, lefthost )
-		self.addLink( rightSwitch, righthost )
-		self.addLink( topSwitch, tophost )
-
-		self.addLink( leftSwitch, rightSwitch )
-		self.addLink( leftSwitch, topSwitch )
-		self.addLink( topSwitch, rightSwitch )
-
-		# Make aggregation switches
-		agg1Switch = self.addSwitch( 's4', dpid = '1004'.zfill(16) ) 
-		agg2Switch = self.addSwitch( 's5', dpid = '2005'.zfill(16) ) 
-		agg1Host = self.addHost( 'h4' ) 
-		agg2Host = self.addHost( 'h5' ) 
-
-		self.addLink( agg1Switch, agg1Host, port1=1, port2=1 )
-		self.addLink( agg2Switch, agg2Host, port1=1, port2=1 )
-
-		self.addLink( agg2Switch, rightSwitch )
-		self.addLink( agg1Switch, leftSwitch )
-
-		# Make two aggregation fans
-		for i in range(10):
-			num=str(i+6)
-			switch = self.addSwitch( 's' + num, dpid = ('10' + num.zfill(2) ).zfill(16))
-			host = self.addHost( 'h' + num ) 
-			self.addLink( switch, host, port1=1, port2=1 ) 
-			self.addLink( switch, agg1Switch ) 
-
-		for i in range(10):
-			num=str(i+31)
-			switch = self.addSwitch( 's' + num, dpid = ('20' + num.zfill(2)).zfill(16) )
-			host = self.addHost( 'h' + num ) 
-			self.addLink( switch, host, port1=1, port2=1 ) 
-			self.addLink( switch, agg2Switch ) 
-
-topos = { 'mytopo': ( lambda: MyTopo() ) }
diff --git a/TestON/dependancies/topo-onos4node.py.old b/TestON/dependancies/topo-onos4node.py.old
deleted file mode 100644
index 3328a5d..0000000
--- a/TestON/dependancies/topo-onos4node.py.old
+++ /dev/null
@@ -1,61 +0,0 @@
-"""Custom topology example
-
-Two directly connected switches plus a host for each switch:
-
-   host --- switch --- switch --- host
-
-Adding the 'topos' dict with a key/value pair to generate our newly defined
-topology enables one to pass in '--topo=mytopo' from the command line.
-"""
-
-from mininet.topo import Topo
-
-class MyTopo( Topo ):
-	"Simple topology example."
-
-	def __init__( self ):
-		"Create custom topo."
-		# Initialize topology
-		Topo.__init__( self )
-
-		# Make the middle triangle	
-		leftSwitch = self.addSwitch( 's1' )
-		rightSwitch = self.addSwitch( 's2' )
-		topSwitch = self.addSwitch( 's3' )
-		lefthost = self.addHost( 'h1' )
-		righthost = self.addHost( 'h2' )
-		tophost = self.addHost( 'h3' )
-		self.addLink( leftSwitch, lefthost )
-		self.addLink( rightSwitch, righthost )
-		self.addLink( topSwitch, tophost )
-
-		self.addLink( leftSwitch, rightSwitch )
-		self.addLink( leftSwitch, topSwitch )
-		self.addLink( topSwitch, rightSwitch )
-
-		# Make aggregation switches
-		agg1Switch = self.addSwitch( 's4' ) 
-		agg2Switch = self.addSwitch( 's5' ) 
-		agg1Host = self.addHost( 'h4' ) 
-		agg2Host = self.addHost( 'h5' ) 
-
-		self.addLink( agg1Switch, agg1Host )
-		self.addLink( agg2Switch, agg2Host )
-
-		self.addLink( agg1Switch, rightSwitch )
-		self.addLink( agg2Switch, leftSwitch )
-
-		# Make two aggregation fans
-		for i in range(10):
-			switch = self.addSwitch( 's%d' % (i+6) )
-			host = self.addHost( 'h%d' % (i+6) ) 
-			self.addLink( switch, host ) 
-			self.addLink( switch, agg1Switch ) 
-
-		for i in range(10):
-			switch = self.addSwitch( 's%d' % (i+31) )
-			host = self.addHost( 'h%d' % (i+31) ) 
-			self.addLink( switch, host ) 
-			self.addLink( switch, agg2Switch ) 
-
-topos = { 'mytopo': ( lambda: MyTopo() ) }
diff --git a/TestON/dependancies/topo-onos4nodeNEW.py b/TestON/dependancies/topo-onos4nodeNEW.py
deleted file mode 100644
index 1824e3b..0000000
--- a/TestON/dependancies/topo-onos4nodeNEW.py
+++ /dev/null
@@ -1,63 +0,0 @@
-"""Custom topology example
-
-Two directly connected switches plus a host for each switch:
-
-   host --- switch --- switch --- host
-
-Adding the 'topos' dict with a key/value pair to generate our newly defined
-topology enables one to pass in '--topo=mytopo' from the command line.
-"""
-
-from mininet.topo import Topo
-
-class MyTopo( Topo ):
-	"Simple topology example."
-
-	def __init__( self ):
-		"Create custom topo."
-		# Initialize topology
-		Topo.__init__( self )
-
-		# Make the middle triangle	
-		leftSwitch = self.addSwitch( 's1' , dpid = '1000'.zfill(16))
-		rightSwitch = self.addSwitch( 's2' , dpid = '2000'.zfill(16))
-		topSwitch = self.addSwitch( 's3' , dpid = '3000'.zfill(16))
-		lefthost = self.addHost( 'h1' )
-		righthost = self.addHost( 'h2' )
-		tophost = self.addHost( 'h3' )
-		self.addLink( leftSwitch, lefthost )
-		self.addLink( rightSwitch, righthost )
-		self.addLink( topSwitch, tophost )
-
-		self.addLink( leftSwitch, rightSwitch )
-		self.addLink( leftSwitch, topSwitch )
-		self.addLink( topSwitch, rightSwitch )
-
-		# Make aggregation switches
-		agg1Switch = self.addSwitch( 's4', dpid = '1004'.zfill(16) ) 
-		agg2Switch = self.addSwitch( 's5', dpid = '2005'.zfill(16) ) 
-		agg1Host = self.addHost( 'h4' ) 
-		agg2Host = self.addHost( 'h5' ) 
-
-		self.addLink( agg1Switch, agg1Host )
-		self.addLink( agg2Switch, agg2Host )
-
-		self.addLink( agg2Switch, rightSwitch )
-		self.addLink( agg1Switch, leftSwitch )
-
-		# Make two aggregation fans
-		for i in range(10):
-			num=str(i+6)
-			switch = self.addSwitch( 's' + num, dpid = ('10' + num.zfill(2) ).zfill(16))
-			host = self.addHost( 'h' + num ) 
-			self.addLink( switch, host ) 
-			self.addLink( switch, agg1Switch ) 
-
-		for i in range(10):
-			num=str(i+31)
-			switch = self.addSwitch( 's' + num, dpid = ('20' + num.zfill(2)).zfill(16) )
-			host = self.addHost( 'h' + num ) 
-			self.addLink( switch, host ) 
-			self.addLink( switch, agg2Switch ) 
-
-topos = { 'mytopo': ( lambda: MyTopo() ) }
