diff --git a/BatchRenderer/Renderers/PBRT/RtbPBRTCloudRenderer.m b/BatchRenderer/Renderers/PBRT/RtbPBRTCloudRenderer.m
index 59227c2083aebd6647eaafd2b6d25321da562867..8853203e6bb4ac057d520bc7681555dd3e694268 100644
--- a/BatchRenderer/Renderers/PBRT/RtbPBRTCloudRenderer.m
+++ b/BatchRenderer/Renderers/PBRT/RtbPBRTCloudRenderer.m
@@ -24,6 +24,17 @@ classdef RtbPBRTCloudRenderer < RtbRenderer
         
         % where to put scenes before rendering
         workingFolder;
+        
+        % Variables specific to cloud provider
+        provider = 'Google';
+        clusterName = 'rtb4';
+        zone = 'us-central1-a';
+        instanceType = 'n1-highcpu-32';
+        minInstances = 1;
+        maxInstances = 10;
+        preemptible = true;
+        autoscaling = true;
+        
     end
     
     methods
diff --git a/Utilities/rtbCloudInit.m b/Utilities/rtbCloudInit.m
new file mode 100644
index 0000000000000000000000000000000000000000..56fe04546bf66449eb38a0f577a6d09fb0d2fbd1
--- /dev/null
+++ b/Utilities/rtbCloudInit.m
@@ -0,0 +1,75 @@
+function rtbCloudInit( hints )
+
+% This function sets up the Container engine on google cloud.
+% We assume that you have goocle cloud SDK installed on your system and
+% that you have set up the sdk by running:
+% 
+% gcloud init
+%
+%
+
+if strcmp(hints.renderer,'PBRTCloud') == 0
+    return;
+end
+
+if ~strcmpi(hints.batchRenderStrategy.renderer.provider,'google')
+    error('Only Google Cloud is supported\n');
+end
+
+% First we set up a container cluster
+% This command sets up a cluster of high-cpu, 32 core, preemptible machines
+% Autoscaling is enabled so if you aren't using all the resources the
+% unnecessary machines are killed (to save you money).
+
+
+clusterName = hints.batchRenderStrategy.renderer.clusterName;
+timeZone = hints.batchRenderStrategy.renderer.zone;
+
+cmd = sprintf('gcloud container clusters list --filter=%s',clusterName);
+[~, result] = system(cmd);
+
+if isempty(result)
+    % we need to create a new cluster
+    instanceType = hints.batchRenderStrategy.renderer.instanceyType;
+    
+    cmd = sprintf('gcloud container clusters create %s --num-nodes=1 --max-nodes-per-pool=100 --machine-type=%s --zone=%s',...
+        clusterName, instanceType, timeZone);
+    
+    if hints.batchRenderStrategy.renderer.preemptible,
+        cmd = sprintf('%s --preemptible',cmd);
+    end
+    
+    minNodes = hints.batchRenderStrategy.renderer.minNodes;
+    maxNodes = hints.batchRenderStrategy.renderer.maxNodes;
+    
+    if hints.batchRenderStrategy.renderer.autoscaling,
+        cmd = sprintf('%s --enable-autoscaling --min-nodes=%i --max-nodes==%i',...
+            cmd, minNodes, maxNodes);
+    end
+    system(cmd)
+end
+
+% Once the container cluster is created one neds to get credentials, so
+% that kubectl comands are executed on that particualr cluster.
+cmd = sprintf('gcloud container clusters get-credentials %s --zone=%s',...
+    clusterName,timeZone);
+system(cmd);
+
+
+% A cleanup-job
+% The Container Cluster stores the completed jobs, and they use up
+% resources (disk space, memory). We are going to run a simple service that
+% periodically lists all succesfully completed jobs and removes them from
+% the engine.
+
+cmd = 'kubectl get jobs | grep cleanup';
+[~, result] = system(cmd);
+
+if isempty(result)
+    cmd = 'kubectl run cleanup --restart=OnFailure --image=google/cloud-sdk -- /bin/bash -c ''while true; do echo "Starting"; kubectl delete jobs $(kubectl get jobs | awk ''"''"''$3=="1" {print $1}''"''"''); echo "Deleted jobs"; sleep 600; done''';
+    system(cmd);
+end
+
+
+end
+
diff --git a/Utilities/rtbCloudUpload.m b/Utilities/rtbCloudUpload.m
index b1afaf9524dd333b612efbc3038f6fc81b844b8f..cf20f43eb6e408f838c584a01681c83e86554d9b 100644
--- a/Utilities/rtbCloudUpload.m
+++ b/Utilities/rtbCloudUpload.m
@@ -17,7 +17,7 @@ allFilesAndFolders = sprintf('%s ./resources ./scenes',allFiles);
 
 currentPath = pwd;
 cd(hints.batchRenderStrategy.renderer.workingFolder);
-cmd = sprintf('zip -r %s/%s %s',hints.batchRenderStrategy.renderer.workingFolder,fileName,allFilesAndFolders);
+cmd = sprintf('zip -r %s/%s %s -x *.jpg *.png',hints.batchRenderStrategy.renderer.workingFolder,fileName,allFilesAndFolders);
 system(cmd);
 cd(currentPath);