diff --git a/ftools.module b/ftools.module
index d76b525..45af2bc 100644
--- a/ftools.module
+++ b/ftools.module
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @file
  *   ftools module
@@ -18,6 +19,7 @@ function ftools_js_alter(&$javascript) {
     }
   }
 }
+
 /**
  * Implements hook_permission().
  *
@@ -25,26 +27,31 @@ function ftools_js_alter(&$javascript) {
  */
 function ftools_permission() {
   return array(
-    'execute unlink files' => array(
-      'title' => t('execute unlink files'),
-      'description' => t('TODO Add a description for \'execute unlink files\''),
-    ),
+      'execute unlink files' => array(
+          'title' => t('execute unlink files'),
+          'description' => t('TODO Add a description for \'execute unlink files\''),
+      ),
   );
 }
 
 /**
  * Implements hook_menu().
  *
- * @return An array of menu items.
+ * @return array An array of menu items.
  */
 function ftools_menu() {
   $items = array();
-
+  $items['admin/structure/features/defaults'] = array(
+      'title' => t('Configure Features Defaults'),
+      'page callback' => 'drupal_get_form',
+      'page arguments' => array('ftools_defaults_form'),
+      'access arguments' => array('configure ftools defaults'),
+  );
   $items['admin/structure/features/unlink'] = array(
-    'title' => 'Execute unlink files',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('ftools_unlink_form'),
-    'access arguments' => array('execute unlink files'),
+      'title' => 'Execute unlink files',
+      'page callback' => 'drupal_get_form',
+      'page arguments' => array('ftools_unlink_form'),
+      'access arguments' => array('execute unlink files'),
   );
 
   return $items;
@@ -57,19 +64,19 @@ function ftools_form_features_admin_form_alter(&$form, &$form_state) {
   $form['disable_ajax'] = array('#type' => 'checkbox', '#title' => t('disable the features status ajax loading'), '#default_value' => variable_get('ftools_disable_features_page_js', 0));
   $form['buttons']['submit']['#submit'][] = 'ftools_features_admin_form_submit';
   $form['buttons']['revert'] = array(
-   '#type' => 'submit',
-   '#value' => t('Revert them All'),
-   '#attributes' => array('onclick' => 'if(!confirm("Are you sure you want to revert all features? \nThis action cannot be undone.")){return false;}'),
-   '#submit' =>  array('ftools_features_revert_all_submit')
+      '#type' => 'submit',
+      '#value' => t('Revert them All'),
+      '#attributes' => array('onclick' => 'if(!confirm("Are you sure you want to revert all features? \nThis action cannot be undone.")){return false;}'),
+      '#submit' => array('ftools_features_revert_all_submit')
   );
-  
+
   if (variable_get('ftools_disable_features_page_js', 0) == 0) {
     return;
   }
   drupal_add_css('table.features .admin-check, table.features .admin-default, table.features .admin-overridden, table.features .admin-rebuilding, table.features .admin-needs-review {
 									display: inline!important;}', array('type' => 'inline'));
   $groups = array();
-  
+
   foreach ($form['#features'] as $feature) {
     if (isset($feature->info['package'])) {
       $package_title = !empty($feature->info['package']) ? $feature->info['package'] : t('Other');
@@ -93,22 +100,22 @@ function ftools_form_features_admin_form_alter(&$form, &$form_state) {
           $txt = "Rebuilding";
           break;
         case 2:
-          $cls .= "-needs-review"; 
+          $cls .= "-needs-review";
           $txt = "Needs review";
           break;
         case 1:
           $txt = "Overridden";
-          $cls .= "-overridden"; 
+          $cls .= "-overridden";
           break;
         default:
           $txt = "Default";
-          $cls .= "-default"; 
+          $cls .= "-default";
           break;
       }
       $cls .= " features-storage";
       $feature_status['#markup'] = l($txt, "admin/structure/features/$feature_name", array('attributes' => array('class' => $cls)));
     }
-  }  
+  }
 }
 
 /**
@@ -117,13 +124,13 @@ function ftools_form_features_admin_form_alter(&$form, &$form_state) {
 function ftools_form_features_export_form_alter(&$form, &$form_state) {
   if (isset($form['#feature']) && is_object($form['#feature']) && isset($form['#feature']->name)) {
     $path = drupal_get_path('module', $form['#feature']->name);
-  }
-  else {
-    $path = 'sites/all/modules';
+  } else {
+    // Determine the default destination path for this site
+    $path = variable_get('ftools_path', "sites/all/modules");
   }
   $writeable = file_prepare_directory($path);
   if ($writeable === FALSE) {
-    drupal_set_message(t('The directory @path does not exists or not writable', array('@path' => $path)), 'error');
+    drupal_set_message(t('The directory @path does not exist or is not writable', array('@path' => $path)), 'error');
   }
   //TODO: add backup options.
   if (variable_get('ftools_disable_features_page_js', 0)) {
@@ -133,24 +140,24 @@ function ftools_form_features_export_form_alter(&$form, &$form_state) {
       }
     }
   }
-  
+
   $form['buttons']['create'] = array(
-    '#type' => 'submit',
-    '#value' => t('Auto create feature'),
-    '#weight' => 10,
-    '#submit' => array('ftools_export_build_form_submit'),
+      '#type' => 'submit',
+      '#value' => t('Auto create feature'),
+      '#weight' => 10,
+      '#submit' => array('ftools_export_build_form_submit'),
   );
   $form['ftools_dest'] = array(
-    '#title' => t('Custom module path.'),
-    '#type' => 'textfield',
-    '#default_value' => $path
+      '#title' => t('Custom module path.'),
+      '#type' => 'textfield',
+      '#default_value' => $path
   );
   if ($form['#feature']) {
     $form['buttons']['safe_recreate'] = array(
-      '#type' => 'submit',
-      '#value' => t('Safe Auto create feature'),
-      '#weight' => 10,
-      '#submit' => array('ftools_form_features_export_form_safe_submit'),
+        '#type' => 'submit',
+        '#value' => t('Safe Auto create feature'),
+        '#weight' => 10,
+        '#submit' => array('ftools_form_features_export_form_safe_submit'),
     );
   }
 }
@@ -229,8 +236,7 @@ function ftools_form_features_export_form_safe_submit($form, &$form_state) {
     if ($error) {
       drupal_set_message(t('One or more files could not be written to the file system. This is probably a permission issue. See !link for more information.', array('!link' => l(t('the Features Tools module page'), 'http://drupal.org/project/ftools'))), 'error');
       return;
-    }
-    else {
+    } else {
       drupal_set_message(t('The unlink file was successfully created.'));
     }
   }
@@ -285,7 +291,7 @@ function ftools_export_build_form_submit($form, &$form_state) {
   }
   //TODO: find a better term then arg(3) to find if we are on create page or recreat.
   if (arg(3) == 'create') {
-    $directory .=  $module_name;
+    $directory .= $module_name;
   }
   if ($files = features_export_render($export, $module_name, TRUE)) {
     //If the directory dont exists create it.
@@ -303,8 +309,7 @@ function ftools_export_build_form_submit($form, &$form_state) {
     }
     if ($error) {
       drupal_set_message(t('One or more files could not be written to the file system. This is probably a permission issue. See !link for more information.', array('!link' => l(t('the Features Tools module page'), 'http://drupal.org/project/ftools'))), 'error');
-    }
-    else {
+    } else {
       drupal_set_message(t('The feature was successfully created.'));
     }
   }
@@ -322,14 +327,14 @@ function ftools_unlink_form($form, $form_state) {
   foreach ($files as $value) {
     $options[$value->name] = str_replace('_unlink.unlink', '', $value->name);
   }
-  $form['unlink_options'] =  array(
-    '#type' => 'checkboxes',
-    '#options' => $options,
+  $form['unlink_options'] = array(
+      '#type' => 'checkboxes',
+      '#options' => $options,
   );
   $form['submit'] = array(
-    '#type' => 'submit',
-    '#value' => 'submit',
-    '#name' => 'submit',
+      '#type' => 'submit',
+      '#value' => 'submit',
+      '#name' => 'submit',
   );
   return $form;
 }
@@ -359,7 +364,7 @@ function ftools_unlink_form_submit($form, &$form_state) {
           } catch (Exception $e) {
             watchdog('ftools', "error in unlink function:" . $e->getMessage());
           }
-          
+
           drupal_set_message("$hook $function_name");
         }
       }
@@ -367,11 +372,32 @@ function ftools_unlink_form_submit($form, &$form_state) {
   }
 }
 
+/**
+ * Build the system settings form for Features Tools.  This is where you can set a
+ * default path.
+ *
+ * @param array $form form to build on
+ * @param array $form_state current state of the form
+ * @return array the form array with our settings form elements in there.
+ */
+function ftools_defaults_form($form, &$form_state) {
+  // Build the form and insert the existing data
+  $form = array();
+
+  $form['ftools_path'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Auto created path'),
+      '#default_value' => variable_get('ftools_path', "sites/all/modules"),
+      '#description' => t('The path to store all feature tools auto created modules by default.  No trailing or leading slashes please.'),
+  );
+
+  return system_settings_form($form);
+}
+
 function _ftools_get_hooks() {
   return array('box', 'views_view');
 }
 
-
 /**
  * Get the next version for the unlink directory.
  * @param string $destination , the $destination path.
