diff -urpwN beta/taxonomy_breadcrumb/taxonomy_breadcrumb.admin.inc alpha-patched/taxonomy_breadcrumb/taxonomy_breadcrumb.admin.inc
--- beta/taxonomy_breadcrumb/taxonomy_breadcrumb.admin.inc	1969-12-31 19:00:00.000000000 -0500
+++ alpha-patched/taxonomy_breadcrumb/taxonomy_breadcrumb.admin.inc	2008-04-17 14:47:09.000000000 -0400
@@ -0,0 +1,60 @@
+<?php
+// $Id: $
+
+/**
+ * Settings page for module.
+ */
+function taxonomy_breadcrumb_admin_settings() {
+  $form['settings'] = array(
+    '#type'           => 'fieldset',
+    '#title'          => t('Basic Settings'),
+    '#collapsible'    => TRUE,
+  );
+
+  $form['settings']['taxonomy_breadcrumb_home'] = array(
+    '#type'           => 'textfield',
+    '#title'          => t('Home breadcrumb text'),
+    '#default_value'  => variable_get('taxonomy_breadcrumb_home', ''),
+    '#description'    => t('Text to display at top of breadcrumb trail.  Typically home or your site name.  Leave blank to have no home breadcrumb.'),
+  );
+
+  $form['settings']['taxonomy_breadcrumb_show_current_term'] = array(
+    '#type'           => 'checkbox',
+    '#title'          => t('Show current term in breadcrumb trail?'),
+    '#default_value'  => variable_get('taxonomy_breadcrumb_show_current_term', TRUE),
+    '#description'    => t('When enabled, the lightest term associated with node is shown as the last breadcrumb in the breadcrumb trail.  When disabled, the only terms shown in the breadcrumb trail are parent terms (if any parents exist).  The recommended setting is enabled.'),
+  );
+
+  $form['advanced'] = array(
+    '#type'           => 'fieldset',
+    '#description'    => 'Use these advanced settings to control which node types taxonomy based breadcrumbs will be generated for.  This allows taxonomy_breadcrumb to peacefully coexist with modules that define their own breadcrumbs, such as the book module.  For typical drupal configurations, administrators will not need to modify these settings; however, if user contributed modules are enabled you may need to fine tune taxonomy_breadcrumb here.',
+    '#title'          => t('Advanced Settings'),
+    '#collapsible'    => TRUE,
+    '#collapsed'      => TRUE,
+  );
+
+  $form['advanced']['taxonomy_breadcrumb_include_nodes'] = array(
+    '#type'           => 'radios',
+    '#title'          => t('Include or exclude the following node types'),
+    '#default_value'  => variable_get('taxonomy_breadcrumb_include_nodes', FALSE),
+    '#options'        => array(TRUE => t('Include'), FALSE => t('Exclude')),
+    '#weight'         => 10,
+  );
+
+  // Get all of the node types enabled.
+  $node_bases = array();
+  $node_types = node_get_types();
+  foreach ($node_types as $node_type) {
+    $node_bases[] = $node_type->type;
+  }
+
+  $form['advanced']['taxonomy_breadcrumb_node_types'] = array(
+    '#type'           => 'textfield',
+    '#title'          => t('Node types to include or exclude'),
+    '#default_value'  => variable_get('taxonomy_breadcrumb_node_types', TAXONOMY_BREADCRUMB_NODE_TYPES_DEFAULT),
+    '#description'    => t('Enter a list of node types to include or exclude applying taxonomy based breadcrumbs to.  Separate multiple values with spaces. <p>Node types currently enabled:') .'<ul><li>'. implode($node_bases, '</li><li>') .'</li></ul></p>',
+    '#weight'         => 20,
+  );
+
+  return system_settings_form($form);
+}
diff -urpwN beta/taxonomy_breadcrumb/taxonomy_breadcrumb.inc alpha-patched/taxonomy_breadcrumb/taxonomy_breadcrumb.inc
--- beta/taxonomy_breadcrumb/taxonomy_breadcrumb.inc	1969-12-31 19:00:00.000000000 -0500
+++ alpha-patched/taxonomy_breadcrumb/taxonomy_breadcrumb.inc	2008-09-07 08:11:01.000000000 -0400
@@ -0,0 +1,108 @@
+<?php
+// $Id: $
+
+/**
+ * This function overrides the core taxonomy_term_page.  First, call the core
+ * taxonomy_term_page.  Then, alter the breadcrumb trail.  This module's
+ * hook_menu and a module weight greater than taxonomy's ensure this
+ * function gets called for the taxonomy/term path (the module weight is
+ * in the system table and is set in taxonomy_breadcrumb.install).
+ */
+function _taxonomy_breadcrumb_term_page($str_tids = '', $depth = 0, $op = 'page') {
+  // Include the .inc file with all helper functions
+  include_once drupal_get_path('module', 'taxonomy') .'/taxonomy.pages.inc';
+
+  // Call the core taxonomy_term_page function
+  $output = taxonomy_term_page($str_tids, $depth, $op);
+
+  // Use first term to generate breadcrumb trail
+  $terms = taxonomy_terms_parse_string($str_tids);
+  $breadcrumb = _taxonomy_breadcrumb_generate_breadcrumb($terms['tids'][0], TRUE);
+  drupal_set_breadcrumb($breadcrumb);
+  return $output;
+}
+
+/**
+ * Return lightest term for given node ($nid).
+ * Similar to taxonomy_node_get_terms, but only return the lightest term in the
+ * lightest vocab for the node.
+ */
+function _taxonomy_breadcrumb_node_get_lightest_term($nid) {
+  // We only want the first row of the result--this is the lightest term of the
+  // lightest vocab.  This query should be the same as the query found in
+  // taxonomy_node_get_terms.
+  $result = db_query(db_rewrite_sql('SELECT t.* FROM {term_node} r INNER JOIN {term_data} t ON r.tid = t.tid INNER JOIN {vocabulary} v ON t.vid = v.vid WHERE r.nid = %d ORDER BY v.weight, t.weight, t.name', 't', 'tid'), $nid);
+  $term = db_fetch_object($result);  // extract first row of query
+  return $term;
+}
+
+/**
+ * Return the administrator defined vocabulary path for a given vocabulary
+ * ($vid).  If a path doesn't exist, NULL is returned.
+ */
+function _taxonomy_breadcrumb_get_vocabulary_path($vid) {
+  $result = db_query("SELECT path FROM {taxonomy_breadcrumb_vocabulary} WHERE vid = %d", $vid);
+  $path = NULL;
+  if ($row = db_fetch_array($result)) {
+    $path = $row['path'];
+  }
+  return $path;
+}
+
+/**
+ * Return the administrator defined term path for a given term ($tid).
+ * If a path doesn't exist, NULL is returned.
+ */
+function _taxonomy_breadcrumb_get_term_path($tid) {
+  $result = db_query("SELECT path FROM {taxonomy_breadcrumb_term} WHERE tid = %d", $tid);
+  $path = NULL;
+  if ($row = db_fetch_array($result)) {
+    $path = $row['path'];
+  }
+  return $path;
+}
+
+/**
+ * If the current drupal path (q=) is /node/nid, generate the breadcrumb trail
+ * based on nid.
+ */
+function _taxonomy_breadcrumb_generate_breadcrumb($tid, $is_term_page = FALSE) {
+
+  $term = taxonomy_get_term($tid);
+
+  // HOME breadcrumb generation
+  $home_text = variable_get('taxonomy_breadcrumb_home', '');
+  if ($home_text != '') {
+    $breadcrumb[] = l(t($home_text), NULL);
+  }
+
+  // VOCABULARY breadcrumb generation
+  $vocabulary_path = _taxonomy_breadcrumb_get_vocabulary_path($term->vid);
+  if ($vocabulary_path != NULL) {
+    $vocabulary = taxonomy_vocabulary_load($term->vid);
+    $breadcrumb[] = l($vocabulary->name, $vocabulary_path);
+  }
+
+  // TERM breadcrumb generation
+  $parent_terms = array_reverse(taxonomy_get_parents_all($tid));
+  foreach ($parent_terms as $parent_term) {
+    $term_path = _taxonomy_breadcrumb_get_term_path($parent_term->tid);
+    if ($term_path == NULL) {
+      $term_path = taxonomy_term_path(taxonomy_get_term($parent_term->tid));
+    }
+    // Do not create links to own self if we are on a taxonomy/term page.
+    if ($is_term_page && $parent_term->tid == $tid) {
+      $breadcrumb[] = $parent_term->name;
+    }
+    else {
+      $breadcrumb[] = l($parent_term->name, $term_path);
+    }
+  }
+
+  // Remove current TERM from end of breadcrumb trail
+  if (!variable_get('taxonomy_breadcrumb_show_current_term', TRUE) && !is_null($breadcrumb)) {
+      array_pop($breadcrumb);
+  }
+  return $breadcrumb;
+
+}
diff -urpwN beta/taxonomy_breadcrumb/taxonomy_breadcrumb.info alpha-patched/taxonomy_breadcrumb/taxonomy_breadcrumb.info
--- beta/taxonomy_breadcrumb/taxonomy_breadcrumb.info	2008-03-15 14:00:20.000000000 -0400
+++ alpha-patched/taxonomy_breadcrumb/taxonomy_breadcrumb.info	2008-09-07 08:12:32.000000000 -0400
@@ -1,14 +1,6 @@
-; $Id: taxonomy_breadcrumb.info,v 1.2 2008/03/15 17:48:12 craig Exp $
 name = Taxonomy breadcrumb
 description = Enables taxonomy based breadcrumbs and allows for node assosciations with taxonomy terms.
