diff --git a/wally/start_vms.py b/wally/start_vms.py
index 6ce91f8..4e0698c 100644
--- a/wally/start_vms.py
+++ b/wally/start_vms.py
@@ -109,6 +109,16 @@
         time.sleep(10)
 
 
+def find_vms(nova, name_prefix):
+    for srv in nova.servers.list():
+        if srv.name.startswith(name_prefix):
+            for ips in srv.addresses.values():
+                for ip in ips:
+                    if ip.get("OS-EXT-IPS:type", None) == 'floating':
+                        yield ip['addr']
+                        break
+
+
 def prepare_os(nova, params):
     allow_ssh(nova, params['security_group'])
 
@@ -368,13 +378,15 @@
             logger.debug(msg.format(srv))
             nova.servers.delete(srv)
 
-            for j in range(120):
-                all_id = set(alive_srv.id for alive_srv in nova.servers.list())
-                if srv.id not in all_id:
-                    break
-                time.sleep(1)
-            else:
-                raise RuntimeError("Server {0} delete timeout".format(srv.id))
+            try:
+                for j in range(120):
+                    srv = nova.servers.get(srv.id)
+                    time.sleep(1)
+                else:
+                    msg = "Server {0} delete timeout".format(srv.id)
+                    raise RuntimeError(msg)
+            except NotFound:
+                pass
         else:
             break
     else:
