diff --git a/.gitmodules b/.gitmodules
index d82bee14bdf06bc407e0d6f61a3473e5913f6c79..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,53 +0,0 @@
-[submodule "roles/apps/k8s-kube-ui"]
-	path = roles/apps/k8s-kube-ui
-	url = https://github.com/ansibl8s/k8s-kube-ui.git
-	branch = v1.0
-[submodule "roles/apps/k8s-kubedns"]
-	path = roles/apps/k8s-kubedns
-	url = https://github.com/ansibl8s/k8s-kubedns.git
-	branch = v1.0
-[submodule "roles/apps/k8s-common"]
-	path = roles/apps/k8s-common
-	url = https://github.com/ansibl8s/k8s-common.git
-	branch = v1.0
-[submodule "roles/apps/k8s-redis"]
-	path = roles/apps/k8s-redis
-	url = https://github.com/ansibl8s/k8s-redis.git
-	branch = v1.0
-[submodule "roles/apps/k8s-elasticsearch"]
-	path = roles/apps/k8s-elasticsearch
-	url = https://github.com/ansibl8s/k8s-elasticsearch.git
-[submodule "roles/apps/k8s-fabric8"]
-	path = roles/apps/k8s-fabric8
-	url = https://github.com/ansibl8s/k8s-fabric8.git
-	branch = v1.0
-[submodule "roles/apps/k8s-memcached"]
-	path = roles/apps/k8s-memcached
-	url = https://github.com/ansibl8s/k8s-memcached.git
-	branch = v1.0
-[submodule "roles/apps/k8s-postgres"]
-	path = roles/apps/k8s-postgres
-	url = https://github.com/ansibl8s/k8s-postgres.git
-	branch = v1.0
-[submodule "roles/apps/k8s-kubedash"]
-	path = roles/apps/k8s-kubedash
-	url = https://github.com/ansibl8s/k8s-kubedash.git
-[submodule "roles/apps/k8s-heapster"]
-	path = roles/apps/k8s-heapster
-	url = https://github.com/ansibl8s/k8s-heapster.git
-[submodule "roles/apps/k8s-influxdb"]
-	path = roles/apps/k8s-influxdb
-	url = https://github.com/ansibl8s/k8s-influxdb.git
-[submodule "roles/apps/k8s-kube-logstash"]
-	path = roles/apps/k8s-kube-logstash
-	url = https://github.com/ansibl8s/k8s-kube-logstash.git
-[submodule "roles/apps/k8s-etcd"]
-	path = roles/apps/k8s-etcd
-	url = https://github.com/ansibl8s/k8s-etcd.git
-[submodule "roles/apps/k8s-rabbitmq"]
-	path = roles/apps/k8s-rabbitmq
-	url = https://github.com/ansibl8s/k8s-rabbitmq.git
-[submodule "roles/apps/k8s-pgbouncer"]
-	path = roles/apps/k8s-pgbouncer
-	url = https://github.com/ansibl8s/k8s-pgbouncer.git
-	branch = v1.0
diff --git a/apps.yml b/apps.yml
deleted file mode 100644
index ee9d9f36b55d48d14ce2e94399fc4bd3af0fb110..0000000000000000000000000000000000000000
--- a/apps.yml
+++ /dev/null
@@ -1,29 +0,0 @@
----
-- hosts: kube-master
-  roles:
-    # System
-    - { role: apps/k8s-kubedns, tags: ['kubedns', 'kube-system'] }
-
-    # Databases
-    - { role: apps/k8s-postgres, tags: 'postgres' }
-    - { role: apps/k8s-elasticsearch, tags: 'elasticsearch' }
-    - { role: apps/k8s-memcached, tags: 'memcached' }
-    - { role: apps/k8s-redis, tags: 'redis' }
-
-    # Msg Broker
-    - { role: apps/k8s-rabbitmq, tags: 'rabbitmq' }
-
-    # Monitoring
-    - { role: apps/k8s-influxdb, tags: ['influxdb', 'kube-system']}
-    - { role: apps/k8s-heapster, tags: ['heapster', 'kube-system']}
-    - { role: apps/k8s-kubedash, tags: ['kubedash', 'kube-system']}
-
-    # logging
-    - { role: apps/k8s-kube-logstash, tags: 'kube-logstash'}
-
-    # Console
-    - { role: apps/k8s-fabric8, tags: 'fabric8' }
-    - { role: apps/k8s-kube-ui, tags: ['kube-ui', 'kube-system']}
-
-    # ETCD
-    - { role: apps/k8s-etcd, tags: 'etcd'}
diff --git a/roles/apps/k8s-common b/roles/apps/k8s-common
deleted file mode 160000
index 8abd4ec3bcdc5f36d96c312f3a424724520a12b8..0000000000000000000000000000000000000000
--- a/roles/apps/k8s-common
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 8abd4ec3bcdc5f36d96c312f3a424724520a12b8
diff --git a/roles/apps/k8s-elasticsearch b/roles/apps/k8s-elasticsearch
deleted file mode 160000
index f089f60fb1102378b6def3972b50644deff96484..0000000000000000000000000000000000000000
--- a/roles/apps/k8s-elasticsearch
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit f089f60fb1102378b6def3972b50644deff96484
diff --git a/roles/apps/k8s-etcd b/roles/apps/k8s-etcd
deleted file mode 160000
index abd61ee91ae729e7b79ecd56d6bb4eed0ddbe604..0000000000000000000000000000000000000000
--- a/roles/apps/k8s-etcd
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit abd61ee91ae729e7b79ecd56d6bb4eed0ddbe604
diff --git a/roles/apps/k8s-fabric8 b/roles/apps/k8s-fabric8
deleted file mode 160000
index 702923e2000d07bb95044c747c499bb04c3d16bf..0000000000000000000000000000000000000000
--- a/roles/apps/k8s-fabric8
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 702923e2000d07bb95044c747c499bb04c3d16bf
diff --git a/roles/apps/k8s-heapster b/roles/apps/k8s-heapster
deleted file mode 160000
index 5442209acd072d170f9d24e2bbd00b95af737d7d..0000000000000000000000000000000000000000
--- a/roles/apps/k8s-heapster
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 5442209acd072d170f9d24e2bbd00b95af737d7d
diff --git a/roles/apps/k8s-influxdb b/roles/apps/k8s-influxdb
deleted file mode 160000
index b892974d5b8bc624ac742e8a6fb7737db8a96a32..0000000000000000000000000000000000000000
--- a/roles/apps/k8s-influxdb
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit b892974d5b8bc624ac742e8a6fb7737db8a96a32
diff --git a/roles/apps/k8s-kube-logstash b/roles/apps/k8s-kube-logstash
deleted file mode 160000
index 71c7bf98210e8907554a26e25cc9c2a3ece8cffd..0000000000000000000000000000000000000000
--- a/roles/apps/k8s-kube-logstash
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 71c7bf98210e8907554a26e25cc9c2a3ece8cffd
diff --git a/roles/apps/k8s-kube-ui b/roles/apps/k8s-kube-ui
deleted file mode 160000
index 0b5be08de2b3f373146a36aef88be3d4e5565dc2..0000000000000000000000000000000000000000
--- a/roles/apps/k8s-kube-ui
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 0b5be08de2b3f373146a36aef88be3d4e5565dc2
diff --git a/roles/apps/k8s-kubedash b/roles/apps/k8s-kubedash
deleted file mode 160000
index 21544cc2a908b1578409c5eaca7ee2771b3b9811..0000000000000000000000000000000000000000
--- a/roles/apps/k8s-kubedash
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 21544cc2a908b1578409c5eaca7ee2771b3b9811
diff --git a/roles/apps/k8s-kubedns b/roles/apps/k8s-kubedns
deleted file mode 160000
index 82b75f84129189fcfb08adfeb6ed6114c68dde3e..0000000000000000000000000000000000000000
--- a/roles/apps/k8s-kubedns
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 82b75f84129189fcfb08adfeb6ed6114c68dde3e
diff --git a/roles/apps/k8s-memcached b/roles/apps/k8s-memcached
deleted file mode 160000
index 60a66ca0ae4dc9a7e29b9b9619134adada53e1a4..0000000000000000000000000000000000000000
--- a/roles/apps/k8s-memcached
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 60a66ca0ae4dc9a7e29b9b9619134adada53e1a4
diff --git a/roles/apps/k8s-pgbouncer b/roles/apps/k8s-pgbouncer
deleted file mode 160000
index 79961d1df223dd1563e41a1df109c4cffa8801ed..0000000000000000000000000000000000000000
--- a/roles/apps/k8s-pgbouncer
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 79961d1df223dd1563e41a1df109c4cffa8801ed
diff --git a/roles/apps/k8s-postgres b/roles/apps/k8s-postgres
deleted file mode 160000
index a03a14c46f19732fa7a3ee37a37d9f0375a6e2d2..0000000000000000000000000000000000000000
--- a/roles/apps/k8s-postgres
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit a03a14c46f19732fa7a3ee37a37d9f0375a6e2d2
diff --git a/roles/apps/k8s-rabbitmq b/roles/apps/k8s-rabbitmq
deleted file mode 160000
index 2b538e243a3230c97591a28ac438619ebd555e4c..0000000000000000000000000000000000000000
--- a/roles/apps/k8s-rabbitmq
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 2b538e243a3230c97591a28ac438619ebd555e4c
diff --git a/roles/apps/k8s-redis b/roles/apps/k8s-redis
deleted file mode 160000
index a4e134fef3c5ed5db83201f38347638e4bc0200c..0000000000000000000000000000000000000000
--- a/roles/apps/k8s-redis
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit a4e134fef3c5ed5db83201f38347638e4bc0200c
diff --git a/roles/download/defaults/main.yml b/roles/download/defaults/main.yml
index ce4f3212cfcdac88dbef207d6ff6b02d9658c4b3..be3f568d28dff94cd53eafa38c61d1ed0717e9bc 100644
--- a/roles/download/defaults/main.yml
+++ b/roles/download/defaults/main.yml
@@ -9,12 +9,15 @@ calico_cni_version: v1.0.0
 weave_version: v1.4.4
 
 # Download URL's
