           this)
   (delete [this]
           (debug "deleting" uuid)
-          (ec2 terminate-instances (@ids uuid)))
+          (ec2 terminate-instances (@ids uuid))
+          (wait-for-status this "terminated" {:timeout [5 :minute]}) 
+          (swap! ids dissoc uuid))
   (start [this]
          (debug "starting" uuid)
-         (ec2 start-instances (@ids uuid)))
+         (ec2 start-instances (@ids uuid))
+         (wait-for-status this "running" {:timeout [5 :minute]}))
   (stop [this]
         (debug "stopping" uuid )
-        (stop-instances  (@ids uuid)))
+        (ec2 stop-instances  (@ids uuid))
+        (wait-for-status this "stopped" {:timeout [2 :minute]}))
   (status [this] 
           (-> (ec2 describe-instances (instance-id-filter (@ids uuid)))
               first :instances first :state :name

  (apply ->Instance (translate spec)))

(comment 
  (def m (.create (vconstruct celestial.fixtures/redis-ec2-spec))) 
  (.status m) 
  (.delete m)) 


  (:require [aws.sdk.ec2 :as ec2])
  (:import (java.util UUID))
  (:use 
    [minderbinder.time :only (parse-time-unit)]
    [slingshot.slingshot :only  [throw+ try+]]
    [aws.sdk.ec2 :only 
       (run-instances describe-instances terminate-instances start-instances
        stop-instances instance-filter instance-id-filter)]
