diff --git a/BUILD.sh b/BUILD.sh
index 54e8d96..eb0c299 100755
--- a/BUILD.sh
+++ b/BUILD.sh
@@ -114,10 +114,10 @@
 
 if [[ $PLATFORM == ub16 ]]; then
     PLATFORM_REPOSITORY=${1:-OSM}
-    PLATFORM_VERSION=${2:-4.3.1.0.53704}
+    PLATFORM_VERSION=${2:-4.99.1.1.57142}
 elif [[ $PLATFORM == fc20 ]]; then
     PLATFORM_REPOSITORY=${1:-OSM}  # change to OSM when published
-    PLATFORM_VERSION=${2:-4.3.1.0.53705}
+    PLATFORM_VERSION=${2:-4.99.1.1.57142}
 else
     echo "Internal error: unknown platform $PLATFORM"
     exit 1
@@ -186,8 +186,8 @@
 	 rw.core.util-util=${PLATFORM_VERSION} \
 	 rw.core.rwvx-rwvx=${PLATFORM_VERSION} \
 	 rw.core.rwvx-rwdts=${PLATFORM_VERSION} \
-	 rw.automation.core-RWAUTO=${PLATFORM_VERSION} \
-         rw.core.rwvx-rwha-1.0=${PLATFORM_VERSION}
+	 rw.automation.core-RWAUTO=${PLATFORM_VERSION}
+         # rw.core.rwvx-rwha-1.0=${PLATFORM_VERSION}
 
     sudo apt-get install python-cinderclient
     
diff --git a/rwlaunchpad/test/launchpad.py b/rwlaunchpad/test/launchpad.py
index 0ec3d18..5b40b90 100755
--- a/rwlaunchpad/test/launchpad.py
+++ b/rwlaunchpad/test/launchpad.py
@@ -40,6 +40,7 @@
 
 from rift.vcs.ext import ClassProperty
 
+
 logger = logging.getLogger(__name__)
 
 
@@ -421,7 +422,7 @@
             GlanceServer(),
             rift.vcs.DtsRouterTasklet(),
             rift.vcs.MsgBrokerTasklet(),
-            rift.vcs.RestPortForwardTasklet(),
+            #rift.vcs.RestPortForwardTasklet(),
             rift.vcs.RestconfTasklet(),
             rift.vcs.RiftCli(),
             rift.vcs.uAgentTasklet(),
@@ -548,8 +549,8 @@
         for f in os.listdir(cleanup_dir_name):
             if f.endswith(".aof") or f.endswith(".rdb"):
                 os.remove(os.path.join(cleanup_dir_name, f))
-    
-        # Remove the persistant DTS recovery files 
+
+        # Remove the persistant DTS recovery files
         for f in os.listdir(cleanup_dir_name):
             if f.endswith(".db"):
                 os.remove(os.path.join(cleanup_dir_name, f))
@@ -569,11 +570,11 @@
 
     # Create the prepared system from the demo
     system = rift.vcs.demo.prepared_system_from_demo_and_args(demo, args,
-              northbound_listing="cli_launchpad_schema_listing.txt",
+              northbound_listing=["cli_launchpad_schema_listing.txt"],
               netconf_trace_override=True)
 
-    confd_ip = socket.gethostbyname(socket.gethostname())
     # TODO: This need to be changed when launchpad starts running on multiple VMs
+    # confd_ip = socket.gethostbyname(socket.gethostname())
     rift.vcs.logger.configure_sink(config_file=None, confd_ip="127.0.0.1")
 
     # Start the prepared system
