diff --git a/TestON/drivers/common/cli/onosdriver.py b/TestON/drivers/common/cli/onosdriver.py
index 2678af2..cee79db 100644
--- a/TestON/drivers/common/cli/onosdriver.py
+++ b/TestON/drivers/common/cli/onosdriver.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 '''
-TODO: Document
 '''
+#TODO: Document
 
 import sys
 import time
@@ -32,8 +32,16 @@
 
 
             self.name = self.options['name']
-            self.handle = super(OnosDriver,self).connect(user_name = self.user_name, ip_address = self.ip_address,port = self.port, pwd = self.pwd, home = self.home)
+            self.handle = super(OnosDriver,self).connect(
+                    user_name = self.user_name, 
+                    ip_address = self.ip_address,
+                    port = self.port, 
+                    pwd = self.pwd, 
+                    home = self.home)
 
+           
+            self.handle.sendline("cd "+ self.home)
+            self.handle.expect("\$")
             if self.handle:
                 return self.handle
             else :
@@ -75,6 +83,7 @@
         
         try:
             self.handle.sendline("onos-package")
+            self.handle.expect("onos-package")
             self.handle.expect("tar.gz",timeout=10)
             handle = str(self.handle.before)
             main.log.info("onos-package command returned: "+
@@ -101,7 +110,15 @@
         On Failure, exits the test
         '''
         try:
+            main.log.info("Running 'mvn clean install' on " + str(self.name) + 
+                    ". This may take some time.") 
+            self.handle.sendline("cd "+ self.home)
+            self.handle.expect("\$")
+
+            self.handle.sendline("\n")
+            self.handle.expect("\$")
             self.handle.sendline("mvn clean install")
+            self.handle.expect("mvn clean install")
             while 1:
                 i=self.handle.expect([
                     'There\sis\sinsufficient\smemory\sfor\sthe\sJava\s\
@@ -110,6 +127,7 @@
                     'BUILD\sSUCCESS',
                     'ONOS\$',
                     pexpect.TIMEOUT],timeout=600)
+                #TODO: log the build time
                 if i == 0:
                     main.log.error(self.name + ":There is insufficient memory \
                             for the Java Runtime Environment to continue.")
@@ -125,6 +143,7 @@
                     main.log.info(self.name + ": Build success!")
                 elif i == 3:
                     main.log.info(self.name + ": Build complete")
+                    self.handle.sendline("\n")
                     self.handle.expect("\$", timeout=60)
                     return main.TRUE
                 elif i == 4:
@@ -352,12 +371,3 @@
             main.cleanup()
             main.exit()
 
-
-
-
-
-
-
-
-
-
diff --git a/TestON/tests/ONOSNextTest/ONOSNextTest.py b/TestON/tests/ONOSNextTest/ONOSNextTest.py
index 7c0355e..c65bfa6 100755
--- a/TestON/tests/ONOSNextTest/ONOSNextTest.py
+++ b/TestON/tests/ONOSNextTest/ONOSNextTest.py
@@ -24,7 +24,7 @@
         
         cell_name = main.params['ENV']['cellName']
         ONOS1_ip = main.params['CTRL']['ip1']
-
+        
         install_result = main.ONOSbench.clean_install()
         package_result = main.ONOSbench.onos_package()
         cell_result = main.ONOSbench.set_cell(cell_name)
diff --git a/TestON/tests/ONOSNextTest/ONOSNextTest.topo b/TestON/tests/ONOSNextTest/ONOSNextTest.topo
index 87f8c73..5cb178f 100755
--- a/TestON/tests/ONOSNextTest/ONOSNextTest.topo
+++ b/TestON/tests/ONOSNextTest/ONOSNextTest.topo
@@ -2,7 +2,7 @@
     <COMPONENT>
 
         <ONOSbench>
-            <host>10.128.20.10</host>
+            <host>10.128.30.10</host>
             <user>admin</user>
             <password>onos_test</password>
             <type>OnosDriver</type>
@@ -11,16 +11,16 @@
         </ONOSbench>
 
         <ONOS1>
-            <host>10.128.20.11</host>
-            <user>admin</user>
-            <password>onos_test</password>
+            <host>10.128.30.11</host>
+            <user>sdn</user>
+            <password>sdn</password>
             <type>OnosDriver</type>
             <connect_order>2</connect_order>
             <COMPONENTS> </COMPONENTS>
         </ONOS1>
 
         <Mininet1>
-            <host>10.128.10.90</host>
+            <host>10.128.11.11</host>
             <user>admin</user>
             <password>onos_test</password>
             <type>MininetCliDriver</type>
diff --git a/TestON/tests/ONOSNextTest/__init__.py b/TestON/tests/ONOSNextTest/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/TestON/tests/ONOSNextTest/__init__.py
