         (wait-for-ssh (machine :ip) "root" [5 :minute]))
       ))
 
-  (delete [this])
+  (delete [this]
+     (let [{:keys [id] :as operation} (create-instance compute gce spec) ]
+      (wait-for {:timeout [5 :minute]} #(= ("status" operation) "DONE") 
+       {:type ::gce:fail} "Timed out on waiting for operation to be done"))
+    )
 
   (stop [this])
 
-  (status [this]))
+  (status [this]
+    (try 
+      (let [{:keys [status]} (get-instance compute gce spec)]
+        (.toLowerCase status))
+      (catch Exception e false) 
+      )))
 
-(defn into-gce [{:keys [name machine-type zone image]}]
+(defn into-gce [{:keys [name machine-type tags zone image]}]
   {
     :name name
     :machineType (<< "zones/~{zone}/machineTypes/~{machine-type}")
+    :tags {:items (clojure.tools.trace/trace tags)}
     :disks [{
       :initializeParams {:sourceImage image} :autoDelete true
       :type "PERSISTENT" :boot true

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

    (-> (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))]