-kube_download_url: "https://storage.googleapis.com/kubernetes-release/release/{{ kube_version }}/bin/linux/amd64"
-etcd_download_url: "https://github.com/coreos/etcd/releases/download/{{ etcd_version }}/etcd-{{ etcd_version }}-linux-amd64.tar.gz"
-calico_download_url: "https://github.com/Metaswitch/calico-docker/releases/download/{{calico_version}}/calicoctl"
-calico_cni_download_url: "https://github.com/projectcalico/calico-cni/releases/download/{{calico_cni_version}}/calico"
-calico_cni_ipam_download_url: "https://github.com/projectcalico/calico-cni/releases/download/{{calico_cni_version}}/calico-ipam"
-weave_download_url: "https://github.com/weaveworks/weave/releases/download/{{weave_version}}/weave"
+kubelet_download_url: "https://storage.googleapis.com/kubespray/{{kube_version}}_kubernetes-kubelet"
+apiserver_download_url: "https://storage.googleapis.com/kubespray/{{kube_version}}_kubernetes-apiserver"
+kubectl_download_url: "https://storage.googleapis.com/kubespray/{{kube_version}}_kubernetes-kubectl"
+
+etcd_download_url: "https://storage.googleapis.com/kubespray/{{etcd_version}}_etcd"
+calico_download_url: "https://storage.googleapis.com/kubespray/{{calico_version}}_calico"
+calico_cni_download_url: "https://storage.googleapis.com/kubespray/{{calico_cni_version}}_calico-cni-plugin"
+calico_cni_ipam_download_url: "https://storage.googleapis.com/kubespray/{{calico_cni_version}}_calico-cni-plugin-ipam"
+weave_download_url: "https://storage.googleapis.com/kubespray/{{weave_version}}_weave"
 
 # Checksums
 calico_checksum: "1fa22c0ee0cc661f56aa09169a3661fb46e552b53fae5fae9aac010e0666b281"
