diff --git a/includes/command.inc b/includes/command.inc
index c8402a9..1d77c00 100644
--- a/includes/command.inc
+++ b/includes/command.inc
@@ -261,9 +261,9 @@ function drush_invoke($command) {
 function drush_command() {
   $args = func_get_args();
   $command = drush_get_command();
-  foreach (drush_command_implements("drush_init") as $name) {
-    $func = $name . '_drush_init';
-    drush_log(dt("Initializing drush commandfile: !name", array('!name' => $name)), 'bootstrap');
+  $commandfile = $command['commandfile'];
+  if ($func = drush_command_hook($commandfile, 'drush_init')) {
+    drush_log(dt("Initializing drush commandfile: !name", array('!name' => $commandfile)), 'bootstrap');
     call_user_func_array($func, $args);
     _drush_log_drupal_messages();
   }
@@ -273,8 +273,7 @@ function drush_command() {
   }
 
   if (!drush_get_error()) {
-    foreach (drush_command_implements('drush_exit') as $name) {
-      $func = $name . '_drush_exit';
+    if ($func = drush_command_hook($commandfile, 'drush_exit')) {
       call_user_func_array($func, $args);
       _drush_log_drupal_messages();
     }
@@ -468,13 +467,15 @@ function drush_command_include($command) {
  * @param $hook
  *   The name of the hook (e.g. "help" or "menu").
  * @return
- *   TRUE if the the hook is implemented.
+ *   FALSE or the hook function name if the hook is implemented.
  */
 function drush_command_hook($commandfile, $hook) {
-  return function_exists($commandfile .'_'. $hook);
+  $func = $commandfile .'_'. $hook;
+  if (!function_exists($func))
+    return FALSE;
+  return $func;
 }
 
-
 /**
  * Finds all files that match a given mask in a given directory.
  * Directories and files beginning with a period are excluded; this
