       (info "clearing previous" machine)
       (.stop vm) 
       (.delete vm)) 
-    (let [reload-spec (assoc (s/get-system system-id) :system-id system-id)
-           vm* (.create (vconstruct reload-spec))]  
+    (let [vm* (.create (vconstruct (updated-system system-id)))]  
       (.start vm*) 
-      (assert (= (.status vm*) "running")) ; might not match all providers
+      (running! vm*)
       (info "done system setup"))))
 
 (deflow stop

  [type {:keys [machine] :as spec}]
    (info "starting to provision") 
    (trace type spec) 
    (assert (= (.status (vconstruct spec)) "running")) ; might not match all providers
    (.apply- (pconstruct type spec)) 
    (info "done provisioning"))

(defn stage
  "create and provision"
  [type {:keys [system-id] :as spec}] 
  (create spec) 
  (when-not (= (.status (vconstruct spec)) "running"); some providers already start the vm (AWS, vCenter)
    (start spec))
  (puppetize type (assoc (s/get-system system-id) :system-id system-id)))

(deflow ^{:hook-args :run-info} run-action
  "Runs an action"

       (throw+ {:type ::machine-exists :msg "can't create an existing machine"})) 
    (let [vm* (.create vm)]  
      (.start vm*) 
      (running! vm*)
      (info "done system setup"))))

(deflow destroy 