@@ -29,57 +32,73 @@ kube_apiserver_checksum: "aebb2c131674e231ba8dcad4438624c876627e77f47b0c6ef96bd2
 downloads:
   - name: calico
     dest: calico/bin/calicoctl
+    version: "{{calico_version}}"
     sha256: "{{ calico_checksum }}"
+    source_url: "{{ calico_download_url }}"
     url: "{{ calico_download_url }}"
     owner: "root"
     mode: "0755"
 
   - name: calico-cni-plugin
     dest: calico/bin/calico
+    version: "{{calico_cni_version}}"
     sha256: "{{ calico_cni_checksum }}"
+    source_url: "{{ calico_cni_download_url }}"
     url: "{{ calico_cni_download_url }}"
     owner: "root"
     mode: "0755"
 
   - name: calico-cni-plugin-ipam
     dest: calico/bin/calico-ipam
+    version: "{{calico_cni_version}}"
     sha256: "{{ calico_cni_ipam_checksum }}"
+    source_url: "{{ calico_cni_ipam_download_url }}"
     url: "{{ calico_cni_ipam_download_url }}"
     owner: "root"
     mode: "0755"
 
   - name: weave
     dest: weave/bin/weave
+    version: "{{weave_version}}"
+    source_url: "{{weave_download_url}}"
     url: "{{weave_download_url}}"
     sha256: "{{ weave_checksum }}"
     owner: "root"
     mode: "0755"
 
   - name: etcd