-version = "6.x-0.1"
+version = "6.x-0.1-alpha2"
 dependencies[] = taxonomy
 core = 6.x
 
-
-; Information added by drupal.org packaging script on 2008-03-15
-version = "6.x-0.1-beta"
-core = "6.x"
-project = "taxonomy_breadcrumb"
-datestamp = "1205604020"
-
diff -urpwN beta/taxonomy_breadcrumb/taxonomy_breadcrumb.install alpha-patched/taxonomy_breadcrumb/taxonomy_breadcrumb.install
--- beta/taxonomy_breadcrumb/taxonomy_breadcrumb.install	2008-03-15 13:48:12.000000000 -0400
+++ alpha-patched/taxonomy_breadcrumb/taxonomy_breadcrumb.install	2008-04-17 13:07:33.000000000 -0400
@@ -6,54 +6,72 @@
  * .install file for the taxonomy_breadcrumb module.
  */
 
-
 /**
  * Implementation of hook_install().
  */
 function taxonomy_breadcrumb_install() {
-  drupal_set_message('Installing taxonomy_breadcrumb.');
-  switch ($GLOBALS['db_type']) {
-    case 'mysql':
-    case 'mysqli':
-      db_query("CREATE TABLE {taxonomy_breadcrumb_vocabulary} (
-                vid int(10) unsigned NOT NULL default '0',
-                path varchar(128) NOT NULL default '',
-                PRIMARY KEY (vid)
-                ) TYPE=MyISAM /*!40100 DEFAULT CHARACTER SET utf8 */;");
-    
-
-      db_query("CREATE TABLE {taxonomy_breadcrumb_term} (
-                tid int(10) unsigned NOT NULL default '0',
-                path varchar(128) NOT NULL default '',
-                PRIMARY KEY (tid)
-                ) TYPE=MyISAM /*!40100 DEFAULT CHARACTER SET utf8 */;");
-      break;
-
-    case 'pgsql':
-      db_query("CREATE TABLE {taxonomy_breadcrumb_vocabulary} (
-                vid integer NOT NULL default '0',
-                path varchar(128) NOT NULL default '',
-                PRIMARY KEY (vid)
-                );");
-
-      db_query("CREATE TABLE {taxonomy_breadcrumb_term} (
-                tid integer NOT NULL default '0',
-                path varchar(128) NOT NULL default '',
-                PRIMARY KEY (tid)
-                );");
-      break;
-  }
+  // Create tables.
+  drupal_install_schema('taxonomy_breadcrumb');
   
   variable_set('taxonomy_breadcrumb_home', t('Home'));
   drupal_set_message('Taxonomy breadcrumb: Taxonomy based breadcrumbs should now appear on node pages and taxonomy/term pages.  For the most common applications this module will work "out of the box" and no further configuration is necessary.  If customization is desired settings can be changed on the '. l('administration page', 'admin/settings/taxonomy-breadcrumb') .'.');
 }
 
