diff --git a/TestON/tests/HA/HAsingleInstanceRestart/HAsingleInstanceRestart.py b/TestON/tests/HA/HAsingleInstanceRestart/HAsingleInstanceRestart.py
index 71a1e30..90ff577 100644
--- a/TestON/tests/HA/HAsingleInstanceRestart/HAsingleInstanceRestart.py
+++ b/TestON/tests/HA/HAsingleInstanceRestart/HAsingleInstanceRestart.py
@@ -100,9 +100,9 @@
                                   extraApply=[ main.testSetUp.createApplyCell,
                                                main.HA.startingMininet,
                                                main.testSetUp.createApplyCell ],
-                                  applyArgs=[ [ main.Cluster, True, cellName, main.Mininet1, True, ip ],
+                                  applyArgs=[ [ main.Cluster, True, cellName, "", "localhost", True, ip ],
                                               None,
-                                              [ main.Cluster, True, "SingleHA", main.Mininet1,
+                                              [ main.Cluster, True, "SingleHA", "", "localhost",
                                                 True, main.Cluster.runningNodes[ 0 ].ipAddress ] ] )
 
         main.HA.initialSetUp()
diff --git a/TestON/tests/dependencies/Cluster.py b/TestON/tests/dependencies/Cluster.py
index 34a373a..6ea93e3 100644
--- a/TestON/tests/dependencies/Cluster.py
+++ b/TestON/tests/dependencies/Cluster.py
@@ -319,6 +319,7 @@
             else:
                 result = result and \
                             main.ONOSbench.onosInstall( node=ctrl.ipAddress, options=options )
+            i += 1
         if installParallel:
             for t in threads:
                 t.join()
diff --git a/TestON/tests/dependencies/ONOSSetup.py b/TestON/tests/dependencies/ONOSSetup.py
index 98f1d5b..cbf7f8c 100644
--- a/TestON/tests/dependencies/ONOSSetup.py
+++ b/TestON/tests/dependencies/ONOSSetup.py
@@ -355,7 +355,7 @@
     def ONOSSetUp( self, cluster, hasMultiNodeRounds=False, startOnos=True, newCell=True,
                    cellName="temp", cellApps="drivers", mininetIp="", removeLog=False, extraApply=None, applyArgs=None,
                    extraClean=None, cleanArgs=None, skipPack=False, installMax=False, useSSH=True,
-                   killRemoveMax=True, stopOnos=False, installParallel=True ):
+                   killRemoveMax=True, stopOnos=False, installParallel=True, cellApply=True ):
         """
         Description:
             Initial ONOS setting up of the tests. It will also verify the result of each steps.
@@ -405,9 +405,8 @@
         main.log.info( "NODE COUNT = " + str( cluster.numCtrls ) )
         cellResult = main.TRUE
         packageResult = main.TRUE
-        onosUninstallResult = main.TRUE
         onosCliResult = main.TRUE
-        if not skipPack:
+        if cellApply:
             tempOnosIp = []
             for ctrl in cluster.runningNodes:
                 tempOnosIp.append( ctrl.ipAddress )
@@ -421,13 +420,15 @@
                                                cellName, cellApps,
                                                mininetIp, useSSH,
                                                tempOnosIp, installMax )
-            if removeLog:
-                main.log.info( "Removing raft logs" )
-                main.ONOSbench.onosRemoveRaftLogs()
 
-            onosUninstallResult = self.uninstallOnos( cluster, killRemoveMax )
-            self.processList( extraApply, applyArgs )
-            packageResult = self.buildOnos( cluster )
+        if removeLog:
+            main.log.info("Removing raft logs")
+            main.ONOSbench.onosRemoveRaftLogs()
+        onosUninstallResult = self.uninstallOnos( cluster, killRemoveMax )
+        self.processList( extraApply, applyArgs )
+
+        if not skipPack:
+            packageResult = self.buildOnos(cluster)
 
         onosInstallResult = self.installOnos( cluster, installMax, installParallel )
 