+    version: "{{etcd_version}}"
     dest: "etcd/etcd-{{ etcd_version }}-linux-amd64.tar.gz"
     sha256: "{{ etcd_checksum }}"
+    source_url: "{{ etcd_download_url }}"
     url: "{{ etcd_download_url }}"
     unarchive: true
     owner: "etcd"
     mode: "0755"
 
   - name: kubernetes-kubelet
+    version: "{{kube_version}}"
     dest: kubernetes/bin/kubelet
     sha256: "{{kubelet_checksum}}"
-    url: "{{ kube_download_url }}/kubelet"
+    source_url: "{{ kubelet_download_url }}"
+    url: "{{ kubelet_download_url }}"
     owner: "kube"
     mode: "0755"
 
   - name: kubernetes-kubectl
     dest: kubernetes/bin/kubectl
+    version: "{{kube_version}}"
     sha256: "{{kubectl_checksum}}"
-    url: "{{ kube_download_url }}/kubectl"
+    source_url: "{{ kubectl_download_url }}"
+    url: "{{ kubectl_download_url }}"
     owner: "kube"
     mode: "0755"
 
   - name: kubernetes-apiserver
     dest: kubernetes/bin/kube-apiserver
+    version: "{{kube_version}}"
     sha256: "{{kube_apiserver_checksum}}"
-    url: "{{ kube_download_url }}/kube-apiserver"
+    source_url: "{{ apiserver_download_url }}"
+    url: "{{ apiserver_download_url }}"
     owner: "kube"
     mode: "0755"