+/**
+ * Implementation of hook_uninstall().
+ */
 function taxonomy_breadcrumb_uninstall() {
-  drupal_set_message('Uninstalling taxonomy_breadcrumb.');
-  db_query('DROP TABLE {taxonomy_breadcrumb_vocabulary}');
-  db_query('DROP TABLE {taxonomy_breadcrumb_term}');
+  // Remove tables.
+  drupal_uninstall_schema('taxonomy_breadcrumb');
+
+  // Remove global variables.
+  variable_del('taxonomy_breadcrumb_home');
+  variable_del('taxonomy_breadcrumb_show_current_term');
+  variable_del('taxonomy_breadcrumb_include_nodes');
+  variable_del('taxonomy_breadcrumb_node_types');
 }
 
+/**
+ * Implementation of hook_schema().
+ */
+function taxonomy_breadcrumb_schema() {
+  return array(
+    'taxonomy_breadcrumb_vocabulary' => array(
+      'description' => t('Stores categories for aggregator feeds and feed items.'),
+      'fields' => array(
+        'vid'   => array(
+          'type'      => 'int',
+          'not null'  => TRUE,
+        ),
+        'path'  => array(
+          'type'      => 'varchar',
+          'length'    => 128,
+          'not null'  => TRUE,
+        ),
+      ),
+      'primary key' => array('vid'),
+    ),
+    'taxonomy_breadcrumb_term' => array(
+      'description' => t('Stores categories for aggregator feeds and feed items.'),
+      'fields' => array(
+        'tid'   => array(
+          'type'      => 'int',
+          'not null'  => TRUE,
+        ),
+        'path'  => array(
+          'type'      => 'varchar',
+          'length'    => 128,
+          'not null'  => TRUE,
+        ),
+      ),
+      'primary key' => array('tid'),
+    ),
+  );
+}
+
+/**
+ * Implementation of hook_update().
+ */
 function taxonomy_breadcrumb_update_1() {
 
   // Ensure this module's weight is larger than the core taxonomy module.
diff -urpwN beta/taxonomy_breadcrumb/taxonomy_breadcrumb.module alpha-patched/taxonomy_breadcrumb/taxonomy_breadcrumb.module
--- beta/taxonomy_breadcrumb/taxonomy_breadcrumb.module	2008-03-15 13:48:12.000000000 -0400
+++ alpha-patched/taxonomy_breadcrumb/taxonomy_breadcrumb.module	2008-09-07 08:10:28.000000000 -0400
@@ -35,109 +35,17 @@
  *     taxonomy_get_parents_all. 
  */
 
-
 // default value for Advanced Settings, Node Types
 define('TAXONOMY_BREADCRUMB_NODE_TYPES_DEFAULT', 'book');  
 
-
-/**
- * Return lightest term for given node ($nid).
- * Similar to taxonomy_node_get_terms, but only return the lightest term in the 
- * lightest vocab for the node.
- */
-function taxonomy_breadcrumb_node_get_lightest_term($nid) {
-  // We only want the first row of the result--this is the lightest term of the 
-  // lightest vocab.  This query should be the same as the query found in 
-  // taxonomy_node_get_terms.
-  $result = db_query(db_rewrite_sql('SELECT t.* FROM {term_node} r INNER JOIN {term_data} t ON r.tid = t.tid INNER JOIN {vocabulary} v ON t.vid = v.vid WHERE r.nid = %d ORDER BY v.weight, t.weight, t.name', 't', 'tid'), $nid);
-  $term = db_fetch_object($result);  // extract first row of query
-  return $term;
-}
-
-
-/**
- * Return the administrator defined vocabulary path for a given vocabulary 
- * ($vid).  If a path doesn't exist, NULL is returned.
- */
-function taxonomy_breadcrumb_get_vocabulary_path($vid) {
-  $result = db_query("SELECT path FROM {taxonomy_breadcrumb_vocabulary} WHERE vid = %d", $vid);
-  $path = NULL;
-  if ($row = db_fetch_array($result)) {
-    $path = $row['path'];
-  }
-  return $path;
-} 
-
-
-/**
- * Return the administrator defined term path for a given term ($tid).
- * If a path doesn't exist, NULL is returned.
- */
-function taxonomy_breadcrumb_get_term_path($tid) {
-  $result = db_query("SELECT path FROM {taxonomy_breadcrumb_term} WHERE tid = %d", $tid);
-  $path = NULL;
-  if ($row = db_fetch_array($result)) {
-    $path = $row['path'];
-  }
-  return $path;  
-} 
-
-
-/**
- * If the current drupal path (q=) is /node/nid, generate the breadcrumb trail 
- * based on nid.
- */
-function taxonomy_breadcrumb_generate_breadcrumb($tid, $is_term_page = FALSE) {
-
-  $term = taxonomy_get_term($tid);
-  
-  // HOME breadcrumb generation
-  $home_text = variable_get('taxonomy_breadcrumb_home', '');
-  if ($home_text != '') {
-    $breadcrumb[] = l(t($home_text), NULL);
-  }
-
-  // VOCABULARY breadcrumb generation
-  $vocabulary_path = taxonomy_breadcrumb_get_vocabulary_path($term->vid);
-  if ($vocabulary_path != NULL) {
-    $vocabulary = taxonomy_vocabulary_load($term->vid);
-    $breadcrumb[] = l($vocabulary->name, $vocabulary_path);      
-  }
-
-  // TERM breadcrumb generation
-  $parent_terms = array_reverse(taxonomy_get_parents_all($tid));
-  foreach ($parent_terms as $parent_term) {
-    $term_path = taxonomy_breadcrumb_get_term_path($parent_term->tid);
-    if ($term_path == NULL) {
-      $term_path = "taxonomy/term/$parent_term->tid";
-    }
-    // Do not create links to own self if we are on a taxonomy/term page.
-    if ($is_term_page && $parent_term->tid == $tid) {
-      $breadcrumb[] = $parent_term->name;
-    }
-    else {
-      $breadcrumb[] = l($parent_term->name, $term_path);
-    }
-  }
-
-  // Remove current TERM from end of breadcrumb trail
-  if (!variable_get('taxonomy_breadcrumb_show_current_term', TRUE) && !is_null($breadcrumb)) {
-      array_pop($breadcrumb);
-  }
-  return $breadcrumb;
-
-}
-
-
 /**
  * Implementation of hook_menu().
  */
 function taxonomy_breadcrumb_menu() {
-  $items = array();
-
   $items['admin/settings/taxonomy-breadcrumb'] = array(
     'title' => 'Taxonomy Breadcrumb',
     'description' => 'Configure how taxonomy based breadcrumbs are displayed.',
+    'file'              => 'taxonomy_breadcrumb.admin.inc',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('taxonomy_breadcrumb_admin_settings'),
     'access callback' => 'user_access',
@@ -146,83 +54,28 @@ function taxonomy_breadcrumb_menu() {
   );
 
   // Similiar to core menu item in taxonomy_menu, except callback is different
-  $items['taxonomy/term'] = array(
+  $items['taxonomy/term/%'] = array(
     'title' => 'Taxonomy term',
-    'page callback' => 'taxonomy_breadcrumb_term_page',
+    'file'              => 'taxonomy_breadcrumb.inc',
+    'page callback'     => '_taxonomy_breadcrumb_term_page',
+    'page arguments'    => array(2),
     'access callback' => 'user_access',
     'access arguments' => array('access content'),
     'type' => MENU_CALLBACK,
   );
     
-
   return $items;
 }
 
 /**
- * Settings page for module.
- */
-function taxonomy_breadcrumb_admin_settings() {
-  $form['settings'] = array(
-    '#type' => 'fieldset',
-    '#title' => t('Basic Settings'),
-    '#collapsible' => TRUE,
-  );
-
-  $form['settings']['taxonomy_breadcrumb_home'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Home breadcrumb text'),
-    '#default_value' => variable_get('taxonomy_breadcrumb_home', ''),
-    '#description' => t('Text to display at top of breadcrumb trail.  Typically home or your site name.  Leave blank to have no home breadcrumb.'),
-  ); 
-
-  $form['settings']['taxonomy_breadcrumb_show_current_term'] = array(
-    '#type' => 'checkbox',
-    '#title' => t('Show current term in breadcrumb trail?'),
-    '#default_value' => variable_get('taxonomy_breadcrumb_show_current_term', TRUE),
-    '#description' => t('When enabled, the lightest term associated with node is shown as the last breadcrumb in the breadcrumb trail.  When disabled, the only terms shown in the breadcrumb trail are parent terms (if any parents exist).  The recommended setting is enabled.'),
-  ); 
-
-  $form['advanced'] = array(
-    '#type' => 'fieldset',
-    '#description' => 'Use these advanced settings to control which node types taxonomy based breadcrumbs will be generated for.  This allows taxonomy_breadcrumb to peacefully coexist with modules that define their own breadcrumbs, such as the book module.  For typical drupal configurations, administrators will not need to modify these settings; however, if user contributed modules are enabled you may need to fine tune taxonomy_breadcrumb here.',
-    '#title' => t('Advanced Settings'),
-    '#collapsible' => TRUE,
-    '#collapsed' => TRUE,
-  );
-
-  $form['advanced']['taxonomy_breadcrumb_include_nodes'] = array(
-    '#type' => 'radios',
-    '#title' => t('Include or exclude the following node types'),
-    '#default_value' => variable_get('taxonomy_breadcrumb_include_nodes', FALSE),
-    '#options' => array(TRUE => t('Include'), FALSE => t('Exclude')),
-    '#weight' => 10,
-  );
-  
-  // Get all of the node types enabled.
-  $node_bases = array();
-  $node_types = node_get_types();
-  foreach ($node_types as $node_type) {
-    $node_bases[] = $node_type->type;
-  }
-
-  $form['advanced']['taxonomy_breadcrumb_node_types'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Node types to include or exclude'),
-    '#default_value' => variable_get('taxonomy_breadcrumb_node_types', TAXONOMY_BREADCRUMB_NODE_TYPES_DEFAULT),
-    '#description' => t('Enter a list of node types to include or exclude applying taxonomy based breadcrumbs to.  Separate multiple values with spaces. <p>Node types currently enabled:') .'<ul><li>'. implode($node_bases, '</li><li>') .'</li></ul></p>',
-    '#weight' => 20,
-  ); 
-
-  return system_settings_form($form);
-}
-
-/**
  * Implementation of hook_nodeapi().
  */
 function taxonomy_breadcrumb_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) { 
   // If we are on a page view (not just a teaser), set the breadcrumb
   // $a4 contains TRUE if we are on a page view
   if ($op == 'view' && $a4 && !drupal_is_front_page()) {
+    // Include the .inc file with all helper functions
+    include_once drupal_get_path('module', 'taxonomy_breadcrumb') .'/taxonomy_breadcrumb.inc';
   
     // See if the node type of the current node is part of the node types listed on the advanced settings page.
     $array_of_types = explode(' ', variable_get('taxonomy_breadcrumb_node_types', TAXONOMY_BREADCRUMB_NODE_TYPES_DEFAULT));
@@ -234,46 +87,22 @@ function taxonomy_breadcrumb_nodeapi(&$n
     if ($in_list == variable_get('taxonomy_breadcrumb_include_nodes', FALSE) ) {
 
       // Extract lightest term from lightest vocabulary assosciated with node.
-      $term = taxonomy_breadcrumb_node_get_lightest_term($node->nid);
-      $breadcrumb = taxonomy_breadcrumb_generate_breadcrumb($term->tid);
+      $term = _taxonomy_breadcrumb_node_get_lightest_term($node->nid);
+      $breadcrumb = _taxonomy_breadcrumb_generate_breadcrumb($term->tid);
       drupal_set_breadcrumb($breadcrumb);
     }
   }
 }
 
-
-/**
- * This function overrides the core taxonomy_term_page.  First, call the core
- * taxonomy_term_page.  Then, alter the breadcrumb trail.  This module's 
- * hook_menu and a module weight greater than taxonomy's ensure this 
- * function gets called for the taxonomy/term path (the module weight is
- * in the system table and is set in taxonomy_breadcrumb.install).
- */
-function taxonomy_breadcrumb_term_page($str_tids = '', $depth = 0, $op = 'page') {
-
-  // Call the core taxonomy_term_page function
-  $output = taxonomy_term_page($str_tids, $depth, $op);
-
-  // Use first term to generate breadcrumb trail
-  $terms = taxonomy_terms_parse_string($str_tids); 
-  $breadcrumb = taxonomy_breadcrumb_generate_breadcrumb($terms['tids'][0], TRUE);
-  drupal_set_breadcrumb($breadcrumb);
-  return $output;
-  
-}
-
-
 /**
  * Implementation of hook_help().
  */
 function taxonomy_breadcrumb_help($path, $arg) {
-  
   switch ($path) {
     case 'admin/help#taxonomy_breadcrumb':
-      $output .= t('<p>See %link.</p>', array('%link' => l('admin/settings/taxonomy-breadcrumb', 'admin/settings/taxonomy-breadcrumb')));
-      break;
+      return t('<p>See %link.</p>', array('%link' => l('admin/settings/taxonomy-breadcrumb', 'admin/settings/taxonomy-breadcrumb')));
     case 'admin/settings/taxonomy-breadcrumb':
-      $output .= t('The taxonomy_breadcrumb module generates taxonomy based breadcrumbs on node pages and taxonomy/term pages.  The breadcrumb trail takes on the form:
+      return t('The taxonomy_breadcrumb module generates taxonomy based breadcrumbs on node pages and taxonomy/term pages.  The breadcrumb trail takes on the form:
                     <ul>[HOME] >> [VOCABULARY] >> TERM >> [TERM] ...</ul>
                     <ul>
                     <li>The text displayed for HOME is configurable below.  The <em>HOME </em>breadcrumb (if present) links to the homepage.  The text displayed for HOME is administrator configurable.  If the HOME breadcrumb is not defined by the administrator, it will not appear in the breadcrumb trail.</li>
@@ -288,43 +117,53 @@ function taxonomy_breadcrumb_help($path,
                     <li>home >> vocabulary >> term >> term</li>
                     <li>vocabulary >> term >> term</li>
                     </ul>', array('!tax_link' => l('administer >> categories', 'admin/content/taxonomy')));
-      break;
   }
-  return $output;
 }
 
-
 /**
- * Implementation of hook_form_alter().  This must be used over hook_taxonomy to
+ * Implementation of hook_form_alter().
+ *
+ * This must be used over hook_taxonomy to
  * add the Breadcrumb Path fields to the vocabulary and term forms.  The 
  * hook_taxonomy function does not provide a way to obtain the vid or tid
  * of the vocabulary or term.
  */
-function taxonomy_breadcrumb_form_alter(&$form, &$form_state, $form_id) {
-  if ($form_id == 'taxonomy_form_vocabulary') {
+function taxonomy_breadcrumb_form_taxonomy_form_vocabulary_alter(&$form, &$form_state) {
+  // Include the .inc file with all helper functions
+  include_once drupal_get_path('module', 'taxonomy_breadcrumb') .'/taxonomy_breadcrumb.admin.inc';
+  include_once drupal_get_path('module', 'taxonomy_breadcrumb') .'/taxonomy_breadcrumb.inc';
 
     $form['taxonomy_breadcrumb_path'] = array(
       '#type' => 'textfield',
       '#title' => t('Breadcrumb path (taxonomy_breadcrumb)'),
-      '#default_value' => taxonomy_breadcrumb_get_vocabulary_path($form['vid']['#value']), 
+    '#default_value'  => _taxonomy_breadcrumb_get_vocabulary_path($form['vid']['#value']),
       '#maxlength' => 128,
       '#description' => t('Specify the path this vocabulary links to as a breadcrumb.  If blank, the breadcrumb will not appear.  Use a relative path and don\'t add a trailing slash.  For example: node/42 or my/path/alias.'),
       '#weight' => 0,
     );
   }
-  elseif ($form_id == 'taxonomy_form_term') {
+
+/**
+ * Implementation of hook_form_alter().
+ *
+ * This must be used over hook_taxonomy to
+ * add the Breadcrumb Path fields to the vocabulary and term forms. The
+ * hook_taxonomy function does not provide a way to obtain the vid or tid
+ * of the vocabulary or term.
+ */
+function taxonomy_breadcrumb_form_taxonomy_form_term_alter(&$form, &$form_state) {
+  // Include the .inc file with all helper functions
+  include_once drupal_get_path('module', 'taxonomy_breadcrumb') .'/taxonomy_breadcrumb.inc';
+
     $form['taxonomy_breadcrumb_path'] = array(
       '#type' => 'textfield',
       '#title' => t('Breadcrumb path (taxonomy_breadcrumb)'),
-      '#default_value' => taxonomy_breadcrumb_get_term_path($form['tid']['#value']), 
+    '#default_value'  => _taxonomy_breadcrumb_get_term_path($form['tid']['#value']),
       '#maxlength' => 128,
       '#description' => t('Specify the path this term links to as a breadcrumb.  If blank, the breadcrumb links to the default taxonomy page.  Use a relative path and don\'t add a trailing slash.  For example: node/42 or my/path/alias.'),
       '#weight' => 0,
     );
-  
   }
-} 
-
 
 /**
  * Implementation of hook_taxonomy().  This implementation checks to see if a
@@ -336,18 +175,20 @@ function taxonomy_breadcrumb_taxonomy($o
   // if (after a vocabulary or term is updated)
   // called by module_invoke_all('taxonomy', 'update', 'term', $edit);  in taxonomy.module
   if ( $op == 'update' && ($type == 'vocabulary' || $type == 'term') ) {
+    // Include the .inc file with all helper functions
+    include_once drupal_get_path('module', 'taxonomy_breadcrumb') .'/taxonomy_breadcrumb.inc';
 
     // Set variables to used in SQL query to reflect if vocabulary or term is 
     // being updated.
     if ($type == 'vocabulary') {
       $table = '{taxonomy_breadcrumb_vocabulary}';
       $key_type = 'vid';
-      $old_path = taxonomy_breadcrumb_get_vocabulary_path($object['vid']);
+      $old_path = _taxonomy_breadcrumb_get_vocabulary_path($object['vid']);
     }
     elseif ($type == 'term') {
       $table = '{taxonomy_breadcrumb_term}';
       $key_type = 'tid';
-      $old_path = taxonomy_breadcrumb_get_term_path($object['tid']);
+      $old_path = _taxonomy_breadcrumb_get_term_path($object['tid']);
     }
     $key = $object[$key_type];
     $new_path = $object['taxonomy_breadcrumb_path'];
