diff --git a/xos/tosca/engine.py b/xos/tosca/engine.py
index 0801c9b..efe64e2 100644
--- a/xos/tosca/engine.py
+++ b/xos/tosca/engine.py
@@ -32,6 +32,7 @@
 
         self.ordered_nodetemplates = []
         self.ordered_names = self.topsort_dependencies()
+        print "ordered_names", self.ordered_names
         for name in self.ordered_names:
             if name in self.nodetemplates_by_name:
                 self.ordered_nodetemplates.append(self.nodetemplates_by_name[name])
@@ -55,6 +56,15 @@
                         nodetemplate.dependencies.append(nodetemplates_by_name[name])
                         nodetemplate.dependencies_names.append(name)
 
+                    # go another level deep, as our requirements can have requirements...
+                    for sd_req in v.get("requirements",[]):
+                        for (sd_req_k, sd_req_v) in sd_req.items():
+                            name = sd_req_v["node"]
+                            if (name in nodetemplates_by_name):
+                                nodetemplate.dependencies.append(nodetemplates_by_name[name])
+                                nodetemplate.dependencies_names.append(name)
+
+
     def topsort_dependencies(self):
         # stolen from observer
         g = self.nodetemplates_by_name
@@ -111,7 +121,7 @@
     def execute_nodetemplate(self, user, nodetemplate):
         if nodetemplate.type in resources.resources:
             cls = resources.resources[nodetemplate.type]
-            #print "work on", cls.__name__, nodetemplate.name
+            print "work on", cls.__name__, nodetemplate.name
             obj = cls(user, nodetemplate)
             obj.create_or_update()
 