diff --git a/roles/download/tasks/uploads.yml b/roles/download/tasks/uploads.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ed97d539c095cf1413af30cc23dea272095b97dd
--- /dev/null
+++ b/roles/download/tasks/uploads.yml
@@ -0,0 +1 @@
+---
diff --git a/roles/uploads/defaults/main.yml b/roles/uploads/defaults/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..f1a767b485f30d0b407b410949514b04142f7352
--- /dev/null
+++ b/roles/uploads/defaults/main.yml
@@ -0,0 +1,101 @@
+---
+local_release_dir: /tmp
+
+# Versions
+kube_version: v1.1.8
+etcd_version: v2.2.5
+calico_version: v0.17.0
+calico_cni_version: v1.0.0
+weave_version: v1.4.4
+
+# Download URL's
+kube_download_url: "https://storage.googleapis.com/kubernetes-release/release/{{ kube_version }}/bin/linux/amd64"
+etcd_download_url: "https://github.com/coreos/etcd/releases/download/{{ etcd_version }}/etcd-{{ etcd_version }}-linux-amd64.tar.gz"
+calico_download_url: "https://github.com/Metaswitch/calico-docker/releases/download/{{calico_version}}/calicoctl"
+calico_cni_download_url: "https://github.com/projectcalico/calico-cni/releases/download/{{calico_cni_version}}/calico"
+calico_cni_ipam_download_url: "https://github.com/projectcalico/calico-cni/releases/download/{{calico_cni_version}}/calico-ipam"
+weave_download_url: "https://github.com/weaveworks/weave/releases/download/{{weave_version}}/weave"
+
+# Checksums
+calico_checksum: "1fa22c0ee0cc661f56aa09169a3661fb46e552b53fae5fae9aac010e0666b281"
+calico_cni_checksum: "cfbb95d4416cb65845a188f3bd991fff232bd5ce3463b2919d586ab77967aecd"
+calico_cni_ipam_checksum: "93ebf8756b26314e1e3f612f1e824418cbb0a8df2942664422e697bcb109fbb2"
+weave_checksum: "152942c330f87ab475d87d9311b91674b90f25ea685bd4e04e0495d5fe09a957"
+etcd_checksum: "aa6037406257d2a1bc48ffa769afe7a4f8a04cc1ffcd36ef84f9ee8bc4eca756"
+kubectl_checksum: "b2222986e9f05da8091a16134022d243b3c46a5899486d1b775dbc950ebf36cd"
+kubelet_checksum: "a73cf50ce3da2d88a46064cd7e5ef48ece3c73518cf7a609ef8a680c214d3f4c"
+kube_apiserver_checksum: "aebb2c131674e231ba8dcad4438624c876627e77f47b0c6ef96bd21d23298ffa"
+
+downloads:
+  - name: calico
+    dest: calico/bin/calicoctl
+    version: "{{calico_version}}"
+    sha256: "{{ calico_checksum }}"
+    source_url: "{{ calico_download_url }}"
+    url: "{{ calico_download_url }}"
+    owner: "root"
+    mode: "0755"
+
+  - name: calico-cni-plugin
+    dest: calico/bin/calico
+    version: "{{calico_cni_version}}"
+    sha256: "{{ calico_cni_checksum }}"
+    source_url: "{{ calico_cni_download_url }}"
+    url: "{{ calico_cni_download_url }}"
+    owner: "root"
+    mode: "0755"
+
+  - name: calico-cni-plugin-ipam
+    dest: calico/bin/calico-ipam
+    version: "{{calico_cni_version}}"
+    sha256: "{{ calico_cni_ipam_checksum }}"
+    source_url: "{{ calico_cni_ipam_download_url }}"
+    url: "{{ calico_cni_ipam_download_url }}"
+    owner: "root"
+    mode: "0755"
+
+  - name: weave
+    dest: weave/bin/weave
+    version: "{{weave_version}}"
+    source_url: "{{weave_download_url}}"
+    url: "{{weave_download_url}}"
+    sha256: "{{ weave_checksum }}"
+    owner: "root"
+    mode: "0755"
+
+  - name: etcd
+    version: "{{etcd_version}}"
+    dest: "etcd/etcd-{{ etcd_version }}-linux-amd64.tar.gz"
+    sha256: "{{ etcd_checksum }}"
+    source_url: "{{ etcd_download_url }}"
+    url: "{{ etcd_download_url }}"
+    unarchive: true
+    owner: "etcd"
+    mode: "0755"
+
+  - name: kubernetes-kubelet
+    version: "{{kube_version}}"
+    dest: kubernetes/bin/kubelet
+    sha256: "{{kubelet_checksum}}"
+    source_url: "{{ kube_download_url }}/kubelet"
+    url: "{{ kube_download_url }}/kubelet"
+    owner: "kube"
+    mode: "0755"
+
+  - name: kubernetes-kubectl
+    dest: kubernetes/bin/kubectl
+    version: "{{kube_version}}"
+    sha256: "{{kubectl_checksum}}"
+    source_url: "{{ kube_download_url }}/kubectl"
+    url: "{{ kube_download_url }}/kubectl"
+    owner: "kube"
+    mode: "0755"
+
+  - name: kubernetes-apiserver
+    dest: kubernetes/bin/kube-apiserver
+    version: "{{kube_version}}"
+    sha256: "{{kube_apiserver_checksum}}"
+    source_url: "{{ kube_download_url }}/kube-apiserver"
+    url: "{{ kube_download_url }}/kube-apiserver"
+    owner: "kube"
+    mode: "0755"
diff --git a/roles/uploads/tasks/main.yml b/roles/uploads/tasks/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..68523eca05d9163e6796ac123bdb1b419e6c0208
--- /dev/null
+++ b/roles/uploads/tasks/main.yml
@@ -0,0 +1,24 @@
+---
+- name: Create dest directories
+  file: path={{local_release_dir}}/{{item.dest|dirname}} state=directory recurse=yes
+  with_items: downloads
+
+- name: Download items
+  get_url:
+    url: "{{item.source_url}}"
+    dest: "{{local_release_dir}}/{{item.dest}}"
+    sha256sum: "{{item.sha256 | default(omit)}}"
+    owner: "{{ item.owner|default(omit) }}"
+    mode: "{{ item.mode|default(omit) }}"
+  with_items: downloads
+
+- name: uploads items
+  gc_storage:
+    bucket: kubespray
+    object: "{{item.version}}_{{item.name}}"
+    src: "{{ local_release_dir }}/{{item.dest}}"
+    mode: put
+    permission: public-read
+    gs_access_key: "changeme"
+    gs_secret_key: "changeme"
+  with_items: downloads
diff --git a/uploads.yml b/uploads.yml
new file mode 100644
index 0000000000000000000000000000000000000000..5544f4588bb7c4adc44455b25ad127b74bcb61ef
--- /dev/null
+++ b/uploads.yml
@@ -0,0 +1,11 @@
+---
+- hosts: localhost
+  roles:
+    - {role: uploads}
+
+# TEST download
+- hosts: localhost
+  vars:
+    local_release_dir: /tmp/from_gcloud
+  roles:
+    - {role: download}
\ No newline at end of file