diff --git a/xos/tosca/execute.py b/xos/tosca/execute.py
index 7160ec4..4f74d28 100644
--- a/xos/tosca/execute.py
+++ b/xos/tosca/execute.py
@@ -7,6 +7,7 @@
 
 from core.models import Slice,Sliver,User,Flavor,Node,Image
 from nodeselect import XOSNodeSelector
+from imageselect import XOSImageSelector
 
 class XOSTosca(object):
     def __init__(self, tosca_yaml, parent_dir=None):
@@ -39,7 +40,7 @@
         # TODO: pick flavor based on parameters
         flavor = Flavor.objects.get(name="m1.small")
 
-        compute_node = XOSNodeSelector(user).get_nodes(1)[0]
+        compute_node = XOSNodeSelector(user, mem_size=mem_size, num_cpus=num_cpus, disk_size=disk_size).get_nodes(1)[0]
 
         return (compute_node, flavor)
 
@@ -49,12 +50,7 @@
         type = v.get_property_value("type")
         architecture = v.get_property_value("architecture")
 
-        # TODO: pick image based on parameters
-
-        imgs=Image.objects.filter(name="Ubuntu 14.04 LTS")   # portal
-        if imgs:
-            return imgs[0]
-        return Image.objects.get(name="Ubuntu-14.04-LTS")    # demo
+        return XOSImageSelector(user, distribution=distribution, version=version, type=type, architecture=architecture).get_image()
 
     def execute_nodetemplate(self, user, nodetemplate):
         if (nodetemplate.type == "tosca.nodes.Slice"):
@@ -79,14 +75,6 @@
         if not sliceName:
              raise Exception("No slice requirement for node %s" % nodetemplate.name)
 
-        #sliceName = None
-        #artifacts = nodetemplate.entity_tpl.get("artifacts",[])
-        #for artifact in artifacts:
-        #    if artifact.get("xos_slice", None):
-        #         sliceName = artifact["xos_slice"]
-        #if not sliceName:
-        #     raise Exception("No xos_slice artifact for node %s" % nodetemplate.name)
-
         slice = Slice.objects.filter(name=sliceName)
         if not slice:
              raise Exception("Could not find slice %s" % sliceName)
