diff --git a/drush/module_builder.drush.inc b/drush/module_builder.drush.inc
index d6b7e7c..e3a6e65 100644
--- a/drush/module_builder.drush.inc
+++ b/drush/module_builder.drush.inc
@@ -156,7 +156,10 @@ function module_builder_callback_build() {
   $commands = func_get_args();
   
   // Build the module data.
-  $module_data = module_builder_build_data($commands);
+  if(! $module_data = module_builder_build_data($commands)) {
+    // the function will return its own error message so just return false
+    return FALSE;
+  }
   
   // What to build
   $build = drush_get_option('build');
@@ -240,6 +243,20 @@ function module_builder_callback_build() {
  * Helper function to build the array of module_data.
  */
 function module_builder_build_data($commands) {
+  // It doesn't matter what happens next if the hooks have not been
+  // downloaded we can move no further
+  if (!_module_builder_check_hook_data()) {
+    if (drush_confirm(dt('No hook definitions found. Would you like to download them now?'))) {
+      // download the hooks so we can move on.
+      if(! module_builder_callback_hook_download()) {
+        return drush_set_error('DRUSH_NOT_COMPLETED', "No hook definitions found. You need to download hook definitions before using this module: see the command 'mbdl'.");  
+      }
+    }
+    else {
+      return drush_set_error('DRUSH_NOT_COMPLETED', "No hook definitions found. You need to download hook definitions before using this module: see the command 'mbdl'.");
+    }
+  }
+
   // Determine whether we're in interactive mode.
   $interactive = !drush_get_option(array('non-interactive', 'noi'));
 
@@ -550,6 +567,8 @@ function module_builder_callback_hook_download() {
   }
   else {
     drush_print("Hook files have been downloaded to $directory and processed.");
+    // it worked, return true so we can run a boolean test
+    return TRUE;
   }
 }
 
diff --git a/includes/generate.inc b/includes/generate.inc
index 9ea8da3..1640b36 100644
--- a/includes/generate.inc
+++ b/includes/generate.inc
@@ -336,7 +336,7 @@ function module_builder_generate_module(&$module_data, $bare = FALSE) {
 function module_builder_code_hook_doxy($hook_name) {
   return <<<EOT
 /**
- * Implementation of $hook_name().
+ * Implements $hook_name().
  */
 
 EOT;
diff --git a/templates/hooks.template b/templates/hooks.template
index 98801f1..26b59a0 100644
--- a/templates/hooks.template
+++ b/templates/hooks.template
@@ -36,8 +36,8 @@
     'weight' => 0,
     'type' => MENU_NORMAL_ITEM, // One of MENU_NORMAL_ITEM / MENU_CALLBACK / MENU_SUGGESTED_ITEM / MENU_LOCAL_TASK / MENU_DEFAULT_LOCAL_TASK
     'menu_name' => '', // Menu to place this item in.
-    'title callback' => '', // Function to generate the title, defaults to t(). 
-    'title arguments' => '', // Arguments to send to t() or your custom callback. 
+    'title callback' => '', // Function to generate the title, defaults to t().
+    'title arguments' => '', // Arguments to send to t() or your custom callback.
   );
   // OPTIONAL: Fill in additional static menu items
 
