diff --git a/func/overlord/client.py b/func/overlord/client.py
index 4ccd98e..e5a16d3 100644
--- a/func/overlord/client.py
+++ b/func/overlord/client.py
@@ -149,6 +149,15 @@ class Minions(object):
         tmp_certs = set()
         tmp_hosts = set()
 
+        # if call is delegated find the shortest path to the minion and use the sub-overlord's certificate
+        if self.delegate:
+            try:
+                shortest_path = dtools.get_shortest_path(each_gloob, self.minionmap)
+            except IndexError:
+                return tmp_hosts,tmp_certs
+            else:
+                 each_gloob = shortest_path[0]
+
         actual_gloob = "%s/%s.%s" % (self.cm_config.certroot, each_gloob, self.cm_config.cert_extension)
         certs = glob.glob(actual_gloob)
         
@@ -460,7 +469,8 @@ class Overlord(object):
 
         self.delegate    = delegate
         self.mapfile     = mapfile
-        
+        self.minionmap   = {}
+
         #overlord_query stuff
         self.overlord_query = OverlordQuery()
         if self.config.puppet_minions:
@@ -468,11 +478,6 @@ class Overlord(object):
         else:
             self._mc = Minions
             
-        self.minions_class = self._mc(self.server_spec, port=self.port, 
-                                noglobs=self.noglobs, verbose=self.verbose, 
-                                exclude_spec=self.exclude_spec)
-        self.minions = self.minions_class.get_urls()
-        
         if len(self.minions) == 0:
             raise Func_Client_Exception, 'Can\'t find any minions matching \"%s\". ' % self.server_spec
         
@@ -483,7 +488,13 @@ class Overlord(object):
             except e:
                 sys.stderr.write("mapfile load failed, switching delegation off")
                 self.delegate = False
-    
+
+        self.minions_class = self._mc(self.server_spec, port=self.port,
+                                noglobs=self.noglobs, verbose=self.verbose,
+                                delegate=self.delegate,minionmap=self.minionmap,
+                                exclude_spec=self.exclude_spec)
+        self.minions = self.minions_class.get_urls()
+
         if init_ssl:
             self.setup_ssl()
 
@@ -730,7 +741,8 @@ class Overlord(object):
         #Next, we run everything that can be run directly beneath this overlord
         #Why do we do this after delegation calls?  Imagine what happens when
         #reboot is called...
-        directhash.update(self.run_direct(module,method,args,nforks))
+        if single_paths != []
+            directhash.update(self.run_direct(module,method,args,nforks))
         
         #poll async results if we've async turned on
         if self.async:
