    [celestial.provider :refer (wait-for-ssh mappings wait-for transform os->template)]
    [clojure.java.data :refer (to-java from-java)]
    [celestial.core :refer (Vm)] 
+   [clojure.walk :refer (keywordize-keys)]
    [taoensso.timbre :as timbre]
    [celestial.persistency.systems :as s]
    [celestial.model :refer (translate vconstruct hypervisor)])

    }]
 })

(defn into-system [system-id])

(def machine-ts 
  "Construcuting machine transformations"
   {:image (fn [os] (:image ((os->template :gce) os)))})

    (-> (merge machine gce {:system-id system-id})
      (mappings {:os :image :hostname :name})
      (transform machine-ts)
      ((juxt into-gce (fn [m] (select-keys m [:system-id :project-id :zone]))))
    ))

(defn validate [[gce spec]] 
  (validate-provider gce spec) [gce spec])

(defmethod vconstruct :gce [spec]
  (let [compute (build-compute (hypervisor :gce :service-file))]
