diff --git a/TestON/drivers/common/cli/onosclidriver.py b/TestON/drivers/common/cli/onosclidriver.py
index eef7a0b..54cc5f6 100644
--- a/TestON/drivers/common/cli/onosclidriver.py
+++ b/TestON/drivers/common/cli/onosclidriver.py
@@ -382,6 +382,27 @@
             main.cleanup()
             main.exit()
 
+    def ad_flow(self):
+        main.log.info("AD_FLOW RUNNING!!!!")
+        self.handle.sendline("cd "+self.home+ "/scripts")
+        self.handle.expect("scripts")
+        print("Adding flows")
+        self.handle.sendline("./pyintents.py")
+        self.handle.sendline("cd "+self.home)
+        return main.TRUE
+
+    def rm_flow(self):
+        main.log.info("RM_FLOW RUNNING!!!")
+        self.handle.sendline("cd "+self.home+ "/scripts")
+        self.handle.expect("scripts")
+        print("Removing flows")
+        self.handle.sendline("./rmpyintents.py")
+        self.handle.sendline("cd "+self.home)
+        return main.TRUE
+        
+
+
+
     def add_flow(self, testONip, user = "admin", password = "", flowDef = "/flowdef.txt"):
         '''
         Copies the flowdef file from TestStation -> ONOS machine
diff --git a/TestON/tests/RCOnosSanity4nodesJ/RCOnosSanity4nodesJ.py b/TestON/tests/RCOnosSanity4nodesJ/RCOnosSanity4nodesJ.py
index f090d86..09be2db 100644
--- a/TestON/tests/RCOnosSanity4nodesJ/RCOnosSanity4nodesJ.py
+++ b/TestON/tests/RCOnosSanity4nodesJ/RCOnosSanity4nodesJ.py
@@ -141,11 +141,15 @@
         import time
         main.case("Taking care of these flows!") 
         main.step("Cleaning out any leftover flows...")
-        main.ONOS1.delete_flow("all")
+        #main.ONOS1.delete_flow("all")
         strtTime = time.time()
-        main.ONOS1.add_flow(main.params['FLOWDEF'])
+        print("hello")
+        main.ONOS1.rm_flow()
+        print("world")
+        main.ONOS1.ad_flow()
+       # main.ONOS1.add_flow(main.params['FLOWDEF']['testONip'],main.params['FLOWDEF']['user'],main.params['FLOWDEF']['password'],main.params['FLOWDEF']['flowDef'])
         main.case("Checking flows")
-        
+       
         count = 1
         i = 6
         while i < 16 :
diff --git a/TestON/tests/RCOnosSanity4nodesJ/RCOnosSanity4nodesJ.topo b/TestON/tests/RCOnosSanity4nodesJ/RCOnosSanity4nodesJ.topo
index 0819d37..3ccf2e9 100644
--- a/TestON/tests/RCOnosSanity4nodesJ/RCOnosSanity4nodesJ.topo
+++ b/TestON/tests/RCOnosSanity4nodesJ/RCOnosSanity4nodesJ.topo
@@ -129,8 +129,8 @@
             <connect_order>13</connect_order>
             <COMPONENTS>
                 # Specify the Option for mininet
-                <arg1> --custom ~/mininet/custom/topo-onos4node.py </arg1>
-                <arg2> --topo mytopo </arg2>
+                <arg1> --custom ~/mininet/custom/topo-onos4nodeNEW.py </arg1>
+                <arg2> --topo mytopo --arp</arg2>
                 <controller> remote </controller>
              </COMPONENTS>
         </Mininet1>
diff --git a/TestON/tests/RCOnosScale4nodes/RCOnosScale4nodes.py b/TestON/tests/RCOnosScale4nodes/RCOnosScale4nodes.py
index 6969d65..fb06de3 100644
--- a/TestON/tests/RCOnosScale4nodes/RCOnosScale4nodes.py
+++ b/TestON/tests/RCOnosScale4nodes/RCOnosScale4nodes.py
@@ -40,7 +40,7 @@
         data =  main.Zookeeper1.isup()
         utilities.assert_equals(expect=main.TRUE,actual=data,onpass="Zookeeper is up!",onfail="Zookeeper is down...")
         main.step("Testing startup RamCloud")
-        data =  main.RamCloud1.isup()
+        data =  main.RamCloud1.status_serv()
         if data == main.FALSE:
             main.RamCloud1.stop_coor()
             main.RamCloud1.stop_serv()
diff --git a/TestON/tests/RCOnosScale4nodes/RCOnosScale4nodes.topo b/TestON/tests/RCOnosScale4nodes/RCOnosScale4nodes.topo
index fe2b621..ae85268 100644
--- a/TestON/tests/RCOnosScale4nodes/RCOnosScale4nodes.topo
+++ b/TestON/tests/RCOnosScale4nodes/RCOnosScale4nodes.topo
@@ -2,28 +2,28 @@
     <COMPONENT>
 
         <ONOS1>
-            <host>10.128.100.1</host>
+            <host>10.128.4.151</host>
             <user>admin</user>
             <password></password>
             <type>OnosCliDriver</type>
             <connect_order>7</connect_order>
         </ONOS1>
         <ONOS2>
-            <host>10.128.100.4</host>
+            <host>10.128.4.152</host>
             <user>admin</user>
             <password></password>
             <type>OnosCliDriver</type>
             <connect_order>8</connect_order>
         </ONOS2>
         <ONOS3>
-            <host>10.128.100.5</host>
+            <host>10.128.4.153</host>
             <user>admin</user>
             <password></password>
             <type>OnosCliDriver</type>
             <connect_order>9</connect_order>
         </ONOS3>
         <ONOS4>
-            <host>10.128.100.6</host>
+            <host>10.128.4.154</host>
             <user>admin</user>
             <password></password>
             <type>OnosCliDriver</type>
@@ -31,7 +31,7 @@
         </ONOS4>
 
         <Zookeeper1>
-            <host>10.128.100.1</host>
+            <host>10.128.4.151</host>
             <user>admin</user>
             <password></password>
             <type>ZookeeperCliDriver</type>
@@ -41,28 +41,28 @@
         </Zookeeper1>
 
         <RamCloud1>
-            <host>10.128.100.1</host>
+            <host>10.128.4.151</host>
             <user>admin</user>
             <password></password>
             <type>RamCloudCliDriver</type>
             <connect_order>3</connect_order>
         </RamCloud1>
         <RamCloud2>
-            <host>10.128.100.4</host>
+            <host>10.128.4.152</host>
             <user>admin</user>
             <password></password>
             <type>RamCloudCliDriver</type>
             <connect_order>4</connect_order>
         </RamCloud2>
         <RamCloud3>
-            <host>10.128.100.5</host>
+            <host>10.128.4.153</host>
             <user>admin</user>
             <password></password>
             <type>RamCloudCliDriver</type>
             <connect_order>5</connect_order>
         </RamCloud3>
         <RamCloud4>
-            <host>10.128.100.6</host>
+            <host>10.128.4.154</host>
             <user>admin</user>
             <password></password>
             <type>RamCloudCliDriver</type>
@@ -70,7 +70,7 @@
         </RamCloud4>
 
         <Mininet1>
-            <host>10.128.100.11</host>
+            <host>10.128.4.159</host>
             <user>admin</user>
             <password></password>
             <type>MininetCliDriver</type>
@@ -79,7 +79,7 @@
                 # Specify the Option for mininet
                 <arg1> </arg1>
                 <arg2> --topo linear,100 --arp</arg2>
-                <controller> remote,ip=10.128.100.1,port=6633 </controller>
+                <controller> remote,ip=10.128.4.151,port=6633 </controller>
              </COMPONENTS>
         </Mininet1>
 
