diff --git a/plstackapi/core/api/slivers.py b/plstackapi/core/api/slivers.py
index c41ffba..a1589d2 100644
--- a/plstackapi/core/api/slivers.py
+++ b/plstackapi/core/api/slivers.py
@@ -42,16 +42,15 @@
     if deployment_networks: fields['deploymentNetwork'] = deployment_networks[0]     
     nodes = _get_nodes(fields.get('node'))
     if nodes: fields['node'] = nodes[0]     
-    
     sliver = Sliver(**fields)
     # create quantum sliver
-    sliver = driver.spawn_instance(name=sliver.name,
+    instance = driver.spawn_instance(name=sliver.name,
                                    key_name = sliver.key.name,
-                                   flavor=sliver.flavor.name,
-                                   image = sliver.image.name,
-                                   hostname = sliver.node.hostname )
+                                   flavor_id = sliver.flavor.flavor_id,
+                                   image_id = sliver.image.image_id,
+                                   hostname = sliver.node.name )
 
-    sliver.instance_id=sliver.id
+    sliver.instance_id=instance.id
 
     sliver.save()
     return sliver
diff --git a/plstackapi/openstack/driver.py b/plstackapi/openstack/driver.py
index fe93fbc..03d4ed6 100644
--- a/plstackapi/openstack/driver.py
+++ b/plstackapi/openstack/driver.py
@@ -170,26 +170,22 @@
         for key in keys:
             self.shell.nova.keypairs.delete(key) 
 
-    def spawn_instance(self, name, key_name=None, hostname=None, flavor=None, image=None, security_group=None, pubkeys=[]):
-        if not flavor:
-            flavor = self.config.nova_default_flavor
-        if not image:
-            image = self.config.nova_default_imave
+    def spawn_instance(self, name, key_name=None, hostname=None, flavor_id=None, image_id=None, security_group=None, pubkeys=[]):
+        #if not flavor_id:
+        #    flavor = self.config.nova_default_flavor
+        #if not image:
+        #    image = self.config.nova_default_imave
         if not security_group:
             security_group = self.config.nova_default_security_group 
 
         authorized_keys = "\n".join(pubkeys)
         files = {'/root/.ssh/authorized_keys': authorized_keys}
        
-        flavor_id = self.shell.nova.flavors.find(name=flavor)
-        images = self.shell.glance.get_images(name=image)
-        if not images:
-            raise Exception, "Image not found: " + image  
-        image_id = images[0]['id']
         hints = {}
         if hostname:
             #hints['force_hosts']= hostname
-            hints['availability-zone'] = 'nova:%s' % hostname
+            #hints['availability-zone'] = 'nova:%s' % hostname
+            pass
         server = self.shell.nova.servers.create(
                                             name=name,
                                             key_name = key_name,
