diff --git a/google_appliance.admin.inc b/google_appliance.admin.inc
index 88a061a..0c9caa3 100644
--- a/google_appliance.admin.inc
+++ b/google_appliance.admin.inc
@@ -89,6 +89,15 @@ function google_appliance_admin_settings($form) {
     '#collapsible' => TRUE,
     '#collapsed' => FALSE   
   );
+  $form['display_settings']['drupal_path'] = array(
+    '#title' => t('Search path'),
+    '#type' => 'textfield',
+    '#field_prefix' => '<span dir="ltr">' . url(NULL, array('absolute' => TRUE)) . (variable_get('clean_url', 0) ? '' : '?q='),
+    '#field_suffix' => '</span>&lrm;',
+    '#default_value' => $settings['drupal_path'],
+    '#description' => t('The URL of the search page provided by this module. Include neither leading nor trailing slash.'),
+    '#required' => TRUE,
+  );
   $form['display_settings']['search_title'] = array(
     '#title' => t('Search Name'),
     '#type' => 'textfield',
@@ -136,6 +145,10 @@ function google_appliance_admin_settings_validate($form, &$form_state) {
       ))
     );
   }
+
+  // Trim slashes and whitespace from drupal_path to save headaches.
+  $drupal_path = trim($form_state['values']['drupal_path'], ' /');
+  form_set_value($form['display_settings']['drupal_path'], $drupal_path, $form_state);
   
   // results per page must be on a range that will be accepted by the device upon querying
   $results_per_page_validate_options = array('options' => array(
@@ -165,6 +178,7 @@ function google_appliance_admin_settings_submit($form, &$form_state) {
     'query_inspection',
     'search_title',
     'results_per_page',
+    'drupal_path',
   );
 
   // save settings
@@ -175,6 +189,6 @@ function google_appliance_admin_settings_submit($form, &$form_state) {
   // refresh settings getter
   $settings = _google_appliance_get_settings(TRUE); 
   
-  // make the 'search_title' setting change take effect right away
+  // make the 'search_title' & 'drupal_path' settings take effect right away
   menu_rebuild();
 }
diff --git a/google_appliance.helpers.inc b/google_appliance.helpers.inc
index 790838c..2c4bfc4 100644
--- a/google_appliance.helpers.inc
+++ b/google_appliance.helpers.inc
@@ -21,6 +21,7 @@ define('SGA_DEFAULT_QUERY_INSPECTION', 0);
 define('SGA_DEFAULT_SEARCH_TITLE', 'Search this site');
 define('SGA_DEFAULT_RESULTS_PER_PAGE', 10);
 define('SGA_DEFAULT_BLOCK_VISIBILITY_SETTINGS', '');
+define('SGA_DEFAULT_DRUPAL_PATH', 'gsearch');
 
 /*
  * Minimize redundant trips to the db when looking for module settings. 
@@ -48,6 +49,7 @@ function _google_appliance_get_settings($refresh = FALSE) {
     'search_title',
     'results_per_page',
     'block_visibility_settings',
+    'drupal_path',
   );
   
   if ($refresh || empty($settings)) {
@@ -139,6 +141,8 @@ function _curl_get($url, array $get = NULL, array $options = array(), $sga_timeo
  * report search errors to the log
  */
 function _google_appliance_log_search_error($search_keys = NULL, $error_string = NULL) {
+
+  $settings = _google_appliance_get_settings();
   
   // build log entry
   $type = 'google_appliance';
@@ -147,7 +151,7 @@ function _google_appliance_log_search_error($search_keys = NULL, $error_string =
     '%keys' => isset($search_keys) ? $search_keys : 'nothing (empty search submit)',
     '%error_string' => isset($error_string) ? $error_string : 'undefinded error',
   );
-  $link = l(t('view reproduction'), 'gsearch/' . check_plain($search_keys));
+  $link = l(t('view reproduction'), $settings['drupal_path'] . '/' . check_plain($search_keys));
   
   watchdog($type, $message, $vars, WATCHDOG_NOTICE, $link);
 }
diff --git a/google_appliance.install b/google_appliance.install
index 8c32e13..d9a2328 100644
--- a/google_appliance.install
+++ b/google_appliance.install
@@ -24,9 +24,10 @@ function google_appliance_uninstall() {
     'search_title',
     'results_per_page',
     'block_visibility_settings',
+    'drupal_path',
   );
   
   foreach ($field_keys as $field) {
     variable_del('google_appliance_' . $field);
   }
-}
\ No newline at end of file
+}
diff --git a/google_appliance.module b/google_appliance.module
index 8403bde..5e49ac9 100644
--- a/google_appliance.module
+++ b/google_appliance.module
@@ -97,7 +97,7 @@ function google_appliance_menu() {
   $settings = _google_appliance_get_settings();
   
   // search results page
-  $items['gsearch'] = array(
+  $items[$settings['drupal_path']] = array(
     'title' => $settings['search_title'],
     'page callback' => 'google_appliance_search_view',
     'page arguments' => array(1, 2), // (1) search query, (2) results sort param
@@ -120,10 +120,24 @@ function google_appliance_menu() {
 }
 
 /**
+ * Implements hook_module_implements_alter().
+ */
+function google_appliance_module_implements_alter(&$implementations, $hook) {
+  // Make sure we come after search module's implementation.
+  if ($hook == 'menu') {
+    $group = $implementations['google_appliance'];
+    unset($implementations['google_appliance']);
+    $implementations['google_appliance'] = $group;
+  }
+}
+
+/**
  * Implements hook_block_info().
  */
 function google_appliance_block_info() {
   $blocks = array();
+
+  $settings = _google_appliance_get_settings();
   
   // block search form
   $blocks['ga_block_search_form'] = array(
@@ -138,7 +152,7 @@ function google_appliance_block_info() {
     
     // set default visibility to appear only on results pages (just a suggestion)
     'visibility' => 1,
-    'pages' => 'gsearch*',
+    'pages' => $settings['drupal_path'] . '*',
   );  
   
   return $blocks;
@@ -212,9 +226,11 @@ function google_appliance_block_form_submit($form, &$form_state) {
     unset($_GET['destination']);
   }
 
+  $settings = _google_appliance_get_settings();
+
   // set the redirect
   $search_query = urlencode($form_state['values']['search_keys']);
-  $form_state['redirect'] = url('gsearch/' . $search_query, array('absolute' => TRUE));
+  $form_state['redirect'] = url($settings['drupal_path'] . '/' . $search_query, array('absolute' => TRUE));
   // search execution happens in page callback 
 }
 
@@ -354,6 +370,8 @@ function google_appliance_block_view_alter(&$data, $block) {
  * @see google_appliance-results.tpl.php
  */
 function google_appliance_search_form($form, &$form_state, $query = '', $prompt = '') {
+
+  $settings = _google_appliance_get_settings();
   
   $prompt = ($prompt == '') ? t('Enter the terms you wish to search for.') : $prompt;
   
@@ -386,7 +404,7 @@ function google_appliance_search_form($form, &$form_state, $query = '', $prompt
   
   // submit points to search page without any keys (pre-search state)
   // the redirect happens in _submit handler
-  $form_state['action'] = 'gsearch/';
+  $form_state['action'] = $settings['drupal_path'] . '/';
   
   // use core search CSS in addition to this module's css
   // (keep it general in case core search is enabled)
@@ -662,7 +680,7 @@ function google_appliance_get_clusters() {
       // build the link list
       $cluster_list_items = array();
       foreach ($clusters['clusters'][0]['clusters'] as $cluster) {
-        array_push($cluster_list_items, l($cluster['label'], 'gsearch/' . $cluster['label']));
+        array_push($cluster_list_items, l($cluster['label'], $settings['drupal_path'] . '/' . $cluster['label']));
       }
       
       // create theme-friendly list of links
diff --git a/theme/google_appliance.theme.inc b/theme/google_appliance.theme.inc
index 4ea665b..97d7135 100644
--- a/theme/google_appliance.theme.inc
+++ b/theme/google_appliance.theme.inc
@@ -312,8 +312,9 @@ function template_preprocess_google_appliance_keymatch(&$vars) {
  * Preprocess a single synonym.
  */
 function template_preprocess_google_appliance_synonym(&$vars) {
+  $settings = _google_appliance_get_settings();
   $description = filter_xss($vars['description'], array('b', 'strong'));
-  $url = check_url('gsearch/' . $vars['url']);
+  $url = check_url($settings['drupal_path'] . '/' . $vars['url']);
   $vars['link'] = l($description, $url, array('atrributes' => array('class' => array('synonym-description'))));
 }
 
@@ -327,12 +328,11 @@ function template_preprocess_google_appliance_synonym(&$vars) {
  * interface.
  */
 function theme_google_appliance_pager(&$vars) {
-
-  // Grab module settings.
-  $settings = _google_appliance_get_settings();
   
   // Globals required to manually configure the pager.
   global $pager_page_array, $pager_total, $pager_total_items;
+
+  $settings = _google_appliance_get_settings();
   
   $control_tags = array();  // default labels
   $element = 0;             
@@ -380,6 +380,8 @@ function theme_google_appliance_pager(&$vars) {
  */
 function template_preprocess_google_appliance_sort_headers(&$vars) {
 
+  $settings = _google_appliance_get_settings();
+
   // Possible sort options.
   $vars['sort_options'] = array(
     array(  // default sort
@@ -448,7 +450,7 @@ function template_preprocess_google_appliance_sort_headers(&$vars) {
       );
             
       // Append the query to the base url of the serach page.
-      $link_path = 'gsearch/' . $vars['gsa_query_params']['q'];
+      $link_path = $settings['drupal_path'] . '/' . $vars['gsa_query_params']['q'];
       
       // Append the sort param if any.
       $link_path .= '/' . $sort_opt['sort'];
