diff --git a/TestON/tests/TopoConvNext/TopoConvNext.py b/TestON/tests/TopoConvNext/TopoConvNext.py
index 95bede7..9092a08 100644
--- a/TestON/tests/TopoConvNext/TopoConvNext.py
+++ b/TestON/tests/TopoConvNext/TopoConvNext.py
@@ -45,8 +45,8 @@
 
         main.step("Creating cell file")
         cell_file_result = main.ONOSbench.create_cell_file(
-                BENCH_ip, cell_name, MN1_ip, "onos-core",
-                ONOS1_ip)
+                BENCH_ip, cell_name, MN1_ip, 
+                "onos-core,onos-app-metrics", ONOS1_ip)
 
         main.step("Applying cell file to environment")
         cell_apply_result = main.ONOSbench.set_cell(cell_name)
@@ -88,7 +88,7 @@
         cli1 = main.ONOS1cli.start_onos_cli(ONOS1_ip)
 
         main.step("Enable metrics feature")
-        main.ONOS1cli.feature_install("onos-app-metrics")
+        #main.ONOS1cli.feature_install("onos-app-metrics")
 
         utilities.assert_equals(expect=main.TRUE,
                 actual= cell_file_result and cell_apply_result and\
@@ -816,143 +816,221 @@
         cluster_count += 2 
        
         #Supports up to 7 node configuration
-        for node in range(1, cluster_count+1):
-            if node == 2:
-                main.log.info("Closing previous ONOS connections")
-                main.ONOS1cli.logout()
-                main.log.info("Creating new cell file with "+
-                        str(node)+" nodes")
-                main.ONOSbench.create_cell_file(BENCH_ip, cell_name,
-                    MN1_ip, "onos-core", ONOS1_ip, ONOS2_ip)
-                main.log.info("Applying cell file to environment")
-                main.ONOSbench.set_cell(cell_name)
-                main.ONOS1cli.set_cell(cell_name)
-                main.ONOS2cli.set_cell(cell_name)
-                main.log.info("Packaging new ONOS")
-                main.ONOSbench.onos_package()
-                main.log.info("Installing ONOS on node: "+str(node))
-                install_result = \
-                    main.ONOSbench.onos_install(node=ONOS_ip_list[node])
-                main.log.info("Starting CLI for instance "+
-                        ONOS_ip_list[node])
-                main.ONOS2cli.start_onos_cli(ONOS_ip_list[node])
-                main.log.info("Installing metrics feature")
-                main.ONOS2cli.feature_install("onos-app-metrics")
-            elif node == 3:
-                main.log.info("Creating new cell file with "+
-                        str(node)+" nodes")
-                main.ONOSbench.create_cell_file(BENCH_ip, cell_name,
-                    MN1_ip, "onos-core", ONOS1_ip, ONOS2_ip, ONOS3_ip)
-                main.log.info("Applying cell file to environment")
-                main.ONOSbench.set_cell(cell_name)
-                main.ONOS1cli.set_cell(cell_name)
-                main.ONOS2cli.set_cell(cell_name)
-                main.ONOS3cli.set_cell(cell_name)
-                main.log.info("Packaging new ONOS")
-                main.ONOSbench.onos_package()
-                main.log.info("Installing ONOS on node: "+str(node))
-                install_result = \
-                    main.ONOSbench.onos_install(node=ONOS_ip_list[node])
-                main.log.info("Starting CLI for instance "+
-                        ONOS_ip_list[node])
-                main.ONOS3cli.start_onos_cli(ONOS_ip_list[node])
-                main.log.info("Installing metrics feature")
-                main.ONOS3cli.feature_install("onos-app-metrics")
-            elif node == 4:
-                main.log.info("Creating new cell file with "+
-                        str(node)+" nodes")
-                main.ONOSbench.create_cell_file(BENCH_ip, cell_name,
-                    MN1_ip, "onos-core", ONOS1_ip, ONOS2_ip, ONOS3_ip,
-                    ONOS4_ip)
-                main.log.info("Applying cell file to environment")
-                main.ONOSbench.set_cell(cell_name)
-                main.ONOS1cli.set_cell(cell_name)
-                main.ONOS2cli.set_cell(cell_name)
-                main.ONOS3cli.set_cell(cell_name)
-                main.ONOS4cli.set_cell(cell_name)
-                main.log.info("Packaging new ONOS")
-                main.ONOSbench.onos_package()
-                main.log.info("Installing ONOS on node: "+str(node))
-                install_result = \
-                    main.ONOSbench.onos_install(node=ONOS_ip_list[node])
-                main.log.info("Starting CLI for instance "+
-                        ONOS_ip_list[node])
-                main.ONOS4cli.start_onos_cli(ONOS_ip_list[node])
-                main.log.info("Installing metrics feature")
-                main.ONOS4cli.feature_install("onos-app-metrics")
-            elif node == 5:
-                main.log.info("Creating new cell file with "+
-                        str(node)+" nodes")
-                main.ONOSbench.create_cell_file(BENCH_ip, cell_name,
-                    MN1_ip, "onos-core", ONOS1_ip, ONOS2_ip, ONOS3_ip,
-                    ONOS4_ip, ONOS5_ip)
-                main.log.info("Applying cell file to environment")
-                main.ONOSbench.set_cell(cell_name)
-                main.ONOS1cli.set_cell(cell_name)
-                main.ONOS2cli.set_cell(cell_name)
-                main.ONOS3cli.set_cell(cell_name)
-                main.ONOS4cli.set_cell(cell_name)
-                main.ONOS5cli.set_cell(cell_name)
-                main.log.info("Packaging new ONOS")
-                main.ONOSbench.onos_package()
-                main.log.info("Installing ONOS on node: "+str(node))
-                install_result = \
-                    main.ONOSbench.onos_install(node=ONOS_ip_list[node])
-                main.log.info("Starting CLI for instance "+
-                        ONOS_ip_list[node])
-                main.ONOS5cli.start_onos_cli(ONOS_ip_list[node])
-                main.log.info("Installing metrics feature")
-                main.ONOS5cli.feature_install("onos-app-metrics")
-            elif node == 6:
-                main.log.info("Creating new cell file with "+
-                        str(node)+" nodes")
-                main.ONOSbench.create_cell_file(BENCH_ip, cell_name,
-                    MN1_ip, "onos-core", ONOS1_ip, ONOS2_ip, ONOS3_ip,
-                    ONOS4_ip, ONOS5_ip, ONOS6_ip)
-                main.log.info("Applying cell file to environment")
-                main.ONOSbench.set_cell(cell_name)
-                main.ONOS1cli.set_cell(cell_name)
-                main.ONOS2cli.set_cell(cell_name)
-                main.ONOS3cli.set_cell(cell_name)
-                main.ONOS4cli.set_cell(cell_name)
-                main.ONOS5cli.set_cell(cell_name)
-                main.ONOS6cli.set_cell(cell_name)
-                main.log.info("Packaging new ONOS")
-                main.ONOSbench.onos_package()
-                main.log.info("Installing ONOS on node: "+str(node))
-                install_result = \
-                    main.ONOSbench.onos_install(node=ONOS_ip_list[node])
-                main.log.info("Starting CLI for instance "+
-                        ONOS_ip_list[node])
-                main.ONOS6cli.start_onos_cli(ONOS_ip_list[node])
-                main.log.info("Installing metrics feature")
-                main.ONOS6cli.feature_install("onos-app-metrics")
-            elif node == 7:
-                main.log.info("Creating new cell file with "+
-                        str(node)+" nodes")
-                main.ONOSbench.create_cell_file(BENCH_ip, cell_name,
-                    MN1_ip, "onos-core", ONOS1_ip, ONOS2_ip, ONOS3_ip,
-                    ONOS4_ip, ONOS5_ip, ONOS6_ip, ONOS7_ip)
-                main.log.info("Applying cell file to environment")
-                main.ONOSbench.set_cell(cell_name)
-                main.ONOS1cli.set_cell(cell_name)
-                main.ONOS2cli.set_cell(cell_name)
-                main.ONOS3cli.set_cell(cell_name)
-                main.ONOS4cli.set_cell(cell_name)
-                main.ONOS5cli.set_cell(cell_name)
-                main.ONOS6cli.set_cell(cell_name)
-                main.ONOS7cli.set_cell(cell_name)
-                main.log.info("Packaging new ONOS")
-                main.ONOSbench.onos_package()
-                main.log.info("Installing ONOS on node: "+str(node))
-                install_result = \
-                    main.ONOSbench.onos_install(node=ONOS_ip_list[node])
-                main.log.info("Starting CLI for instance "+
-                        ONOS_ip_list[node])
-                main.ONOS7cli.start_onos_cli(ONOS_ip_list[node]) 
-                main.log.info("Installing metrics feature")
-                main.ONOS7cli.feature_install("onos-app-metrics")
-            time.sleep(5)
+        #TODO: Cleanup this ridiculous repetitive code 
+        if cluster_count == 2:
+            main.log.info("Closing previous ONOS connections")
+            main.ONOS1cli.logout()
+            main.log.info("Creating new cell file with "+
+                     str(node)+" nodes")
+            main.ONOSbench.create_cell_file(BENCH_ip, cell_name,
+                MN1_ip, "onos-core", ONOS1_ip, ONOS2_ip)
+            main.log.info("Applying cell file to environment")
+            main.ONOSbench.set_cell(cell_name)
+            main.ONOS1cli.set_cell(cell_name)
+            main.ONOS2cli.set_cell(cell_name)
+            main.log.info("Packaging new ONOS")
+            main.ONOSbench.onos_package()
+            main.log.info("Installing ONOS")
+            main.ONOSbench.onos_install(node=ONOS1_ip)
+            main.ONOSbench.onos_install(node=ONOS2_ip)
+            main.log.info("Starting CLI")
+            main.ONOS1cli.start_onos_cli(ONOS1_ip)
+            main.ONOS2cli.start_onos_cli(ONOS2_ip)
+            main.log.info("Installing metrics feature")
+            main.ONOS1cli.feature_install("onos-app-metrics")
+            main.ONOS2cli.feature_install("onos-app-metrics")
+        elif cluster_count == 3:
+            main.log.info("Closing previous ONOS connections")
+            main.ONOS1cli.logout()
+            main.ONOS2cli.logout()
+            main.log.info("Creating new cell file with "+
+                    str(node)+" nodes")
+            main.ONOSbench.create_cell_file(BENCH_ip, cell_name,
+                MN1_ip, "onos-core", ONOS1_ip, ONOS2_ip, ONOS3_ip)
+            main.log.info("Applying cell file to environment")
+            main.ONOSbench.set_cell(cell_name)
+            main.ONOS1cli.set_cell(cell_name)
+            main.ONOS2cli.set_cell(cell_name)
+            main.ONOS3cli.set_cell(cell_name)
+            main.log.info("Packaging new ONOS")
+            main.ONOSbench.onos_package()
+            main.log.info("Installing ONOS")
+            main.ONOSbench.onos_install(node=ONOS1_ip)
+            main.ONOSbench.onos_install(node=ONOS2_ip)
+            main.ONOSbench.onos_install(node=ONOS3_ip)
+            main.log.info("Starting CLI")
+            main.ONOS1cli.start_onos_cli(ONOS1_ip)
+            main.ONOS2cli.start_onos_cli(ONOS2_ip)
+            main.ONOS3cli.start_onos_cli(ONOS3_ip)
+            main.log.info("Installing metrics feature")
+            main.ONOS1cli.feature_install("onos-app-metrics")
+            main.ONOS2cli.feature_install("onos-app-metrics")
+            main.ONOS3cli.feature_install("onos-app-metrics")
+        elif cluster_count == 4:
+            main.log.info("Closing previous ONOS connections")
+            main.ONOS1cli.logout()
+            main.ONOS2cli.logout()
+            main.ONOS3cli.logout()
+            main.log.info("Creating new cell file with "+
+                    str(node)+" nodes")
+            main.ONOSbench.create_cell_file(BENCH_ip, cell_name,
+                MN1_ip, "onos-core", ONOS1_ip, ONOS2_ip, ONOS3_ip,
+                ONOS4_ip)
+            main.log.info("Applying cell file to environment")
+            main.ONOSbench.set_cell(cell_name)
+            main.ONOS1cli.set_cell(cell_name)
+            main.ONOS2cli.set_cell(cell_name)
+            main.ONOS3cli.set_cell(cell_name)
+            main.ONOS4cli.set_cell(cell_name)
+            main.log.info("Packaging new ONOS")
+            main.ONOSbench.onos_package()
+            main.log.info("Installing ONOS")
+            main.ONOSbench.onos_install(node=ONOS1_ip)
+            main.ONOSbench.onos_install(node=ONOS2_ip)
+            main.ONOSbench.onos_install(node=ONOS3_ip)
+            main.ONOSbench.onos_install(node=ONOS4_ip)
+            main.log.info("Starting CLI")
+            main.ONOS1cli.start_onos_cli(ONOS1_ip)
+            main.ONOS2cli.start_onos_cli(ONOS2_ip)
+            main.ONOS3cli.start_onos_cli(ONOS3_ip)
+            main.ONOS4cli.start_onos_cli(ONOS4_ip)
+            main.log.info("Installing metrics feature")
+            main.ONOS1cli.feature_install("onos-app-metrics")
+            main.ONOS2cli.feature_install("onos-app-metrics")
+            main.ONOS3cli.feature_install("onos-app-metrics")
+            main.ONOS4cli.feature_install("onos-app-metrics")
+        elif cluster_count == 5:
+            main.log.info("Closing previous ONOS connections")
+            main.ONOS1cli.logout()
+            main.ONOS2cli.logout()
+            main.ONOS3cli.logout()
+            main.ONOS4cli.logout()
+            main.log.info("Creating new cell file with "+
+                    str(node)+" nodes")
+            main.ONOSbench.create_cell_file(BENCH_ip, cell_name,
+                MN1_ip, "onos-core", ONOS1_ip, ONOS2_ip, ONOS3_ip,
+                ONOS4_ip, ONOS5_ip)
+            main.log.info("Applying cell file to environment")
+            main.ONOSbench.set_cell(cell_name)
+            main.ONOS1cli.set_cell(cell_name)
+            main.ONOS2cli.set_cell(cell_name)
+            main.ONOS3cli.set_cell(cell_name)
+            main.ONOS4cli.set_cell(cell_name)
+            main.ONOS5cli.set_cell(cell_name)
+            main.log.info("Packaging new ONOS")
+            main.ONOSbench.onos_package()
+            main.log.info("Installing ONOS")
+            main.ONOSbench.onos_install(node=ONOS1_ip)
+            main.ONOSbench.onos_install(node=ONOS2_ip)
+            main.ONOSbench.onos_install(node=ONOS3_ip)
+            main.ONOSbench.onos_install(node=ONOS4_ip)
+            main.ONOSbench.onos_install(node=ONOS5_ip)
+            main.log.info("Starting CLI")
+            main.ONOS1cli.start_onos_cli(ONOS1_ip)
+            main.ONOS2cli.start_onos_cli(ONOS2_ip)
+            main.ONOS3cli.start_onos_cli(ONOS3_ip)
+            main.ONOS4cli.start_onos_cli(ONOS4_ip)
+            main.ONOS5cli.start_onos_cli(ONOS5_ip)
+            main.log.info("Installing metrics feature")
+            main.ONOS1cli.feature_install("onos-app-metrics")
+            main.ONOS2cli.feature_install("onos-app-metrics")
+            main.ONOS3cli.feature_install("onos-app-metrics")
+            main.ONOS4cli.feature_install("onos-app-metrics")
+            main.ONOS5cli.feature_install("onos-app-metrics")
+        elif cluster_count == 6:
+            main.log.info("Closing previous ONOS connections")
+            main.ONOS1cli.logout()
+            main.ONOS2cli.logout()
+            main.ONOS3cli.logout()
+            main.ONOS4cli.logout()
+            main.ONOS5cli.logout()
+            main.log.info("Creating new cell file with "+
+                    str(node)+" nodes")
+            main.ONOSbench.create_cell_file(BENCH_ip, cell_name,
+                MN1_ip, "onos-core", ONOS1_ip, ONOS2_ip, ONOS3_ip,
+                ONOS4_ip, ONOS5_ip, ONOS6_ip)
+            main.log.info("Applying cell file to environment")
+            main.ONOSbench.set_cell(cell_name)
+            main.ONOS1cli.set_cell(cell_name)
+            main.ONOS2cli.set_cell(cell_name)
+            main.ONOS3cli.set_cell(cell_name)
+            main.ONOS4cli.set_cell(cell_name)
+            main.ONOS5cli.set_cell(cell_name)
+            main.ONOS6cli.set_cell(cell_name)
+            main.log.info("Packaging new ONOS")
+            main.ONOSbench.onos_package()
+            main.log.info("Installing ONOS")
+            main.ONOSbench.onos_install(node=ONOS1_ip)
+            main.ONOSbench.onos_install(node=ONOS2_ip)
+            main.ONOSbench.onos_install(node=ONOS3_ip)
+            main.ONOSbench.onos_install(node=ONOS4_ip)
+            main.ONOSbench.onos_install(node=ONOS5_ip)
+            main.ONOSbench.onos_install(node=ONOS6_ip)
+            main.log.info("Starting CLI")
+            main.ONOS1cli.start_onos_cli(ONOS1_ip)
+            main.ONOS2cli.start_onos_cli(ONOS2_ip)
+            main.ONOS3cli.start_onos_cli(ONOS3_ip)
+            main.ONOS4cli.start_onos_cli(ONOS4_ip)
+            main.ONOS5cli.start_onos_cli(ONOS5_ip)
+            main.ONOS6cli.start_onos_cli(ONOS6_ip)
+            main.log.info("Installing metrics feature")
+            main.ONOS1cli.feature_install("onos-app-metrics")
+            main.ONOS2cli.feature_install("onos-app-metrics")
+            main.ONOS3cli.feature_install("onos-app-metrics")
+            main.ONOS4cli.feature_install("onos-app-metrics")
+            main.ONOS5cli.feature_install("onos-app-metrics")
+            main.ONOS6cli.feature_install("onos-app-metrics")
+        elif cluster_count == 7:
+            main.log.info("Closing previous ONOS connections")
+            main.ONOS1cli.logout()
+            main.ONOS2cli.logout()
+            main.ONOS3cli.logout()
+            main.ONOS4cli.logout()
+            main.ONOS5cli.logout()
+            main.log.info("Creating new cell file with "+
+                    str(node)+" nodes")
+            main.ONOSbench.create_cell_file(BENCH_ip, cell_name,
+                MN1_ip, "onos-core", ONOS1_ip, ONOS2_ip, ONOS3_ip,
+                ONOS4_ip, ONOS5_ip, ONOS6_ip, ONOS7_ip)
+            main.log.info("Applying cell file to environment")
+            main.ONOSbench.set_cell(cell_name)
+            main.ONOS1cli.set_cell(cell_name)
+            main.ONOS2cli.set_cell(cell_name)
+            main.ONOS3cli.set_cell(cell_name)
+            main.ONOS4cli.set_cell(cell_name)
+            main.ONOS5cli.set_cell(cell_name)
+            main.ONOS6cli.set_cell(cell_name)
+            main.ONOS7cli.set_cell(cell_name)
+            main.log.info("Packaging new ONOS")
+            main.ONOSbench.onos_package()
+            main.log.info("Installing ONOS")
+            main.ONOSbench.onos_install(node=ONOS1_ip)
+            main.ONOSbench.onos_install(node=ONOS2_ip)
+            main.ONOSbench.onos_install(node=ONOS3_ip)
+            main.ONOSbench.onos_install(node=ONOS4_ip)
+            main.ONOSbench.onos_install(node=ONOS5_ip)
+            main.ONOSbench.onos_install(node=ONOS6_ip)
+            main.ONOSbench.onos_install(node=ONOS7_ip)
+            main.log.info("Starting CLI")
+            main.ONOS1cli.start_onos_cli(ONOS1_ip)
+            main.ONOS2cli.start_onos_cli(ONOS2_ip)
+            main.ONOS3cli.start_onos_cli(ONOS3_ip)
+            main.ONOS4cli.start_onos_cli(ONOS4_ip)
+            main.ONOS5cli.start_onos_cli(ONOS5_ip)
+            main.ONOS6cli.start_onos_cli(ONOS6_ip)
+            main.ONOS7cli.start_onos_cli(ONOS7_ip) 
+            main.log.info("Installing metrics feature")
+            main.ONOS1cli.feature_install("onos-app-metrics")
+            main.ONOS2cli.feature_install("onos-app-metrics")
+            main.ONOS3cli.feature_install("onos-app-metrics")
+            main.ONOS4cli.feature_install("onos-app-metrics")
+            main.ONOS5cli.feature_install("onos-app-metrics")
+            main.ONOS6cli.feature_install("onos-app-metrics")
+            main.ONOS7cli.feature_install("onos-app-metrics")
+
+        install_result = main.TRUE
+
+        time.sleep(5)
 
         if install_result == main.TRUE:
             assertion = main.TRUE
@@ -964,6 +1042,3 @@
                        " nodes successful",
                 onfail="Scale out to "+str(cluster_count)+\
                        " nodes failed")
-
-
-
