Refactored further to push most of this inside the GCECloud boundary for now.