diff --git a/build.gradle.new b/build.gradle.new
new file mode 100644
index 0000000..fa2f2e6
--- /dev/null
+++ b/build.gradle.new
@@ -0,0 +1,130 @@
+/*
+ * Copyright 2012 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.opencord.gradle.rules.*
+import org.yaml.snakeyaml.Yaml
+
+buildscript {
+  repositories {
+    maven {
+      url "https://plugins.gradle.org/m2/"
+    }
+  }
+  dependencies {
+    classpath "gradle.plugin.com.dorongold.plugins:task-tree:1.2.1"
+  }
+}
+
+apply plugin: "com.dorongold.task-tree"
+
+evaluationDependsOn(':maas')
+evaluationDependsOn(':platform-install')
+
+allprojects {
+    apply plugin: 'base'
+    apply plugin: 'de.gesellix.docker'
+    //apply plugin: 'com.tmiyamon.config'
+
+    docker {
+        // dockerHost = System.env.DOCKER_HOST ?: 'unix:///var/run/docker.sock'
+        // dockerHost = System.env.DOCKER_HOST ?: 'https://192.168.99.100:2376'
+        // certPath = System.getProperty('docker.cert.path') ?: "${System.getProperty('user.home')}/.docker/machine/machines/default"
+        // authConfigPlain = [
+        //   "username"       : "joe",
+        //   "password"       : "some-pw-as-needed",
+        //   "email"          : "joe@acme.com",
+        //   "serveraddress"  : "https://index.docker.io/v1/"
+        //  ]
+    }
+}
+
+ext {
+
+    // Upstream registry to simplify filling out the comps table below
+    upstreamReg = project.hasProperty('upstreamReg') ? project.getProperty('upstreamReg') : 'docker.io'
+
+    // Target registry to be used to publish docker images needed for deployment
+    targetReg = project.hasProperty('targetReg') ? project.getProperty('targetReg') : 'localhost:5000'
+
+    // The tag used to tag the docker images push to the target registry
+    targetTag = project.hasProperty('targetTag') ? project.getProperty('targetTag') : 'candidate'
+
+    // Component table
+    comps = [
+            'onosproject/onos': [
+                    'type':     'image',
+                    'upstream': upstreamReg,
+                    'name':     'onosproject/onos',
+                    'digest':   'sha256:6c310b6bc798f745977973c8c883d3dd1eb250fd124ae4d627fd98a69efb5afc'
+            ],
+            'nginx': [
+                    'type':     'image',
+                    'upstream': upstreamReg,
+                    'name':     'nginx',
+                    'digest':   'sha256:b555f8c64ab4e85405e0d8b03f759b73ce88deb802892a3b155ef55e3e832806'
+            ],
+            'swarm': [
+                    'type':     'image',
+                    'upstream': upstreamReg,
+                    'name':     'swarm',
+                    'digest':   'sha256:6ca9b40980e2fcdcd229900ec8933f3e92c14ead22c9404cb09736cb4f3a9248'
+            ],
+    ]
+
+    // Deployment target config file (yaml format); this can be overwritten from the command line
+    // using the -PdeployConfig=<file-path> syntax.
+    deployConfig = project.hasProperty('deployConfig') ? project.getProperty('deployConfig') : './config/default.yml'
+
+}
+
+// ---------------- Useful tasks ----------------
+
+task fetchUpstreamImages {
+    comps.each { name, spec -> if (spec.type == 'image') { dependsOn "fetch" + name } }
+}
+
+
+task fetch  {
+    dependsOn fetchUpstreamImages
+}
+
+task buildImages  {
+    logger.info "Root project has nothing to build"
+}
+
+task publishImages {
+    comps.each { name, spec -> if (spec.type == 'image') { 
+            dependsOn "publish" + name 
+          } 
+    }
+}
+
+task publish {
+    dependsOn publishImages
+}
+
+tasks.addRule(new DockerFetchRule(project))
+tasks.addRule(new DockerPublishRule(project))
+tasks.addRule(new DockerTagRule(project))
+tasks.addRule(new GitSubmoduleUpdateRule(project))
+
+project('platform-install').deployPlatform.dependsOn project(':maas').deployBase
+publishImages.mustRunAfter project(':maas').prime 
+
+task deploy  {
+    dependsOn << project(':platform-install').deployPlatform
+}
+
diff --git a/components/cord-onos-publisher b/components/cord-onos-publisher
index 64030c4..7ea6e0e 160000
--- a/components/cord-onos-publisher
+++ b/components/cord-onos-publisher
@@ -1 +1 @@
-Subproject commit 64030c436d7df6cfcb20cf8106ebae98ef7eebf3
+Subproject commit 7ea6e0e8d1768ceb54ee0badf18a81e6cc5aaa74
diff --git a/components/cord-tester b/components/cord-tester
index 0776936..07608ef 160000
--- a/components/cord-tester
+++ b/components/cord-tester
@@ -1 +1 @@
-Subproject commit 077693604c287f9f1f68cdde59bc295267c30429
+Subproject commit 07608ef82bdbf93194dc5c85d6b15c27eafe0b75
diff --git a/components/maas b/components/maas
index a4ccbde..4b9faf1 160000
--- a/components/maas
+++ b/components/maas
@@ -1 +1 @@
-Subproject commit a4ccbde0b41e781953a0c8db53a2a28969b5716b
+Subproject commit 4b9faf1837aa0ec80b5c91c3d6c709c685f221f6
diff --git a/components/platform-install b/components/platform-install
index 6cc014f..8a8958f 160000
--- a/components/platform-install
+++ b/components/platform-install
@@ -1 +1 @@
-Subproject commit 6cc014f279df851e941a57576bc4f414c9c75184
+Subproject commit 8a8958fbe769f9b5d3025640b1018519cce55386
diff --git a/settings.gradle.new b/settings.gradle.new
new file mode 100644
index 0000000..f923548
--- /dev/null
+++ b/settings.gradle.new
@@ -0,0 +1,8 @@
+include 'maas'
+include 'platform-install'
+
+rootProject.name = 'main'
+project(':').buildFileName = 'build.gradle.new'
+project(':maas').buildFileName = 'build.gradle.new'
+project(':platform-install').buildFileName = 'build.gradle.new'
+
