? .cache
? .project
? .settings
? registry-split.patch
? sites/sqlite.drupal7
? sites/sub.drupal7
? sites/all/modules
? sites/all/themes
? sites/default/files
? sites/default/settings.php
Index: install.php
===================================================================
RCS file: /cvs/drupal/drupal/install.php,v
retrieving revision 1.146
diff -u -p -r1.146 install.php
--- install.php	24 Nov 2008 10:41:39 -0000	1.146
+++ install.php	11 Dec 2008 11:32:51 -0000
@@ -52,10 +52,14 @@ function install_main() {
   include_once DRUPAL_ROOT . '/includes/module.inc';
   $module_list['system']['filename'] = 'modules/system/system.module';
   $module_list['filter']['filename'] = 'modules/filter/filter.module';
+  $module_list['system_registry']['filename'] = 'modules/system/system.registry.inc';
+  $module_list['menu_registry']['filename'] = 'modules/menu/menu.registry.inc';
   module_list(TRUE, FALSE, $module_list);
   drupal_load('module', 'system');
   drupal_load('module', 'filter');
-
+  drupal_load('module', 'system_registry');
+  drupal_load('module', 'menu_registry');
+  
   // Set up theme system for the maintenance page.
   drupal_maintenance_theme();
 
Index: includes/module.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/module.inc,v
retrieving revision 1.134
diff -u -p -r1.134 module.inc
--- includes/module.inc	24 Nov 2008 10:41:39 -0000	1.134
+++ includes/module.inc	11 Dec 2008 11:32:52 -0000
@@ -469,6 +469,7 @@ function module_implements($hook, $sort 
  */
 function _module_implements_maintenance($hook, $sort = FALSE) {
   $implementations = array();
+  include_once DRUPAL_ROOT . '/modules/system/system.registry.inc';
   foreach (module_list() as $module) {
     $function = $module . '_' . $hook;
     if (function_exists($function)) {
Index: modules/aggregator/aggregator.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.info,v
retrieving revision 1.9
diff -u -p -r1.9 aggregator.info
--- modules/aggregator/aggregator.info	11 Oct 2008 02:32:33 -0000	1.9
+++ modules/aggregator/aggregator.info	11 Dec 2008 11:32:52 -0000
@@ -8,4 +8,5 @@ core = 7.x
 files[] = aggregator.module
 files[] = aggregator.admin.inc
 files[] = aggregator.pages.inc
+files[] = aggregator.registry.inc
 files[] = aggregator.install
Index: modules/aggregator/aggregator.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.module,v
retrieving revision 1.401
diff -u -p -r1.401 aggregator.module
--- modules/aggregator/aggregator.module	16 Nov 2008 04:38:15 -0000	1.401
+++ modules/aggregator/aggregator.module	11 Dec 2008 11:32:52 -0000
@@ -30,215 +30,6 @@ function aggregator_help($path, $arg) {
 }
 
 /**
- * Implementation of hook_theme().
- */
-function aggregator_theme() {
-  return array(
-    'aggregator_wrapper' => array(
-      'arguments' => array('content' => NULL),
-      'file' => 'aggregator.pages.inc',
-      'template' => 'aggregator-wrapper',
-    ),
-    'aggregator_categorize_items' => array(
-      'arguments' => array('form' => NULL),
-      'file' => 'aggregator.pages.inc',
-    ),
-    'aggregator_feed_source' => array(
-      'arguments' => array('feed' => NULL),
-      'file' => 'aggregator.pages.inc',
-      'template' => 'aggregator-feed-source',
-    ),
-    'aggregator_block_item' => array(
-      'arguments' => array('item' => NULL, 'feed' => 0),
-    ),
-    'aggregator_summary_items' => array(
-      'arguments' => array('summary_items' => NULL, 'source' => NULL),
-      'file' => 'aggregator.pages.inc',
-      'template' => 'aggregator-summary-items',
-    ),
-    'aggregator_summary_item' => array(
-      'arguments' => array('item' => NULL),
-      'file' => 'aggregator.pages.inc',
-      'template' => 'aggregator-summary-item',
-    ),
-    'aggregator_item' => array(
-      'arguments' => array('item' => NULL),
-      'file' => 'aggregator.pages.inc',
-      'template' => 'aggregator-item',
-    ),
-    'aggregator_page_opml' => array(
-      'arguments' => array('feeds' => NULL),
-      'file' => 'aggregator.pages.inc',
-    ),
-    'aggregator_page_rss' => array(
-      'arguments' => array('feeds' => NULL, 'category' => NULL),
-      'file' => 'aggregator.pages.inc',
-    ),
-  );
-}
-
-/**
- * Implementation of hook_menu().
- */
-function aggregator_menu() {
-  $items['admin/content/aggregator'] = array(
-    'title' => 'Feed aggregator',
-    'description' => "Configure which content your site aggregates from other sites, how often it polls them, and how they're categorized.",
-    'page callback' => 'aggregator_admin_overview',
-    'access arguments' => array('administer news feeds'),
-  );
-  $items['admin/content/aggregator/add/feed'] = array(
-    'title' => 'Add feed',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('aggregator_form_feed'),
-    'access arguments' => array('administer news feeds'),
-    'type' => MENU_LOCAL_TASK,
-    'parent' => 'admin/content/aggregator',
-  );
-  $items['admin/content/aggregator/add/category'] = array(
-    'title' => 'Add category',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('aggregator_form_category'),
-    'access arguments' => array('administer news feeds'),
-    'type' => MENU_LOCAL_TASK,
-    'parent' => 'admin/content/aggregator',
-  );
-  $items['admin/content/aggregator/add/opml'] = array(
-    'title' => 'Import OPML',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('aggregator_form_opml'),
-    'access arguments' => array('administer news feeds'),
-    'type' => MENU_LOCAL_TASK,
-    'parent' => 'admin/content/aggregator',
-  );
-  $items['admin/content/aggregator/remove/%aggregator_feed'] = array(
-    'title' => 'Remove items',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('aggregator_admin_remove_feed', 4),
-    'access arguments' => array('administer news feeds'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/content/aggregator/update/%aggregator_feed'] = array(
-    'title' => 'Update items',
-    'page callback' => 'aggregator_admin_refresh_feed',
-    'page arguments' => array(4),
-    'access arguments' => array('administer news feeds'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/content/aggregator/list'] = array(
-    'title' => 'List',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-    'weight' => -10,
-  );
-  $items['admin/content/aggregator/settings'] = array(
-    'title' => 'Settings',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('aggregator_admin_settings'),
-    'type' => MENU_LOCAL_TASK,
-    'weight' => 10,
-    'access arguments' => array('administer news feeds'),
-  );
-  $items['aggregator'] = array(
-    'title' => 'Feed aggregator',
-    'page callback' => 'aggregator_page_last',
-    'access arguments' => array('access news feeds'),
-    'weight' => 5,
-  );
-  $items['aggregator/sources'] = array(
-    'title' => 'Sources',
-    'page callback' => 'aggregator_page_sources',
-    'access arguments' => array('access news feeds'),
-  );
-  $items['aggregator/categories'] = array(
-    'title' => 'Categories',
-    'page callback' => 'aggregator_page_categories',
-    'access callback' => '_aggregator_has_categories',
-  );
-  $items['aggregator/rss'] = array(
-    'title' => 'RSS feed',
-    'page callback' => 'aggregator_page_rss',
-    'access arguments' => array('access news feeds'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['aggregator/opml'] = array(
-    'title' => 'OPML feed',
-    'page callback' => 'aggregator_page_opml',
-    'access arguments' => array('access news feeds'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['aggregator/categories/%aggregator_category'] = array(
-    'title callback' => '_aggregator_category_title',
-    'title arguments' => array(2),
-    'page callback' => 'aggregator_page_category',
-    'page arguments' => array(2),
-    'access callback' => 'user_access',
-    'access arguments' => array('access news feeds'),
-  );
-  $items['aggregator/categories/%aggregator_category/view'] = array(
-    'title' => 'View',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-    'weight' => -10,
-  );
-  $items['aggregator/categories/%aggregator_category/categorize'] = array(
-    'title' => 'Categorize',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('aggregator_page_category', 2),
-    'access arguments' => array('administer news feeds'),
-    'type' => MENU_LOCAL_TASK,
-  );
-  $items['aggregator/categories/%aggregator_category/configure'] = array(
-    'title' => 'Configure',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('aggregator_form_category', 2),
-    'access arguments' => array('administer news feeds'),
-    'type' => MENU_LOCAL_TASK,
-    'weight' => 1,
-  );
-  $items['aggregator/sources/%aggregator_feed'] = array(
-    'page callback' => 'aggregator_page_source',
-    'page arguments' => array(2),
-    'access arguments' => array('access news feeds'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['aggregator/sources/%aggregator_feed/view'] = array(
-    'title' => 'View',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-    'weight' => -10,
-  );
-  $items['aggregator/sources/%aggregator_feed/categorize'] = array(
-    'title' => 'Categorize',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('aggregator_page_source', 2),
-    'access arguments' => array('administer news feeds'),
-    'type' => MENU_LOCAL_TASK,
-  );
-  $items['aggregator/sources/%aggregator_feed/configure'] = array(
-    'title' => 'Configure',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('aggregator_form_feed', 2),
-    'access arguments' => array('administer news feeds'),
-    'type' => MENU_LOCAL_TASK,
-    'weight' => 1,
-  );
-  $items['admin/content/aggregator/edit/feed/%aggregator_feed'] = array(
-    'title' => 'Edit feed',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('aggregator_form_feed', 5),
-    'access arguments' => array('administer news feeds'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/content/aggregator/edit/category/%aggregator_category'] = array(
-    'title' => 'Edit category',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('aggregator_form_category', 5),
-    'access arguments' => array('administer news feeds'),
-    'type' => MENU_CALLBACK,
-  );
-
-  return $items;
-}
-
-/**
  * Menu callback.
  *
  * @return
Index: modules/aggregator/aggregator.registry.inc
===================================================================
RCS file: modules/aggregator/aggregator.registry.inc
diff -N modules/aggregator/aggregator.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/aggregator/aggregator.registry.inc	11 Dec 2008 11:32:52 -0000
@@ -0,0 +1,217 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the aggregator module.
+ */
+
+/**
+ * Implementation of hook_theme().
+ */
+function aggregator_theme() {
+  return array(
+    'aggregator_wrapper' => array(
+      'arguments' => array('content' => NULL),
+      'file' => 'aggregator.pages.inc',
+      'template' => 'aggregator-wrapper',
+    ),
+    'aggregator_categorize_items' => array(
+      'arguments' => array('form' => NULL),
+      'file' => 'aggregator.pages.inc',
+    ),
+    'aggregator_feed_source' => array(
+      'arguments' => array('feed' => NULL),
+      'file' => 'aggregator.pages.inc',
+      'template' => 'aggregator-feed-source',
+    ),
+    'aggregator_block_item' => array(
+      'arguments' => array('item' => NULL, 'feed' => 0),
+    ),
+    'aggregator_summary_items' => array(
+      'arguments' => array('summary_items' => NULL, 'source' => NULL),
+      'file' => 'aggregator.pages.inc',
+      'template' => 'aggregator-summary-items',
+    ),
+    'aggregator_summary_item' => array(
+      'arguments' => array('item' => NULL),
+      'file' => 'aggregator.pages.inc',
+      'template' => 'aggregator-summary-item',
+    ),
+    'aggregator_item' => array(
+      'arguments' => array('item' => NULL),
+      'file' => 'aggregator.pages.inc',
+      'template' => 'aggregator-item',
+    ),
+    'aggregator_page_opml' => array(
+      'arguments' => array('feeds' => NULL),
+      'file' => 'aggregator.pages.inc',
+    ),
+    'aggregator_page_rss' => array(
+      'arguments' => array('feeds' => NULL, 'category' => NULL),
+      'file' => 'aggregator.pages.inc',
+    ),
+  );
+}
+
+/**
+ * Implementation of hook_menu().
+ */
+function aggregator_menu() {
+  $items['admin/content/aggregator'] = array(
+    'title' => 'Feed aggregator',
+    'description' => "Configure which content your site aggregates from other sites, how often it polls them, and how they're categorized.",
+    'page callback' => 'aggregator_admin_overview',
+    'access arguments' => array('administer news feeds'),
+  );
+  $items['admin/content/aggregator/add/feed'] = array(
+    'title' => 'Add feed',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('aggregator_form_feed'),
+    'access arguments' => array('administer news feeds'),
+    'type' => MENU_LOCAL_TASK,
+    'parent' => 'admin/content/aggregator',
+  );
+  $items['admin/content/aggregator/add/category'] = array(
+    'title' => 'Add category',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('aggregator_form_category'),
+    'access arguments' => array('administer news feeds'),
+    'type' => MENU_LOCAL_TASK,
+    'parent' => 'admin/content/aggregator',
+  );
+  $items['admin/content/aggregator/add/opml'] = array(
+    'title' => 'Import OPML',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('aggregator_form_opml'),
+    'access arguments' => array('administer news feeds'),
+    'type' => MENU_LOCAL_TASK,
+    'parent' => 'admin/content/aggregator',
+  );
+  $items['admin/content/aggregator/remove/%aggregator_feed'] = array(
+    'title' => 'Remove items',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('aggregator_admin_remove_feed', 4),
+    'access arguments' => array('administer news feeds'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/content/aggregator/update/%aggregator_feed'] = array(
+    'title' => 'Update items',
+    'page callback' => 'aggregator_admin_refresh_feed',
+    'page arguments' => array(4),
+    'access arguments' => array('administer news feeds'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/content/aggregator/list'] = array(
+    'title' => 'List',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -10,
+  );
+  $items['admin/content/aggregator/settings'] = array(
+    'title' => 'Settings',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('aggregator_admin_settings'),
+    'type' => MENU_LOCAL_TASK,
+    'weight' => 10,
+    'access arguments' => array('administer news feeds'),
+  );
+  $items['aggregator'] = array(
+    'title' => 'Feed aggregator',
+    'page callback' => 'aggregator_page_last',
+    'access arguments' => array('access news feeds'),
+    'weight' => 5,
+  );
+  $items['aggregator/sources'] = array(
+    'title' => 'Sources',
+    'page callback' => 'aggregator_page_sources',
+    'access arguments' => array('access news feeds'),
+  );
+  $items['aggregator/categories'] = array(
+    'title' => 'Categories',
+    'page callback' => 'aggregator_page_categories',
+    'access callback' => '_aggregator_has_categories',
+  );
+  $items['aggregator/rss'] = array(
+    'title' => 'RSS feed',
+    'page callback' => 'aggregator_page_rss',
+    'access arguments' => array('access news feeds'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['aggregator/opml'] = array(
+    'title' => 'OPML feed',
+    'page callback' => 'aggregator_page_opml',
+    'access arguments' => array('access news feeds'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['aggregator/categories/%aggregator_category'] = array(
+    'title callback' => '_aggregator_category_title',
+    'title arguments' => array(2),
+    'page callback' => 'aggregator_page_category',
+    'page arguments' => array(2),
+    'access callback' => 'user_access',
+    'access arguments' => array('access news feeds'),
+  );
+  $items['aggregator/categories/%aggregator_category/view'] = array(
+    'title' => 'View',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -10,
+  );
+  $items['aggregator/categories/%aggregator_category/categorize'] = array(
+    'title' => 'Categorize',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('aggregator_page_category', 2),
+    'access arguments' => array('administer news feeds'),
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['aggregator/categories/%aggregator_category/configure'] = array(
+    'title' => 'Configure',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('aggregator_form_category', 2),
+    'access arguments' => array('administer news feeds'),
+    'type' => MENU_LOCAL_TASK,
+    'weight' => 1,
+  );
+  $items['aggregator/sources/%aggregator_feed'] = array(
+    'page callback' => 'aggregator_page_source',
+    'page arguments' => array(2),
+    'access arguments' => array('access news feeds'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['aggregator/sources/%aggregator_feed/view'] = array(
+    'title' => 'View',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -10,
+  );
+  $items['aggregator/sources/%aggregator_feed/categorize'] = array(
+    'title' => 'Categorize',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('aggregator_page_source', 2),
+    'access arguments' => array('administer news feeds'),
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['aggregator/sources/%aggregator_feed/configure'] = array(
+    'title' => 'Configure',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('aggregator_form_feed', 2),
+    'access arguments' => array('administer news feeds'),
+    'type' => MENU_LOCAL_TASK,
+    'weight' => 1,
+  );
+  $items['admin/content/aggregator/edit/feed/%aggregator_feed'] = array(
+    'title' => 'Edit feed',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('aggregator_form_feed', 5),
+    'access arguments' => array('administer news feeds'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/content/aggregator/edit/category/%aggregator_category'] = array(
+    'title' => 'Edit category',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('aggregator_form_category', 5),
+    'access arguments' => array('administer news feeds'),
+    'type' => MENU_CALLBACK,
+  );
+
+  return $items;
+}
+
Index: modules/block/block.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/block/block.info,v
retrieving revision 1.11
diff -u -p -r1.11 block.info
--- modules/block/block.info	12 Oct 2008 01:23:02 -0000	1.11
+++ modules/block/block.info	11 Dec 2008 11:32:52 -0000
@@ -7,5 +7,6 @@ version = VERSION
 core = 7.x
 files[] = block.module
 files[] = block.admin.inc
+files[] = block.registry.inc
 files[] = block.install
 required = TRUE
Index: modules/block/block.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/block/block.module,v
retrieving revision 1.315
diff -u -p -r1.315 block.module
--- modules/block/block.module	15 Nov 2008 08:23:07 -0000	1.315
+++ modules/block/block.module	11 Dec 2008 11:32:52 -0000
@@ -88,19 +88,6 @@ function block_help($path, $arg) {
 }
 
 /**
- * Implementation of hook_theme().
- */
-function block_theme() {
-  return array(
-    'block_admin_display_form' => array(
-      'template' => 'block-admin-display-form',
-      'file' => 'block.admin.inc',
-      'arguments' => array('form' => NULL),
-    ),
-  );
-}
-
-/**
  * Implementation of hook_perm().
  */
 function block_perm() {
@@ -117,62 +104,6 @@ function block_perm() {
 }
 
 /**
- * Implementation of hook_menu().
- */
-function block_menu() {
-  $items['admin/build/block'] = array(
-    'title' => 'Blocks',
-    'description' => 'Configure what block content appears in your site\'s sidebars and other regions.',
-    'page callback' => 'block_admin_display',
-    'access arguments' => array('administer blocks'),
-  );
-  $items['admin/build/block/list'] = array(
-    'title' => 'List',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-    'weight' => -10,
-  );
-  $items['admin/build/block/list/js'] = array(
-    'title' => 'JavaScript List Form',
-    'page callback' => 'block_admin_display_js',
-    'access arguments' => array('administer blocks'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/build/block/configure'] = array(
-    'title' => 'Configure block',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('block_admin_configure'),
-    'access arguments' => array('administer blocks'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/build/block/delete'] = array(
-    'title' => 'Delete block',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('block_box_delete'),
-    'access arguments' => array('administer blocks'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/build/block/add'] = array(
-    'title' => 'Add block',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('block_add_block_form'),
-    'access arguments' => array('administer blocks'),
-    'type' => MENU_LOCAL_TASK,
-  );
-  $default = variable_get('theme_default', 'garland');
-  foreach (list_themes() as $key => $theme) {
-    $items['admin/build/block/list/' . $key] = array(
-      'title' => check_plain($theme->info['name']),
-      'page arguments' => array($key),
-      'type' => $key == $default ? MENU_DEFAULT_LOCAL_TASK : MENU_LOCAL_TASK,
-      'weight' => $key == $default ? -10 : 0,
-      'access callback' => '_block_themes_access',
-      'access arguments' => array($theme),
-    );
-  }
-  return $items;
-}
-
-/**
  * Menu item access callback - only admin or enabled themes can be accessed.
  */
 function _block_themes_access($theme) {
Index: modules/block/block.registry.inc
===================================================================
RCS file: modules/block/block.registry.inc
diff -N modules/block/block.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/block/block.registry.inc	11 Dec 2008 11:32:52 -0000
@@ -0,0 +1,76 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the block module.
+ */
+
+/**
+ * Implementation of hook_theme().
+ */
+function block_theme() {
+  return array(
+    'block_admin_display_form' => array(
+      'template' => 'block-admin-display-form',
+      'file' => 'block.admin.inc',
+      'arguments' => array('form' => NULL),
+    ),
+  );
+}
+
+/**
+ * Implementation of hook_menu().
+ */
+function block_menu() {
+  $items['admin/build/block'] = array(
+    'title' => 'Blocks',
+    'description' => 'Configure what block content appears in your site\'s sidebars and other regions.',
+    'page callback' => 'block_admin_display',
+    'access arguments' => array('administer blocks'),
+  );
+  $items['admin/build/block/list'] = array(
+    'title' => 'List',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -10,
+  );
+  $items['admin/build/block/list/js'] = array(
+    'title' => 'JavaScript List Form',
+    'page callback' => 'block_admin_display_js',
+    'access arguments' => array('administer blocks'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/build/block/configure'] = array(
+    'title' => 'Configure block',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('block_admin_configure'),
+    'access arguments' => array('administer blocks'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/build/block/delete'] = array(
+    'title' => 'Delete block',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('block_box_delete'),
+    'access arguments' => array('administer blocks'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/build/block/add'] = array(
+    'title' => 'Add block',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('block_add_block_form'),
+    'access arguments' => array('administer blocks'),
+    'type' => MENU_LOCAL_TASK,
+  );
+  $default = variable_get('theme_default', 'garland');
+  foreach (list_themes() as $key => $theme) {
+    $items['admin/build/block/list/' . $key] = array(
+      'title' => check_plain($theme->info['name']),
+      'page arguments' => array($key),
+      'type' => $key == $default ? MENU_DEFAULT_LOCAL_TASK : MENU_LOCAL_TASK,
+      'weight' => $key == $default ? -10 : 0,
+      'access callback' => '_block_themes_access',
+      'access arguments' => array($theme),
+    );
+  }
+  return $items;
+}
Index: modules/blog/blog.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/blog/blog.info,v
retrieving revision 1.10
diff -u -p -r1.10 blog.info
--- modules/blog/blog.info	11 Oct 2008 02:32:36 -0000	1.10
+++ modules/blog/blog.info	11 Dec 2008 11:32:52 -0000
@@ -7,3 +7,4 @@ version = VERSION
 core = 7.x
 files[] = blog.module
 files[] = blog.pages.inc
+files[] = blog.registry.inc
Index: modules/blog/blog.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/blog/blog.module,v
retrieving revision 1.313
diff -u -p -r1.313 blog.module
--- modules/blog/blog.module	9 Dec 2008 11:30:23 -0000	1.313
+++ modules/blog/blog.module	11 Dec 2008 11:32:52 -0000
@@ -7,19 +7,6 @@
  */
 
 /**
- * Implementation of hook_node_info().
- */
-function blog_node_info() {
-  return array(
-    'blog' => array(
-      'name' => t('Blog entry'),
-      'base' => 'blog',
-      'description' => t('A <em>blog entry</em> is a single post to an online journal, or <em>blog</em>.'),
-    )
-  );
-}
-
-/**
  * Implementation of hook_perm().
  */
 function blog_perm() {
@@ -113,41 +100,6 @@ function blog_link($type, $node = NULL, 
 }
 
 /**
- * Implementation of hook_menu().
- */
-function blog_menu() {
-  $items['blog'] = array(
-    'title' => 'Blogs',
-    'page callback' => 'blog_page_last',
-    'access arguments' => array('access content'),
-    'type' => MENU_SUGGESTED_ITEM,
-  );
-  $items['blog/%user_uid_optional'] = array(
-    'title' => 'My blog',
-    'page callback' => 'blog_page_user',
-    'page arguments' => array(1),
-    'access callback' => 'blog_page_user_access',
-    'access arguments' => array(1),
-  );
-  $items['blog/%user/feed'] = array(
-    'title' => 'Blogs',
-    'page callback' => 'blog_feed_user',
-    'page arguments' => array(1),
-    'access callback' => 'blog_page_user_access',
-    'access arguments' => array(1),
-    'type' => MENU_CALLBACK,
-  );
-  $items['blog/feed'] = array(
-    'title' => 'Blogs',
-    'page callback' => 'blog_feed_last',
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-
-  return $items;
-}
-
-/**
  * Access callback for user blog pages.
  */
 function blog_page_user_access($account) {
Index: modules/blog/blog.registry.inc
===================================================================
RCS file: modules/blog/blog.registry.inc
diff -N modules/blog/blog.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/blog/blog.registry.inc	11 Dec 2008 11:32:52 -0000
@@ -0,0 +1,55 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the blog module.
+ */
+
+/**
+ * Implementation of hook_menu().
+ */
+function blog_menu() {
+  $items['blog'] = array(
+    'title' => 'Blogs',
+    'page callback' => 'blog_page_last',
+    'access arguments' => array('access content'),
+    'type' => MENU_SUGGESTED_ITEM,
+  );
+  $items['blog/%user_uid_optional'] = array(
+    'title' => 'My blog',
+    'page callback' => 'blog_page_user',
+    'page arguments' => array(1),
+    'access callback' => 'blog_page_user_access',
+    'access arguments' => array(1),
+  );
+  $items['blog/%user/feed'] = array(
+    'title' => 'Blogs',
+    'page callback' => 'blog_feed_user',
+    'page arguments' => array(1),
+    'access callback' => 'blog_page_user_access',
+    'access arguments' => array(1),
+    'type' => MENU_CALLBACK,
+  );
+  $items['blog/feed'] = array(
+    'title' => 'Blogs',
+    'page callback' => 'blog_feed_last',
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+
+  return $items;
+}
+
+/**
+ * Implementation of hook_node_info().
+ */
+function blog_node_info() {
+  return array(
+    'blog' => array(
+      'name' => t('Blog entry'),
+      'base' => 'blog',
+      'description' => t('A <em>blog entry</em> is a single post to an online journal, or <em>blog</em>.'),
+    )
+  );
+}
Index: modules/blogapi/blogapi.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/blogapi/blogapi.info,v
retrieving revision 1.9
diff -u -p -r1.9 blogapi.info
--- modules/blogapi/blogapi.info	11 Oct 2008 02:32:37 -0000	1.9
+++ modules/blogapi/blogapi.info	11 Dec 2008 11:32:52 -0000
@@ -6,4 +6,5 @@ package = Core
 version = VERSION
 core = 7.x
 files[] = blogapi.module
+files[] = blogapi.registry.inc
 files[] = blogapi.install
Index: modules/blogapi/blogapi.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/blogapi/blogapi.module,v
retrieving revision 1.136
diff -u -p -r1.136 blogapi.module
--- modules/blogapi/blogapi.module	8 Dec 2008 21:54:31 -0000	1.136
+++ modules/blogapi/blogapi.module	11 Dec 2008 11:32:53 -0000
@@ -809,28 +809,6 @@ function blogapi_admin_settings() {
 }
 
 /**
- * Implementation of hook_menu().
- */
-function blogapi_menu() {
-  $items['blogapi/rsd'] = array(
-    'title' => 'RSD',
-    'page callback' => 'blogapi_rsd',
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/settings/blogapi'] = array(
-    'title' => 'Blog API',
-    'description' => 'Configure the content types available to external blogging clients.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('blogapi_admin_settings'),
-    'access arguments' => array('administer site configuration'),
-    'type' => MENU_NORMAL_ITEM,
-  );
-
-  return $items;
-}
-
-/**
  * Implementaton of hook_init().
  */
 function blogapi_init() {
Index: modules/blogapi/blogapi.registry.inc
===================================================================
RCS file: modules/blogapi/blogapi.registry.inc
diff -N modules/blogapi/blogapi.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/blogapi/blogapi.registry.inc	11 Dec 2008 11:32:53 -0000
@@ -0,0 +1,29 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the blogapi module.
+ */
+
+/**
+ * Implementation of hook_menu().
+ */
+function blogapi_menu() {
+  $items['blogapi/rsd'] = array(
+    'title' => 'RSD',
+    'page callback' => 'blogapi_rsd',
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/settings/blogapi'] = array(
+    'title' => 'Blog API',
+    'description' => 'Configure the content types available to external blogging clients.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('blogapi_admin_settings'),
+    'access arguments' => array('administer site configuration'),
+    'type' => MENU_NORMAL_ITEM,
+  );
+
+  return $items;
+}
Index: modules/book/book.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/book/book.info,v
retrieving revision 1.11
diff -u -p -r1.11 book.info
--- modules/book/book.info	13 Oct 2008 19:59:41 -0000	1.11
+++ modules/book/book.info	11 Dec 2008 11:32:53 -0000
@@ -8,4 +8,5 @@ core = 7.x
 files[] = book.module
 files[] = book.admin.inc
 files[] = book.pages.inc
+files[] = book.registry.inc
 files[] = book.install
Index: modules/book/book.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/book/book.module,v
retrieving revision 1.477
diff -u -p -r1.477 book.module
--- modules/book/book.module	9 Dec 2008 11:30:24 -0000	1.477
+++ modules/book/book.module	11 Dec 2008 11:32:53 -0000
@@ -7,36 +7,6 @@
  */
 
 /**
- * Implementation of hook_theme().
- */
-function book_theme() {
-  return array(
-    'book_navigation' => array(
-      'arguments' => array('book_link' => NULL),
-      'template' => 'book-navigation',
-    ),
-    'book_export_html' => array(
-      'arguments' => array('title' => NULL, 'contents' => NULL, 'depth' => NULL),
-      'template' => 'book-export-html',
-    ),
-    'book_admin_table' => array(
-      'arguments' => array('form' => NULL),
-    ),
-    'book_title_link' => array(
-      'arguments' => array('link' => NULL),
-    ),
-    'book_all_books_block' => array(
-      'arguments' => array('book_menus' => array()),
-      'template' => 'book-all-books-block',
-    ),
-    'book_node_export_html' => array(
-      'arguments' => array('node' => NULL, 'children' => NULL),
-      'template' => 'book-node-export-html',
-    ),
-  );
-}
-
-/**
  * Implementation of hook_perm().
  */
 function book_perm() {
@@ -91,74 +61,6 @@ function book_link($type, $node = NULL, 
 }
 
 /**
- * Implementation of hook_menu().
- */
-function book_menu() {
-  $items['admin/content/book'] = array(
-    'title' => 'Books',
-    'description' => "Manage your site's book outlines.",
-    'page callback' => 'book_admin_overview',
-    'access arguments' => array('administer book outlines'),
-  );
-  $items['admin/content/book/list'] = array(
-    'title' => 'List',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-  );
-  $items['admin/content/book/settings'] = array(
-    'title' => 'Settings',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('book_admin_settings'),
-    'access arguments' => array('administer site configuration'),
-    'type' => MENU_LOCAL_TASK,
-    'weight' => 8,
-  );
-  $items['admin/content/book/%node'] = array(
-    'title' => 'Re-order book pages and change titles',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('book_admin_edit', 3),
-    'access callback' => '_book_outline_access',
-    'access arguments' => array(3),
-    'type' => MENU_CALLBACK,
-  );
-  $items['book'] = array(
-    'title' => 'Books',
-    'page callback' => 'book_render',
-    'access arguments' => array('access content'),
-    'type' => MENU_SUGGESTED_ITEM,
-  );
-  $items['book/export/%/%'] = array(
-    'page callback' => 'book_export',
-    'page arguments' => array(2, 3),
-    'access arguments' => array('access printer-friendly version'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['node/%node/outline'] = array(
-    'title' => 'Outline',
-    'page callback' => 'book_outline',
-    'page arguments' => array(1),
-    'access callback' => '_book_outline_access',
-    'access arguments' => array(1),
-    'type' => MENU_LOCAL_TASK,
-    'weight' => 2,
-  );
-  $items['node/%node/outline/remove'] = array(
-    'title' => 'Remove from outline',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('book_remove_form', 1),
-    'access callback' => '_book_outline_remove_access',
-    'access arguments' => array(1),
-    'type' => MENU_CALLBACK,
-  );
-  $items['book/js/form'] = array(
-    'page callback' => 'book_form_update',
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-
-  return $items;
-}
-
-/**
  * Menu item access callback - determine if the outline tab is accessible.
  */
 function _book_outline_access($node) {
Index: modules/book/book.registry.inc
===================================================================
RCS file: modules/book/book.registry.inc
diff -N modules/book/book.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/book/book.registry.inc	11 Dec 2008 11:32:53 -0000
@@ -0,0 +1,106 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the book module.
+ */
+
+
+/**
+ * Implementation of hook_theme().
+ */
+function book_theme() {
+  return array(
+    'book_navigation' => array(
+      'arguments' => array('book_link' => NULL),
+      'template' => 'book-navigation',
+    ),
+    'book_export_html' => array(
+      'arguments' => array('title' => NULL, 'contents' => NULL, 'depth' => NULL),
+      'template' => 'book-export-html',
+    ),
+    'book_admin_table' => array(
+      'arguments' => array('form' => NULL),
+    ),
+    'book_title_link' => array(
+      'arguments' => array('link' => NULL),
+    ),
+    'book_all_books_block' => array(
+      'arguments' => array('book_menus' => array()),
+      'template' => 'book-all-books-block',
+    ),
+    'book_node_export_html' => array(
+      'arguments' => array('node' => NULL, 'children' => NULL),
+      'template' => 'book-node-export-html',
+    ),
+  );
+}
+
+/**
+ * Implementation of hook_menu().
+ */
+function book_menu() {
+  $items['admin/content/book'] = array(
+    'title' => 'Books',
+    'description' => "Manage your site's book outlines.",
+    'page callback' => 'book_admin_overview',
+    'access arguments' => array('administer book outlines'),
+  );
+  $items['admin/content/book/list'] = array(
+    'title' => 'List',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+  );
+  $items['admin/content/book/settings'] = array(
+    'title' => 'Settings',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('book_admin_settings'),
+    'access arguments' => array('administer site configuration'),
+    'type' => MENU_LOCAL_TASK,
+    'weight' => 8,
+  );
+  $items['admin/content/book/%node'] = array(
+    'title' => 'Re-order book pages and change titles',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('book_admin_edit', 3),
+    'access callback' => '_book_outline_access',
+    'access arguments' => array(3),
+    'type' => MENU_CALLBACK,
+  );
+  $items['book'] = array(
+    'title' => 'Books',
+    'page callback' => 'book_render',
+    'access arguments' => array('access content'),
+    'type' => MENU_SUGGESTED_ITEM,
+  );
+  $items['book/export/%/%'] = array(
+    'page callback' => 'book_export',
+    'page arguments' => array(2, 3),
+    'access arguments' => array('access printer-friendly version'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['node/%node/outline'] = array(
+    'title' => 'Outline',
+    'page callback' => 'book_outline',
+    'page arguments' => array(1),
+    'access callback' => '_book_outline_access',
+    'access arguments' => array(1),
+    'type' => MENU_LOCAL_TASK,
+    'weight' => 2,
+  );
+  $items['node/%node/outline/remove'] = array(
+    'title' => 'Remove from outline',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('book_remove_form', 1),
+    'access callback' => '_book_outline_remove_access',
+    'access arguments' => array(1),
+    'type' => MENU_CALLBACK,
+  );
+  $items['book/js/form'] = array(
+    'page callback' => 'book_form_update',
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+
+  return $items;
+}
Index: modules/color/color.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/color/color.info,v
retrieving revision 1.9
diff -u -p -r1.9 color.info
--- modules/color/color.info	11 Oct 2008 02:32:40 -0000	1.9
+++ modules/color/color.info	11 Dec 2008 11:32:53 -0000
@@ -6,4 +6,5 @@ package = Core
 version = VERSION
 core = 7.x
 files[] = color.module
+files[] = color.registry.inc
 files[] = color.install
Index: modules/color/color.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/color/color.module,v
retrieving revision 1.50
diff -u -p -r1.50 color.module
--- modules/color/color.module	10 Nov 2008 05:22:59 -0000	1.50
+++ modules/color/color.module	11 Dec 2008 11:32:54 -0000
@@ -17,17 +17,6 @@ function color_help($path, $arg) {
 }
 
 /**
- * Implementation of hook_theme().
- */
-function color_theme() {
-  return array(
-    'color_scheme_form' => array(
-      'arguments' => array('form' => NULL),
-    ),
-  );
-}
-
-/**
  * Implementation of hook_form_alter().
  */
 function color_form_alter(&$form, $form_state, $form_id) {
Index: modules/color/color.registry.inc
===================================================================
RCS file: modules/color/color.registry.inc
diff -N modules/color/color.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/color/color.registry.inc	11 Dec 2008 11:32:54 -0000
@@ -0,0 +1,18 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the color module.
+ */
+
+/**
+ * Implementation of hook_theme().
+ */
+function color_theme() {
+  return array(
+    'color_scheme_form' => array(
+      'arguments' => array('form' => NULL),
+    ),
+  );
+}
Index: modules/comment/comment.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/comment/comment.info,v
retrieving revision 1.9
diff -u -p -r1.9 comment.info
--- modules/comment/comment.info	11 Oct 2008 02:32:41 -0000	1.9
+++ modules/comment/comment.info	11 Dec 2008 11:32:54 -0000
@@ -8,4 +8,5 @@ core = 7.x
 files[] = comment.module
 files[] = comment.admin.inc
 files[] = comment.pages.inc
+files[] = comment.registry.inc
 files[] = comment.install
Index: modules/comment/comment.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/comment/comment.module,v
retrieving revision 1.670
diff -u -p -r1.670 comment.module
--- modules/comment/comment.module	9 Dec 2008 11:30:24 -0000	1.670
+++ modules/comment/comment.module	11 Dec 2008 11:32:54 -0000
@@ -111,109 +111,6 @@ function comment_help($path, $arg) {
 }
 
 /**
- * Implementation of hook_theme().
- */
-function comment_theme() {
-  return array(
-    'comment_block' => array(
-      'arguments' => array(),
-    ),
-    'comment_admin_overview' => array(
-      'arguments' => array('form' => NULL),
-    ),
-    'comment_preview' => array(
-      'arguments' => array('comment' => NULL, 'node' => NULL, 'links' => array(), 'visible' => 1),
-    ),
-    'comment_view' => array(
-      'arguments' => array('comment' => NULL, 'node' => NULL, 'links' => array(), 'visible' => 1),
-    ),
-    'comment' => array(
-      'template' => 'comment',
-      'arguments' => array('comment' => NULL, 'node' => NULL, 'links' => array()),
-    ),
-    'comment_folded' => array(
-      'template' => 'comment-folded',
-      'arguments' => array('comment' => NULL),
-    ),
-    'comment_flat_collapsed' => array(
-      'arguments' => array('comment' => NULL, 'node' => NULL),
-    ),
-    'comment_flat_expanded' => array(
-      'arguments' => array('comment' => NULL, 'node' => NULL),
-    ),
-    'comment_thread_collapsed' => array(
-      'arguments' => array('comment' => NULL, 'node' => NULL),
-    ),
-    'comment_thread_expanded' => array(
-      'arguments' => array('comment' => NULL, 'node' => NULL),
-    ),
-    'comment_post_forbidden' => array(
-      'arguments' => array('nid' => NULL),
-    ),
-    'comment_wrapper' => array(
-      'template' => 'comment-wrapper',
-      'arguments' => array('content' => NULL, 'node' => NULL),
-    ),
-    'comment_submitted' => array(
-      'arguments' => array('comment' => NULL),
-    ),
-  );
-}
-
-/**
- * Implementation of hook_menu().
- */
-function comment_menu() {
-  $items['admin/content/comment'] = array(
-    'title' => 'Comments',
-    'description' => 'List and edit site comments and the comment moderation queue.',
-    'page callback' => 'comment_admin',
-    'access arguments' => array('administer comments'),
-  );
-  // Tabs begin here.
-  $items['admin/content/comment/new'] = array(
-    'title' => 'Published comments',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-    'weight' => -10,
-  );
-  $items['admin/content/comment/approval'] = array(
-    'title' => 'Approval queue',
-    'page arguments' => array('approval'),
-    'access arguments' => array('administer comments'),
-    'type' => MENU_LOCAL_TASK,
-  );
-  $items['comment/delete'] = array(
-    'title' => 'Delete comment',
-    'page callback' => 'comment_delete',
-    'access arguments' => array('administer comments'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['comment/edit'] = array(
-    'title' => 'Edit comment',
-    'page callback' => 'comment_edit',
-    'access arguments' => array('post comments'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['comment/reply/%node'] = array(
-    'title' => 'Reply to comment',
-    'page callback' => 'comment_reply',
-    'page arguments' => array(2),
-    'access callback' => 'node_access',
-    'access arguments' => array('view', 2),
-    'type' => MENU_CALLBACK,
-  );
-  $items['comment/approve'] = array(
-    'title' => 'Approve a comment',
-    'page callback' => 'comment_approve',
-    'page arguments' => array(2),
-    'access arguments' => array('administer comments'),
-    'type' => MENU_CALLBACK,
-  );
-
-  return $items;
-}
-
-/**
  * Implementation of hook_node_type().
  */
 function comment_node_type($op, $info) {
Index: modules/comment/comment.registry.inc
===================================================================
RCS file: modules/comment/comment.registry.inc
diff -N modules/comment/comment.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/comment/comment.registry.inc	11 Dec 2008 11:32:54 -0000
@@ -0,0 +1,110 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the comment module.
+ */
+
+/**
+ * Implementation of hook_theme().
+ */
+function comment_theme() {
+  return array(
+    'comment_block' => array(
+      'arguments' => array(),
+    ),
+    'comment_admin_overview' => array(
+      'arguments' => array('form' => NULL),
+    ),
+    'comment_preview' => array(
+      'arguments' => array('comment' => NULL, 'node' => NULL, 'links' => array(), 'visible' => 1),
+    ),
+    'comment_view' => array(
+      'arguments' => array('comment' => NULL, 'node' => NULL, 'links' => array(), 'visible' => 1),
+    ),
+    'comment' => array(
+      'template' => 'comment',
+      'arguments' => array('comment' => NULL, 'node' => NULL, 'links' => array()),
+    ),
+    'comment_folded' => array(
+      'template' => 'comment-folded',
+      'arguments' => array('comment' => NULL),
+    ),
+    'comment_flat_collapsed' => array(
+      'arguments' => array('comment' => NULL, 'node' => NULL),
+    ),
+    'comment_flat_expanded' => array(
+      'arguments' => array('comment' => NULL, 'node' => NULL),
+    ),
+    'comment_thread_collapsed' => array(
+      'arguments' => array('comment' => NULL, 'node' => NULL),
+    ),
+    'comment_thread_expanded' => array(
+      'arguments' => array('comment' => NULL, 'node' => NULL),
+    ),
+    'comment_post_forbidden' => array(
+      'arguments' => array('nid' => NULL),
+    ),
+    'comment_wrapper' => array(
+      'template' => 'comment-wrapper',
+      'arguments' => array('content' => NULL, 'node' => NULL),
+    ),
+    'comment_submitted' => array(
+      'arguments' => array('comment' => NULL),
+    ),
+  );
+}
+
+/**
+ * Implementation of hook_menu().
+ */
+function comment_menu() {
+  $items['admin/content/comment'] = array(
+    'title' => 'Comments',
+    'description' => 'List and edit site comments and the comment moderation queue.',
+    'page callback' => 'comment_admin',
+    'access arguments' => array('administer comments'),
+  );
+  // Tabs begin here.
+  $items['admin/content/comment/new'] = array(
+    'title' => 'Published comments',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -10,
+  );
+  $items['admin/content/comment/approval'] = array(
+    'title' => 'Approval queue',
+    'page arguments' => array('approval'),
+    'access arguments' => array('administer comments'),
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['comment/delete'] = array(
+    'title' => 'Delete comment',
+    'page callback' => 'comment_delete',
+    'access arguments' => array('administer comments'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['comment/edit'] = array(
+    'title' => 'Edit comment',
+    'page callback' => 'comment_edit',
+    'access arguments' => array('post comments'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['comment/reply/%node'] = array(
+    'title' => 'Reply to comment',
+    'page callback' => 'comment_reply',
+    'page arguments' => array(2),
+    'access callback' => 'node_access',
+    'access arguments' => array('view', 2),
+    'type' => MENU_CALLBACK,
+  );
+  $items['comment/approve'] = array(
+    'title' => 'Approve a comment',
+    'page callback' => 'comment_approve',
+    'page arguments' => array(2),
+    'access arguments' => array('administer comments'),
+    'type' => MENU_CALLBACK,
+  );
+
+  return $items;
+}
Index: modules/contact/contact.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/contact/contact.info,v
retrieving revision 1.8
diff -u -p -r1.8 contact.info
--- modules/contact/contact.info	11 Oct 2008 02:32:42 -0000	1.8
+++ modules/contact/contact.info	11 Dec 2008 11:32:54 -0000
@@ -7,4 +7,5 @@ core = 7.x
 files[] = contact.module
 files[] = contact.admin.inc
 files[] = contact.pages.inc
+files[] = contact.registry.inc
 files[] = contact.install
Index: modules/contact/contact.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/contact/contact.module,v
retrieving revision 1.111
diff -u -p -r1.111 contact.module
--- modules/contact/contact.module	9 Oct 2008 15:15:51 -0000	1.111
+++ modules/contact/contact.module	11 Dec 2008 11:32:54 -0000
@@ -49,69 +49,6 @@ function contact_perm() {
 }
 
 /**
- * Implementation of hook_menu().
- */
-function contact_menu() {
-  $items['admin/build/contact'] = array(
-    'title' => 'Contact form',
-    'description' => 'Create a system contact form and set up categories for the form to use.',
-    'page callback' => 'contact_admin_categories',
-    'access arguments' => array('administer site-wide contact form'),
-  );
-  $items['admin/build/contact/list'] = array(
-    'title' => 'List',
-    'page callback' => 'contact_admin_categories',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-  );
-  $items['admin/build/contact/add'] = array(
-    'title' => 'Add category',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('contact_admin_edit', 3),
-    'access arguments' => array('administer site-wide contact form'),
-    'type' => MENU_LOCAL_TASK,
-    'weight' => 1,
-  );
-  $items['admin/build/contact/edit/%contact'] = array(
-    'title' => 'Edit contact category',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('contact_admin_edit', 3, 4),
-    'access arguments' => array('administer site-wide contact form'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/build/contact/delete/%contact'] = array(
-    'title' => 'Delete contact',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('contact_admin_delete', 4),
-    'access arguments' => array('administer site-wide contact form'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/build/contact/settings'] = array(
-    'title' => 'Settings',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('contact_admin_settings'),
-    'access arguments' => array('administer site-wide contact form'),
-    'type' => MENU_LOCAL_TASK,
-    'weight' => 2,
-  );
-  $items['contact'] = array(
-    'title' => 'Contact',
-    'page callback' => 'contact_site_page',
-    'access arguments' => array('access site-wide contact form'),
-    'type' => MENU_SUGGESTED_ITEM,
-  );
-  $items['user/%user/contact'] = array(
-    'title' => 'Contact',
-    'page callback' => 'contact_user_page',
-    'page arguments' => array(1),
-    'type' => MENU_LOCAL_TASK,
-    'access callback' => '_contact_user_tab_access',
-    'access arguments' => array(1),
-    'weight' => 2,
-  );
-  return $items;
-}
-
-/**
  * Determine if a user can access to the contact tab.
  */
 function _contact_user_tab_access($account) {
Index: modules/contact/contact.registry.inc
===================================================================
RCS file: modules/contact/contact.registry.inc
diff -N modules/contact/contact.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/contact/contact.registry.inc	11 Dec 2008 11:32:54 -0000
@@ -0,0 +1,70 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the contact module.
+ */
+
+/**
+ * Implementation of hook_menu().
+ */
+function contact_menu() {
+  $items['admin/build/contact'] = array(
+    'title' => 'Contact form',
+    'description' => 'Create a system contact form and set up categories for the form to use.',
+    'page callback' => 'contact_admin_categories',
+    'access arguments' => array('administer site-wide contact form'),
+  );
+  $items['admin/build/contact/list'] = array(
+    'title' => 'List',
+    'page callback' => 'contact_admin_categories',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+  );
+  $items['admin/build/contact/add'] = array(
+    'title' => 'Add category',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('contact_admin_edit', 3),
+    'access arguments' => array('administer site-wide contact form'),
+    'type' => MENU_LOCAL_TASK,
+    'weight' => 1,
+  );
+  $items['admin/build/contact/edit/%contact'] = array(
+    'title' => 'Edit contact category',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('contact_admin_edit', 3, 4),
+    'access arguments' => array('administer site-wide contact form'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/build/contact/delete/%contact'] = array(
+    'title' => 'Delete contact',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('contact_admin_delete', 4),
+    'access arguments' => array('administer site-wide contact form'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/build/contact/settings'] = array(
+    'title' => 'Settings',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('contact_admin_settings'),
+    'access arguments' => array('administer site-wide contact form'),
+    'type' => MENU_LOCAL_TASK,
+    'weight' => 2,
+  );
+  $items['contact'] = array(
+    'title' => 'Contact',
+    'page callback' => 'contact_site_page',
+    'access arguments' => array('access site-wide contact form'),
+    'type' => MENU_SUGGESTED_ITEM,
+  );
+  $items['user/%user/contact'] = array(
+    'title' => 'Contact',
+    'page callback' => 'contact_user_page',
+    'page arguments' => array(1),
+    'type' => MENU_LOCAL_TASK,
+    'access callback' => '_contact_user_tab_access',
+    'access arguments' => array(1),
+    'weight' => 2,
+  );
+  return $items;
+}
Index: modules/dblog/dblog.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/dblog/dblog.info,v
retrieving revision 1.6
diff -u -p -r1.6 dblog.info
--- modules/dblog/dblog.info	11 Oct 2008 02:32:44 -0000	1.6
+++ modules/dblog/dblog.info	11 Dec 2008 11:32:54 -0000
@@ -6,4 +6,5 @@ version = VERSION
 core = 7.x
 files[] = dblog.module
 files[] = dblog.admin.inc
+files[] = dblog.registry.inc
 files[] = dblog.install
Index: modules/dblog/dblog.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/dblog/dblog.module,v
retrieving revision 1.30
diff -u -p -r1.30 dblog.module
--- modules/dblog/dblog.module	30 Oct 2008 09:16:01 -0000	1.30
+++ modules/dblog/dblog.module	11 Dec 2008 11:32:54 -0000
@@ -27,59 +27,6 @@ function dblog_help($path, $arg) {
   }
 }
 
-/**
- * Implementation of hook_theme().
- */
-function dblog_theme() {
-  return array(
-    'dblog_filters' => array(
-      'arguments' => array('form' => NULL),
-    ),
-  );
-}
-
-/**
- * Implementation of hook_menu().
- */
-function dblog_menu() {
-  $items['admin/settings/logging/dblog'] = array(
-    'title' => 'Database logging',
-    'description' => 'Settings for logging to the Drupal database logs. This is the most common method for small to medium sites on shared hosting. The logs are viewable from the admin pages.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('dblog_admin_settings'),
-    'access arguments' => array('administer site configuration'),
-  );
-  $items['admin/reports/dblog'] = array(
-    'title' => 'Recent log entries',
-    'description' => 'View events that have recently been logged.',
-    'page callback' => 'dblog_overview',
-    'access arguments' => array('access site reports'),
-    'weight' => -1,
-  );
-  $items['admin/reports/page-not-found'] = array(
-    'title' => "Top 'page not found' errors",
-    'description' => "View 'page not found' errors (404s).",
-    'page callback' => 'dblog_top',
-    'page arguments' => array('page not found'),
-    'access arguments' => array('access site reports'),
-  );
-  $items['admin/reports/access-denied'] = array(
-    'title' => "Top 'access denied' errors",
-    'description' => "View 'access denied' errors (403s).",
-    'page callback' => 'dblog_top',
-    'page arguments' => array('access denied'),
-    'access arguments' => array('access site reports'),
-  );
-  $items['admin/reports/event/%'] = array(
-    'title' => 'Details',
-    'page callback' => 'dblog_event',
-    'page arguments' => array(3),
-    'access arguments' => array('access site reports'),
-    'type' => MENU_CALLBACK,
-  );
-  return $items;
-}
-
 function dblog_init() {
   if (arg(0) == 'admin' && arg(1) == 'reports') {
     // Add the CSS for this module
Index: modules/dblog/dblog.registry.inc
===================================================================
RCS file: modules/dblog/dblog.registry.inc
diff -N modules/dblog/dblog.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/dblog/dblog.registry.inc	11 Dec 2008 11:32:54 -0000
@@ -0,0 +1,60 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the dblog module.
+ */
+
+/**
+ * Implementation of hook_theme().
+ */
+function dblog_theme() {
+  return array(
+    'dblog_filters' => array(
+      'arguments' => array('form' => NULL),
+    ),
+  );
+}
+
+/**
+ * Implementation of hook_menu().
+ */
+function dblog_menu() {
+  $items['admin/settings/logging/dblog'] = array(
+    'title' => 'Database logging',
+    'description' => 'Settings for logging to the Drupal database logs. This is the most common method for small to medium sites on shared hosting. The logs are viewable from the admin pages.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('dblog_admin_settings'),
+    'access arguments' => array('administer site configuration'),
+  );
+  $items['admin/reports/dblog'] = array(
+    'title' => 'Recent log entries',
+    'description' => 'View events that have recently been logged.',
+    'page callback' => 'dblog_overview',
+    'access arguments' => array('access site reports'),
+    'weight' => -1,
+  );
+  $items['admin/reports/page-not-found'] = array(
+    'title' => "Top 'page not found' errors",
+    'description' => "View 'page not found' errors (404s).",
+    'page callback' => 'dblog_top',
+    'page arguments' => array('page not found'),
+    'access arguments' => array('access site reports'),
+  );
+  $items['admin/reports/access-denied'] = array(
+    'title' => "Top 'access denied' errors",
+    'description' => "View 'access denied' errors (403s).",
+    'page callback' => 'dblog_top',
+    'page arguments' => array('access denied'),
+    'access arguments' => array('access site reports'),
+  );
+  $items['admin/reports/event/%'] = array(
+    'title' => 'Details',
+    'page callback' => 'dblog_event',
+    'page arguments' => array(3),
+    'access arguments' => array('access site reports'),
+    'type' => MENU_CALLBACK,
+  );
+  return $items;
+}
Index: modules/filter/filter.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/filter/filter.info,v
retrieving revision 1.11
diff -u -p -r1.11 filter.info
--- modules/filter/filter.info	12 Oct 2008 01:23:03 -0000	1.11
+++ modules/filter/filter.info	11 Dec 2008 11:32:54 -0000
@@ -7,5 +7,6 @@ core = 7.x
 files[] = filter.module
 files[] = filter.admin.inc
 files[] = filter.pages.inc
+files[] = filter.registry.inc
 files[] = filter.install
 required = TRUE
Index: modules/filter/filter.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/filter/filter.module,v
retrieving revision 1.236
diff -u -p -r1.236 filter.module
--- modules/filter/filter.module	3 Dec 2008 19:43:21 -0000	1.236
+++ modules/filter/filter.module	11 Dec 2008 11:32:55 -0000
@@ -40,96 +40,6 @@ function filter_help($path, $arg) {
   }
 }
 
-/**
- * Implementation of hook_theme().
- */
-function filter_theme() {
-  return array(
-    'filter_admin_overview' => array(
-      'arguments' => array('form' => NULL),
-      'file' => 'filter.admin.inc',
-    ),
-    'filter_admin_order' => array(
-      'arguments' => array('form' => NULL),
-      'file' => 'filter.admin.inc',
-    ),
-    'filter_tips' => array(
-      'arguments' => array('tips' => NULL, 'long' => FALSE),
-      'file' => 'filter.pages.inc',
-    ),
-    'filter_tips_more_info' => array(
-      'arguments' => array(),
-    ),
-  );
-}
-
-/**
- * Implementation of hook_menu().
- */
-function filter_menu() {
-  $items['admin/settings/filters'] = array(
-    'title' => 'Input formats',
-    'description' => 'Configure how content input by users is filtered, including allowed HTML tags. Also allows enabling of module-provided filters.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('filter_admin_overview'),
-    'access arguments' => array('administer filters'),
-  );
-  $items['admin/settings/filters/list'] = array(
-    'title' => 'List',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-  );
-  $items['admin/settings/filters/add'] = array(
-    'title' => 'Add input format',
-    'page callback' => 'filter_admin_format_page',
-    'access arguments' => array('administer filters'),
-    'type' => MENU_LOCAL_TASK,
-    'weight' => 1,
-  );
-  $items['admin/settings/filters/delete'] = array(
-    'title' => 'Delete input format',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('filter_admin_delete'),
-    'access arguments' => array('administer filters'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['filter/tips'] = array(
-    'title' => 'Compose tips',
-    'page callback' => 'filter_tips_long',
-    'access callback' => TRUE,
-    'type' => MENU_SUGGESTED_ITEM,
-  );
-  $items['admin/settings/filters/%filter_format'] = array(
-    'type' => MENU_CALLBACK,
-    'title callback' => 'filter_admin_format_title',
-    'title arguments' => array(3),
-    'page callback' => 'filter_admin_format_page',
-    'page arguments' => array(3),
-    'access arguments' => array('administer filters'),
-  );
-  $items['admin/settings/filters/%filter_format/edit'] = array(
-    'title' => 'Edit',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-    'weight' => 0,
-  );
-  $items['admin/settings/filters/%filter_format/configure'] = array(
-    'title' => 'Configure',
-    'page callback' => 'filter_admin_configure_page',
-    'page arguments' => array(3),
-    'access arguments' => array('administer filters'),
-    'type' => MENU_LOCAL_TASK,
-    'weight' => 1,
-  );
-  $items['admin/settings/filters/%filter_format/order'] = array(
-    'title' => 'Rearrange',
-    'page callback' => 'filter_admin_order_page',
-    'page arguments' => array(3),
-    'access arguments' => array('administer filters'),
-    'type' => MENU_LOCAL_TASK,
-    'weight' => 2,
-  );
-  return $items;
-}
-
 function filter_format_load($arg) {
   return filter_formats($arg);
 }
Index: modules/filter/filter.registry.inc
===================================================================
RCS file: modules/filter/filter.registry.inc
diff -N modules/filter/filter.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/filter/filter.registry.inc	11 Dec 2008 11:32:55 -0000
@@ -0,0 +1,97 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the filter module.
+ */
+
+/**
+ * Implementation of hook_theme().
+ */
+function filter_theme() {
+  return array(
+    'filter_admin_overview' => array(
+      'arguments' => array('form' => NULL),
+      'file' => 'filter.admin.inc',
+    ),
+    'filter_admin_order' => array(
+      'arguments' => array('form' => NULL),
+      'file' => 'filter.admin.inc',
+    ),
+    'filter_tips' => array(
+      'arguments' => array('tips' => NULL, 'long' => FALSE),
+      'file' => 'filter.pages.inc',
+    ),
+    'filter_tips_more_info' => array(
+      'arguments' => array(),
+    ),
+  );
+}
+
+/**
+ * Implementation of hook_menu().
+ */
+function filter_menu() {
+  $items['admin/settings/filters'] = array(
+    'title' => 'Input formats',
+    'description' => 'Configure how content input by users is filtered, including allowed HTML tags. Also allows enabling of module-provided filters.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('filter_admin_overview'),
+    'access arguments' => array('administer filters'),
+  );
+  $items['admin/settings/filters/list'] = array(
+    'title' => 'List',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+  );
+  $items['admin/settings/filters/add'] = array(
+    'title' => 'Add input format',
+    'page callback' => 'filter_admin_format_page',
+    'access arguments' => array('administer filters'),
+    'type' => MENU_LOCAL_TASK,
+    'weight' => 1,
+  );
+  $items['admin/settings/filters/delete'] = array(
+    'title' => 'Delete input format',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('filter_admin_delete'),
+    'access arguments' => array('administer filters'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['filter/tips'] = array(
+    'title' => 'Compose tips',
+    'page callback' => 'filter_tips_long',
+    'access callback' => TRUE,
+    'type' => MENU_SUGGESTED_ITEM,
+  );
+  $items['admin/settings/filters/%filter_format'] = array(
+    'type' => MENU_CALLBACK,
+    'title callback' => 'filter_admin_format_title',
+    'title arguments' => array(3),
+    'page callback' => 'filter_admin_format_page',
+    'page arguments' => array(3),
+    'access arguments' => array('administer filters'),
+  );
+  $items['admin/settings/filters/%filter_format/edit'] = array(
+    'title' => 'Edit',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => 0,
+  );
+  $items['admin/settings/filters/%filter_format/configure'] = array(
+    'title' => 'Configure',
+    'page callback' => 'filter_admin_configure_page',
+    'page arguments' => array(3),
+    'access arguments' => array('administer filters'),
+    'type' => MENU_LOCAL_TASK,
+    'weight' => 1,
+  );
+  $items['admin/settings/filters/%filter_format/order'] = array(
+    'title' => 'Rearrange',
+    'page callback' => 'filter_admin_order_page',
+    'page arguments' => array(3),
+    'access arguments' => array('administer filters'),
+    'type' => MENU_LOCAL_TASK,
+    'weight' => 2,
+  );
+  return $items;
+}
Index: modules/forum/forum.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/forum/forum.info,v
retrieving revision 1.11
diff -u -p -r1.11 forum.info
--- modules/forum/forum.info	11 Oct 2008 02:32:46 -0000	1.11
+++ modules/forum/forum.info	11 Dec 2008 11:32:55 -0000
@@ -9,4 +9,5 @@ core = 7.x
 files[] = forum.module
 files[] = forum.admin.inc
 files[] = forum.pages.inc
+files[] = forum.registry.inc
 files[] = forum.install
Index: modules/forum/forum.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/forum/forum.module,v
retrieving revision 1.475
diff -u -p -r1.475 forum.module
--- modules/forum/forum.module	9 Dec 2008 11:30:24 -0000	1.475
+++ modules/forum/forum.module	11 Dec 2008 11:32:55 -0000
@@ -33,38 +33,6 @@ function forum_help($path, $arg) {
 }
 
 /**
- * Implementation of hook_theme().
- */
-function forum_theme() {
-  return array(
-    'forums' => array(
-      'template' => 'forums',
-      'arguments' => array('forums' => NULL, 'topics' => NULL, 'parents' => NULL, 'tid' => NULL, 'sortby' => NULL, 'forum_per_page' => NULL),
-    ),
-    'forum_list' => array(
-      'template' => 'forum-list',
-      'arguments' => array('forums' => NULL, 'parents' => NULL, 'tid' => NULL),
-    ),
-    'forum_topic_list' => array(
-      'template' => 'forum-topic-list',
-      'arguments' => array('tid' => NULL, 'topics' => NULL, 'sortby' => NULL, 'forum_per_page' => NULL),
-    ),
-    'forum_icon' => array(
-      'template' => 'forum-icon',
-      'arguments' => array('new_posts' => NULL, 'num_posts' => 0, 'comment_mode' => 0, 'sticky' => 0),
-    ),
-    'forum_topic_navigation' => array(
-      'template' => 'forum-topic-navigation',
-      'arguments' => array('node' => NULL),
-    ),
-    'forum_submitted' => array(
-      'template' => 'forum-submitted',
-      'arguments' => array('topic' => NULL),
-    ),
-  );
-}
-
-/**
  * Fetch a forum term.
  *
  * @param $tid
@@ -79,76 +47,6 @@ function forum_term_load($tid) {
 }
 
 /**
- * Implementation of hook_menu().
- */
-function forum_menu() {
-  $items['forum'] = array(
-    'title' => 'Forums',
-    'page callback' => 'forum_page',
-    'access arguments' => array('access content'),
-    'type' => MENU_SUGGESTED_ITEM,
-  );
-  $items['admin/build/forum'] = array(
-    'title' => 'Forums',
-    'description' => 'Control forums and their hierarchy and change forum settings.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('forum_overview'),
-    'access arguments' => array('administer forums'),
-  );
-  $items['admin/build/forum/list'] = array(
-    'title' => 'List',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-    'weight' => -10,
-  );
-  $items['admin/build/forum/add/container'] = array(
-    'title' => 'Add container',
-    'page callback' => 'forum_form_main',
-    'page arguments' => array('container'),
-    'access arguments' => array('administer forums'),
-    'type' => MENU_LOCAL_TASK,
-    'parent' => 'admin/build/forum',
-  );
-  $items['admin/build/forum/add/forum'] = array(
-    'title' => 'Add forum',
-    'page callback' => 'forum_form_main',
-    'page arguments' => array('forum'),
-    'access arguments' => array('administer forums'),
-    'type' => MENU_LOCAL_TASK,
-    'parent' => 'admin/build/forum',
-  );
-  $items['admin/build/forum/settings'] = array(
-    'title' => 'Settings',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('forum_admin_settings'),
-    'access arguments' => array('administer forums'),
-    'weight' => 5,
-    'type' => MENU_LOCAL_TASK,
-    'parent' => 'admin/build/forum',
-  );
-  $items['admin/build/forum/edit/%forum_term'] = array(
-    'page callback' => 'forum_form_main',
-    'access arguments' => array('administer forums'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/build/forum/edit/container/%forum_term'] = array(
-    'title' => 'Edit container',
-    'page callback' => 'forum_form_main',
-    'page arguments' => array('container', 5),
-    'access arguments' => array('administer forums'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/build/forum/edit/forum/%forum_term'] = array(
-    'title' => 'Edit forum',
-    'page callback' => 'forum_form_main',
-    'page arguments' => array('forum', 5),
-    'access arguments' => array('administer forums'),
-    'type' => MENU_CALLBACK,
-  );
-  return $items;
-}
-
-
-/**
  * Implementation of hook_init().
  */
 function forum_init() {
Index: modules/forum/forum.registry.inc
===================================================================
RCS file: modules/forum/forum.registry.inc
diff -N modules/forum/forum.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/forum/forum.registry.inc	11 Dec 2008 11:32:55 -0000
@@ -0,0 +1,108 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the forum module.
+ */
+
+/**
+ * Implementation of hook_theme().
+ */
+function forum_theme() {
+  return array(
+    'forums' => array(
+      'template' => 'forums',
+      'arguments' => array('forums' => NULL, 'topics' => NULL, 'parents' => NULL, 'tid' => NULL, 'sortby' => NULL, 'forum_per_page' => NULL),
+    ),
+    'forum_list' => array(
+      'template' => 'forum-list',
+      'arguments' => array('forums' => NULL, 'parents' => NULL, 'tid' => NULL),
+    ),
+    'forum_topic_list' => array(
+      'template' => 'forum-topic-list',
+      'arguments' => array('tid' => NULL, 'topics' => NULL, 'sortby' => NULL, 'forum_per_page' => NULL),
+    ),
+    'forum_icon' => array(
+      'template' => 'forum-icon',
+      'arguments' => array('new_posts' => NULL, 'num_posts' => 0, 'comment_mode' => 0, 'sticky' => 0),
+    ),
+    'forum_topic_navigation' => array(
+      'template' => 'forum-topic-navigation',
+      'arguments' => array('node' => NULL),
+    ),
+    'forum_submitted' => array(
+      'template' => 'forum-submitted',
+      'arguments' => array('topic' => NULL),
+    ),
+  );
+}
+
+/**
+ * Implementation of hook_menu().
+ */
+function forum_menu() {
+  $items['forum'] = array(
+    'title' => 'Forums',
+    'page callback' => 'forum_page',
+    'access arguments' => array('access content'),
+    'type' => MENU_SUGGESTED_ITEM,
+  );
+  $items['admin/build/forum'] = array(
+    'title' => 'Forums',
+    'description' => 'Control forums and their hierarchy and change forum settings.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('forum_overview'),
+    'access arguments' => array('administer forums'),
+  );
+  $items['admin/build/forum/list'] = array(
+    'title' => 'List',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -10,
+  );
+  $items['admin/build/forum/add/container'] = array(
+    'title' => 'Add container',
+    'page callback' => 'forum_form_main',
+    'page arguments' => array('container'),
+    'access arguments' => array('administer forums'),
+    'type' => MENU_LOCAL_TASK,
+    'parent' => 'admin/build/forum',
+  );
+  $items['admin/build/forum/add/forum'] = array(
+    'title' => 'Add forum',
+    'page callback' => 'forum_form_main',
+    'page arguments' => array('forum'),
+    'access arguments' => array('administer forums'),
+    'type' => MENU_LOCAL_TASK,
+    'parent' => 'admin/build/forum',
+  );
+  $items['admin/build/forum/settings'] = array(
+    'title' => 'Settings',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('forum_admin_settings'),
+    'access arguments' => array('administer forums'),
+    'weight' => 5,
+    'type' => MENU_LOCAL_TASK,
+    'parent' => 'admin/build/forum',
+  );
+  $items['admin/build/forum/edit/%forum_term'] = array(
+    'page callback' => 'forum_form_main',
+    'access arguments' => array('administer forums'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/build/forum/edit/container/%forum_term'] = array(
+    'title' => 'Edit container',
+    'page callback' => 'forum_form_main',
+    'page arguments' => array('container', 5),
+    'access arguments' => array('administer forums'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/build/forum/edit/forum/%forum_term'] = array(
+    'title' => 'Edit forum',
+    'page callback' => 'forum_form_main',
+    'page arguments' => array('forum', 5),
+    'access arguments' => array('administer forums'),
+    'type' => MENU_CALLBACK,
+  );
+  return $items;
+}
Index: modules/help/help.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/help/help.info,v
retrieving revision 1.7
diff -u -p -r1.7 help.info
--- modules/help/help.info	11 Oct 2008 02:32:47 -0000	1.7
+++ modules/help/help.info	11 Dec 2008 11:32:55 -0000
@@ -6,3 +6,4 @@ version = VERSION
 core = 7.x
 files[] = help.module
 files[] = help.admin.inc
+files[] = help.registry.inc
Index: modules/help/help.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/help/help.module,v
retrieving revision 1.81
diff -u -p -r1.81 help.module
--- modules/help/help.module	6 May 2008 12:18:47 -0000	1.81
+++ modules/help/help.module	11 Dec 2008 11:32:55 -0000
@@ -7,30 +7,6 @@
  */
 
 /**
- * Implementation of hook_menu().
- */
-function help_menu() {
-  $items['admin/help'] = array(
-    'title' => 'Help',
-    'page callback' => 'help_main',
-    'access arguments' => array('access administration pages'),
-    'weight' => 9,
-  );
-
-  foreach (module_implements('help', TRUE) as $module) {
-    $items['admin/help/' . $module] = array(
-      'title' => $module,
-      'page callback' => 'help_page',
-      'page arguments' => array(2),
-      'access arguments' => array('access administration pages'),
-      'type' => MENU_CALLBACK,
-    );
-  }
-
-  return $items;
-}
-
-/**
  * Implementation of hook_help().
  */
 function help_help($path, $arg) {
Index: modules/help/help.registry.inc
===================================================================
RCS file: modules/help/help.registry.inc
diff -N modules/help/help.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/help/help.registry.inc	11 Dec 2008 11:32:55 -0000
@@ -0,0 +1,31 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the help module.
+ */
+
+/**
+ * Implementation of hook_menu().
+ */
+function help_menu() {
+  $items['admin/help'] = array(
+    'title' => 'Help',
+    'page callback' => 'help_main',
+    'access arguments' => array('access administration pages'),
+    'weight' => 9,
+  );
+
+  foreach (module_implements('help', TRUE) as $module) {
+    $items['admin/help/' . $module] = array(
+      'title' => $module,
+      'page callback' => 'help_page',
+      'page arguments' => array(2),
+      'access arguments' => array('access administration pages'),
+      'type' => MENU_CALLBACK,
+    );
+  }
+
+  return $items;
+}
Index: modules/locale/locale.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/locale/locale.info,v
retrieving revision 1.10
diff -u -p -r1.10 locale.info
--- modules/locale/locale.info	11 Oct 2008 02:32:49 -0000	1.10
+++ modules/locale/locale.info	11 Dec 2008 11:32:55 -0000
@@ -5,4 +5,5 @@ package = Core
 version = VERSION
 core = 7.x
 files[] = locale.module
+files[] = locale.registry.inc
 files[] = locale.install
Index: modules/locale/locale.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/locale/locale.module,v
retrieving revision 1.233
diff -u -p -r1.233 locale.module
--- modules/locale/locale.module	9 Dec 2008 11:36:03 -0000	1.233
+++ modules/locale/locale.module	11 Dec 2008 11:32:56 -0000
@@ -77,105 +77,6 @@ function locale_help($path, $arg) {
 }
 
 /**
- * Implementation of hook_menu().
- */
-function locale_menu() {
-  // Manage languages
-  $items['admin/settings/language'] = array(
-    'title' => 'Languages',
-    'description' => 'Configure languages for content and the user interface.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('locale_languages_overview_form'),
-    'access arguments' => array('administer languages'),
-  );
-  $items['admin/settings/language/overview'] = array(
-    'title' => 'List',
-    'weight' => 0,
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-  );
-  $items['admin/settings/language/add'] = array(
-    'title' => 'Add language',
-    'page callback' => 'locale_languages_add_screen', // two forms concatenated
-    'access arguments' => array('administer languages'),
-    'weight' => 5,
-    'type' => MENU_LOCAL_TASK,
-  );
-  $items['admin/settings/language/configure'] = array(
-    'title' => 'Configure',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('locale_languages_configure_form'),
-    'access arguments' => array('administer languages'),
-    'weight' => 10,
-    'type' => MENU_LOCAL_TASK,
-  );
-  $items['admin/settings/language/edit/%'] = array(
-    'title' => 'Edit language',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('locale_languages_edit_form', 4),
-    'access arguments' => array('administer languages'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/settings/language/delete/%'] = array(
-    'title' => 'Confirm',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('locale_languages_delete_form', 4),
-    'access arguments' => array('administer languages'),
-    'type' => MENU_CALLBACK,
-  );
-
-  // Translation functionality
-  $items['admin/build/translate'] = array(
-    'title' => 'Translate interface',
-    'description' => 'Translate the built in interface and optionally other text.',
-    'page callback' => 'locale_translate_overview_screen', // not a form, just a table
-    'access arguments' => array('translate interface'),
-  );
-  $items['admin/build/translate/overview'] = array(
-    'title' => 'Overview',
-    'weight' => 0,
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-  );
-  $items['admin/build/translate/search'] = array(
-    'title' => 'Search',
-    'weight' => 10,
-    'type' => MENU_LOCAL_TASK,
-    'page callback' => 'locale_translate_seek_screen', // search results and form concatenated
-    'access arguments' => array('translate interface'),
-  );
-  $items['admin/build/translate/import'] = array(
-    'title' => 'Import',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('locale_translate_import_form'),
-    'access arguments' => array('translate interface'),
-    'weight' => 20,
-    'type' => MENU_LOCAL_TASK,
-  );
-  $items['admin/build/translate/export'] = array(
-    'title' => 'Export',
-    'page callback' => 'locale_translate_export_screen',  // possibly multiple forms concatenated
-    'access arguments' => array('translate interface'),
-    'weight' => 30,
-    'type' => MENU_LOCAL_TASK,
-  );
-  $items['admin/build/translate/edit/%'] = array(
-    'title' => 'Edit string',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('locale_translate_edit_form', 4),
-    'access arguments' => array('translate interface'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/build/translate/delete/%'] = array(
-    'title' => 'Delete string',
-    'page callback' => 'locale_translate_delete_page',
-    'page arguments' => array(4),
-    'access arguments' => array('translate interface'),
-    'type' => MENU_CALLBACK,
-  );
-
-  return $items;
-}
-
-/**
  * Wrapper function to be able to set callbacks in locale.inc
  */
 function locale_inc_callback() {
@@ -318,17 +219,6 @@ function locale_form_alter(&$form, $form
   }
 }
 
-/**
- * Implementation of hook_theme().
- */
-function locale_theme() {
-  return array(
-    'locale_languages_overview_form' => array(
-      'arguments' => array('form' => array()),
-    ),
-  );
-}
-
 // ---------------------------------------------------------------------------------
 // Locale core functionality
 
Index: modules/locale/locale.registry.inc
===================================================================
RCS file: modules/locale/locale.registry.inc
diff -N modules/locale/locale.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/locale/locale.registry.inc	11 Dec 2008 11:32:56 -0000
@@ -0,0 +1,117 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the locale module.
+ */
+
+/**
+ * Implementation of hook_theme().
+ */
+function locale_theme() {
+  return array(
+    'locale_languages_overview_form' => array(
+      'arguments' => array('form' => array()),
+    ),
+  );
+}
+
+/**
+ * Implementation of hook_menu().
+ */
+function locale_menu() {
+  // Manage languages
+  $items['admin/settings/language'] = array(
+    'title' => 'Languages',
+    'description' => 'Configure languages for content and the user interface.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('locale_languages_overview_form'),
+    'access arguments' => array('administer languages'),
+  );
+  $items['admin/settings/language/overview'] = array(
+    'title' => 'List',
+    'weight' => 0,
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+  );
+  $items['admin/settings/language/add'] = array(
+    'title' => 'Add language',
+    'page callback' => 'locale_languages_add_screen', // two forms concatenated
+    'access arguments' => array('administer languages'),
+    'weight' => 5,
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['admin/settings/language/configure'] = array(
+    'title' => 'Configure',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('locale_languages_configure_form'),
+    'access arguments' => array('administer languages'),
+    'weight' => 10,
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['admin/settings/language/edit/%'] = array(
+    'title' => 'Edit language',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('locale_languages_edit_form', 4),
+    'access arguments' => array('administer languages'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/settings/language/delete/%'] = array(
+    'title' => 'Confirm',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('locale_languages_delete_form', 4),
+    'access arguments' => array('administer languages'),
+    'type' => MENU_CALLBACK,
+  );
+
+  // Translation functionality
+  $items['admin/build/translate'] = array(
+    'title' => 'Translate interface',
+    'description' => 'Translate the built in interface and optionally other text.',
+    'page callback' => 'locale_translate_overview_screen', // not a form, just a table
+    'access arguments' => array('translate interface'),
+  );
+  $items['admin/build/translate/overview'] = array(
+    'title' => 'Overview',
+    'weight' => 0,
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+  );
+  $items['admin/build/translate/search'] = array(
+    'title' => 'Search',
+    'weight' => 10,
+    'type' => MENU_LOCAL_TASK,
+    'page callback' => 'locale_translate_seek_screen', // search results and form concatenated
+    'access arguments' => array('translate interface'),
+  );
+  $items['admin/build/translate/import'] = array(
+    'title' => 'Import',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('locale_translate_import_form'),
+    'access arguments' => array('translate interface'),
+    'weight' => 20,
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['admin/build/translate/export'] = array(
+    'title' => 'Export',
+    'page callback' => 'locale_translate_export_screen',  // possibly multiple forms concatenated
+    'access arguments' => array('translate interface'),
+    'weight' => 30,
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['admin/build/translate/edit/%'] = array(
+    'title' => 'Edit string',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('locale_translate_edit_form', 4),
+    'access arguments' => array('translate interface'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/build/translate/delete/%'] = array(
+    'title' => 'Delete string',
+    'page callback' => 'locale_translate_delete_page',
+    'page arguments' => array(4),
+    'access arguments' => array('translate interface'),
+    'type' => MENU_CALLBACK,
+  );
+
+  return $items;
+}
Index: modules/menu/menu.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/menu/menu.info,v
retrieving revision 1.8
diff -u -p -r1.8 menu.info
--- modules/menu/menu.info	11 Oct 2008 02:32:50 -0000	1.8
+++ modules/menu/menu.info	11 Dec 2008 11:32:56 -0000
@@ -6,4 +6,5 @@ version = VERSION
 core = 7.x
 files[] = menu.module
 files[] = menu.admin.inc
+files[] = menu.registry.inc
 files[] = menu.install
Index: modules/menu/menu.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/menu/menu.module,v
retrieving revision 1.175
diff -u -p -r1.175 menu.module
--- modules/menu/menu.module	13 Nov 2008 05:54:35 -0000	1.175
+++ modules/menu/menu.module	11 Dec 2008 11:32:56 -0000
@@ -46,108 +46,6 @@ function menu_perm() {
 }
 
 /**
- * Implementation of hook_menu().
- */
-function menu_menu() {
-  $items['admin/build/menu'] = array(
-    'title' => 'Menus',
-    'description' => "Control your site's Navigation menu, Main menu and Secondary menu. as well as rename and reorganize menu items.",
-    'page callback' => 'menu_overview_page',
-    'access callback' => 'user_access',
-    'access arguments' => array('administer menu'),
-  );
-  $items['admin/build/menu/list'] = array(
-    'title' => 'List menus',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-    'weight' => -10,
-  );
-  $items['admin/build/menu/add'] = array(
-    'title' => 'Add menu',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('menu_edit_menu', 'add'),
-    'access arguments' => array('administer menu'),
-    'type' => MENU_LOCAL_TASK,
-  );
-  $items['admin/build/menu/settings'] = array(
-    'title' => 'Settings',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('menu_configure'),
-    'access arguments' => array('administer menu'),
-    'type' => MENU_LOCAL_TASK,
-    'weight' => 5,
-  );
-  $items['admin/build/menu-customize/%menu'] = array(
-    'title' => 'Customize menu',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('menu_overview_form', 3),
-    'title callback' => 'menu_overview_title',
-    'title arguments' => array(3),
-    'access arguments' => array('administer menu'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/build/menu-customize/%menu/list'] = array(
-    'title' => 'List items',
-    'weight' => -10,
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-  );
-  $items['admin/build/menu-customize/%menu/add'] = array(
-    'title' => 'Add item',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('menu_edit_item', 'add', NULL, 3),
-    'access arguments' => array('administer menu'),
-    'type' => MENU_LOCAL_TASK,
-  );
-  $items['admin/build/menu-customize/%menu/edit'] = array(
-    'title' => 'Edit menu',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('menu_edit_menu', 'edit', 3),
-    'access arguments' => array('administer menu'),
-    'type' => MENU_LOCAL_TASK,
-  );
-  $items['admin/build/menu-customize/%menu/delete'] = array(
-    'title' => 'Delete menu',
-    'page callback' => 'menu_delete_menu_page',
-    'page arguments' => array(3),
-    'access arguments' => array('administer menu'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/build/menu/item/%menu_link/edit'] = array(
-    'title' => 'Edit menu item',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('menu_edit_item', 'edit', 4, NULL),
-    'access arguments' => array('administer menu'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/build/menu/item/%menu_link/reset'] = array(
-    'title' => 'Reset menu item',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('menu_reset_item_confirm', 4),
-    'access arguments' => array('administer menu'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/build/menu/item/%menu_link/delete'] = array(
-    'title' => 'Delete menu item',
-    'page callback' => 'menu_item_delete_page',
-    'page arguments' => array(4),
-    'access arguments' => array('administer menu'),
-    'type' => MENU_CALLBACK,
-  );
-  return $items;
-}
-
-/**
- * Implemenation of hook_theme().
- */
-function menu_theme() {
-  return array(
-    'menu_overview_form' => array(
-      'file' => 'menu.admin.inc',
-      'arguments' => array('form' => NULL),
-    ),
-  );
-}
-
-/**
  * Implementation of hook_enable().
  *
  *  Add a link for each custom menu.
Index: modules/menu/menu.registry.inc
===================================================================
RCS file: modules/menu/menu.registry.inc
diff -N modules/menu/menu.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/menu/menu.registry.inc	11 Dec 2008 11:32:56 -0000
@@ -0,0 +1,109 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the menu module.
+ */
+
+/**
+ * Implemenation of hook_theme().
+ */
+function menu_theme() {
+  return array(
+    'menu_overview_form' => array(
+      'file' => 'menu.admin.inc',
+      'arguments' => array('form' => NULL),
+    ),
+  );
+}
+
+/**
+ * Implementation of hook_menu().
+ */
+function menu_menu() {
+  $items['admin/build/menu'] = array(
+    'title' => 'Menus',
+    'description' => "Control your site's Navigation menu, Main menu and Secondary menu. as well as rename and reorganize menu items.",
+    'page callback' => 'menu_overview_page',
+    'access callback' => 'user_access',
+    'access arguments' => array('administer menu'),
+  );
+  $items['admin/build/menu/list'] = array(
+    'title' => 'List menus',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -10,
+  );
+  $items['admin/build/menu/add'] = array(
+    'title' => 'Add menu',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('menu_edit_menu', 'add'),
+    'access arguments' => array('administer menu'),
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['admin/build/menu/settings'] = array(
+    'title' => 'Settings',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('menu_configure'),
+    'access arguments' => array('administer menu'),
+    'type' => MENU_LOCAL_TASK,
+    'weight' => 5,
+  );
+  $items['admin/build/menu-customize/%menu'] = array(
+    'title' => 'Customize menu',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('menu_overview_form', 3),
+    'title callback' => 'menu_overview_title',
+    'title arguments' => array(3),
+    'access arguments' => array('administer menu'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/build/menu-customize/%menu/list'] = array(
+    'title' => 'List items',
+    'weight' => -10,
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+  );
+  $items['admin/build/menu-customize/%menu/add'] = array(
+    'title' => 'Add item',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('menu_edit_item', 'add', NULL, 3),
+    'access arguments' => array('administer menu'),
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['admin/build/menu-customize/%menu/edit'] = array(
+    'title' => 'Edit menu',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('menu_edit_menu', 'edit', 3),
+    'access arguments' => array('administer menu'),
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['admin/build/menu-customize/%menu/delete'] = array(
+    'title' => 'Delete menu',
+    'page callback' => 'menu_delete_menu_page',
+    'page arguments' => array(3),
+    'access arguments' => array('administer menu'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/build/menu/item/%menu_link/edit'] = array(
+    'title' => 'Edit menu item',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('menu_edit_item', 'edit', 4, NULL),
+    'access arguments' => array('administer menu'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/build/menu/item/%menu_link/reset'] = array(
+    'title' => 'Reset menu item',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('menu_reset_item_confirm', 4),
+    'access arguments' => array('administer menu'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/build/menu/item/%menu_link/delete'] = array(
+    'title' => 'Delete menu item',
+    'page callback' => 'menu_item_delete_page',
+    'page arguments' => array(4),
+    'access arguments' => array('administer menu'),
+    'type' => MENU_CALLBACK,
+  );
+  return $items;
+}
Index: modules/node/node.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.info,v
retrieving revision 1.10
diff -u -p -r1.10 node.info
--- modules/node/node.info	12 Oct 2008 01:23:04 -0000	1.10
+++ modules/node/node.info	11 Dec 2008 11:32:56 -0000
@@ -8,5 +8,6 @@ files[] = node.module
 files[] = content_types.inc
 files[] = node.admin.inc
 files[] = node.pages.inc
+files[] = node.registry.inc
 files[] = node.install
 required = TRUE
Index: modules/node/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.module,v
retrieving revision 1.1001
diff -u -p -r1.1001 node.module
--- modules/node/node.module	5 Dec 2008 22:18:45 -0000	1.1001
+++ modules/node/node.module	11 Dec 2008 11:32:57 -0000
@@ -91,57 +91,6 @@ function node_help($path, $arg) {
 }
 
 /**
- * Implementation of hook_theme().
- */
-function node_theme() {
-  return array(
-    'node' => array(
-      'arguments' => array('node' => NULL, 'teaser' => FALSE, 'page' => FALSE),
-      'template' => 'node',
-    ),
-    'node_list' => array(
-      'arguments' => array('items' => NULL, 'title' => NULL),
-    ),
-    'node_search_admin' => array(
-      'arguments' => array('form' => NULL),
-    ),
-    'node_filter_form' => array(
-      'arguments' => array('form' => NULL),
-      'file' => 'node.admin.inc',
-    ),
-    'node_filters' => array(
-      'arguments' => array('form' => NULL),
-      'file' => 'node.admin.inc',
-    ),
-    'node_admin_nodes' => array(
-      'arguments' => array('form' => NULL),
-      'file' => 'node.admin.inc',
-    ),
-    'node_add_list' => array(
-      'arguments' => array('content' => NULL),
-      'file' => 'node.pages.inc',
-    ),
-    'node_form' => array(
-      'arguments' => array('form' => NULL),
-      'file' => 'node.pages.inc',
-    ),
-    'node_preview' => array(
-      'arguments' => array('node' => NULL),
-      'file' => 'node.pages.inc',
-    ),
-    'node_log_message' => array(
-      'arguments' => array('log' => NULL),
-    ),
-    'node_submitted' => array(
-      'arguments' => array('node' => NULL),
-    ),
-    'node_admin_overview' => array(
-      'arguments' => array('name' => NULL, 'type' => NULL),
-    ),
-  );
-}
-
-/**
  * Implementation of hook_cron().
  */
 function node_cron() {
@@ -1593,173 +1542,6 @@ function _node_add_access() {
 }
 
 /**
- * Implementation of hook_menu().
- */
-function node_menu() {
-  $items['admin/content/node'] = array(
-    'title' => 'Content',
-    'description' => "View, edit, and delete your site's content.",
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('node_admin_content'),
-    'access arguments' => array('administer nodes'),
-  );
-
-  $items['admin/content/node/overview'] = array(
-    'title' => 'List',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-    'weight' => -10,
-  );
-
-  $items['admin/content/node-settings'] = array(
-    'title' => 'Post settings',
-    'description' => 'Control posting behavior, such as teaser length, requiring previews before posting, and the number of posts on the front page.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('node_configure'),
-    'access arguments' => array('administer nodes'),
-  );
-  $items['admin/content/node-settings/rebuild'] = array(
-    'title' => 'Rebuild permissions',
-    'page arguments' => array('node_configure_rebuild_confirm'),
-    // Any user than can potentially trigger a node_acess_needs_rebuild(TRUE)
-    // has to be allowed access to the 'node access rebuild' confirm form.
-    'access arguments' => array('access administration pages'),
-    'type' => MENU_CALLBACK,
-  );
-
-  $items['admin/build/types'] = array(
-    'title' => 'Content types',
-    'description' => 'Manage posts by content type, including default status, front page promotion, comment settings, etc.',
-    'page callback' => 'node_overview_types',
-    'access arguments' => array('administer content types'),
-  );
-  $items['admin/build/types/list'] = array(
-    'title' => 'List',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-    'weight' => -10,
-  );
-  $items['admin/build/types/add'] = array(
-    'title' => 'Add content type',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('node_type_form'),
-    'access arguments' => array('administer content types'),
-    'type' => MENU_LOCAL_TASK,
-  );
-  $items['node'] = array(
-    'title' => 'Content',
-    'page callback' => 'node_page_default',
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['node/add'] = array(
-    'title' => 'Create content',
-    'page callback' => 'node_add_page',
-    'access callback' => '_node_add_access',
-    'weight' => 1,
-  );
-  $items['rss.xml'] = array(
-    'title' => 'RSS feed',
-    'page callback' => 'node_feed',
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-  foreach (node_get_types('types', NULL, TRUE) as $type) {
-    $type_url_str = str_replace('_', '-', $type->type);
-    $items['node/add/' . $type_url_str] = array(
-      'title' => $type->name,
-      'title callback' => 'check_plain',
-      'page callback' => 'node_add',
-      'page arguments' => array(2),
-      'access callback' => 'node_access',
-      'access arguments' => array('create', $type->type),
-      'description' => $type->description,
-    );
-    $items['admin/build/node-type/' . $type_url_str] = array(
-      'title' => $type->name,
-      'page callback' => 'drupal_get_form',
-      'page arguments' => array('node_type_form', $type),
-      'access arguments' => array('administer content types'),
-      'type' => MENU_CALLBACK,
-    );
-    $items['admin/build/node-type/' . $type_url_str . '/edit'] = array(
-      'title' => 'Edit',
-      'type' => MENU_DEFAULT_LOCAL_TASK,
-    );
-    $items['admin/build/node-type/' . $type_url_str . '/delete'] = array(
-      'title' => 'Delete',
-      'page arguments' => array('node_type_delete_confirm', $type),
-      'access arguments' => array('administer content types'),
-      'type' => MENU_CALLBACK,
-    );
-  }
-  $items['node/%node'] = array(
-    'title callback' => 'node_page_title',
-    'title arguments' => array(1),
-    'page callback' => 'node_page_view',
-    'page arguments' => array(1),
-    'access callback' => 'node_access',
-    'access arguments' => array('view', 1),
-    'type' => MENU_CALLBACK);
-  $items['node/%node/view'] = array(
-    'title' => 'View',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-    'weight' => -10);
-  $items['node/%node/edit'] = array(
-    'title' => 'Edit',
-    'page callback' => 'node_page_edit',
-    'page arguments' => array(1),
-    'access callback' => 'node_access',
-    'access arguments' => array('update', 1),
-    'weight' => 1,
-    'type' => MENU_LOCAL_TASK,
-  );
-  $items['node/%node/delete'] = array(
-    'title' => 'Delete',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('node_delete_confirm', 1),
-    'access callback' => 'node_access',
-    'access arguments' => array('delete', 1),
-    'weight' => 1,
-    'type' => MENU_CALLBACK);
-  $items['node/%node/revisions'] = array(
-    'title' => 'Revisions',
-    'page callback' => 'node_revision_overview',
-    'page arguments' => array(1),
-    'access callback' => '_node_revision_access',
-    'access arguments' => array(1),
-    'weight' => 2,
-    'type' => MENU_LOCAL_TASK,
-  );
-  $items['node/%node/revisions/%/view'] = array(
-    'title' => 'Revisions',
-    'load arguments' => array(3),
-    'page callback' => 'node_show',
-    'page arguments' => array(1, NULL, TRUE),
-    'access callback' => '_node_revision_access',
-    'access arguments' => array(1),
-    'type' => MENU_CALLBACK,
-  );
-  $items['node/%node/revisions/%/revert'] = array(
-    'title' => 'Revert to earlier revision',
-    'load arguments' => array(3),
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('node_revision_revert_confirm', 1),
-    'access callback' => '_node_revision_access',
-    'access arguments' => array(1, 'update'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['node/%node/revisions/%/delete'] = array(
-    'title' => 'Delete earlier revision',
-    'load arguments' => array(3),
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('node_revision_delete_confirm', 1),
-    'access callback' => '_node_revision_access',
-    'access arguments' => array(1, 'delete'),
-    'type' => MENU_CALLBACK,
-  );
-  return $items;
-}
-
-/**
  * Title callback.
  */
 function node_page_title($node) {
Index: modules/node/node.registry.inc
===================================================================
RCS file: modules/node/node.registry.inc
diff -N modules/node/node.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/node/node.registry.inc	11 Dec 2008 11:32:57 -0000
@@ -0,0 +1,227 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the node module.
+ */
+
+
+/**
+ * Implementation of hook_theme().
+ */
+function node_theme() {
+  return array(
+    'node' => array(
+      'arguments' => array('node' => NULL, 'teaser' => FALSE, 'page' => FALSE),
+      'template' => 'node',
+    ),
+    'node_list' => array(
+      'arguments' => array('items' => NULL, 'title' => NULL),
+    ),
+    'node_search_admin' => array(
+      'arguments' => array('form' => NULL),
+    ),
+    'node_filter_form' => array(
+      'arguments' => array('form' => NULL),
+      'file' => 'node.admin.inc',
+    ),
+    'node_filters' => array(
+      'arguments' => array('form' => NULL),
+      'file' => 'node.admin.inc',
+    ),
+    'node_admin_nodes' => array(
+      'arguments' => array('form' => NULL),
+      'file' => 'node.admin.inc',
+    ),
+    'node_add_list' => array(
+      'arguments' => array('content' => NULL),
+      'file' => 'node.pages.inc',
+    ),
+    'node_form' => array(
+      'arguments' => array('form' => NULL),
+      'file' => 'node.pages.inc',
+    ),
+    'node_preview' => array(
+      'arguments' => array('node' => NULL),
+      'file' => 'node.pages.inc',
+    ),
+    'node_log_message' => array(
+      'arguments' => array('log' => NULL),
+    ),
+    'node_submitted' => array(
+      'arguments' => array('node' => NULL),
+    ),
+    'node_admin_overview' => array(
+      'arguments' => array('name' => NULL, 'type' => NULL),
+    ),
+  );
+}
+
+/**
+ * Implementation of hook_menu().
+ */
+function node_menu() {
+  $items['admin/content/node'] = array(
+    'title' => 'Content',
+    'description' => "View, edit, and delete your site's content.",
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('node_admin_content'),
+    'access arguments' => array('administer nodes'),
+  );
+
+  $items['admin/content/node/overview'] = array(
+    'title' => 'List',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -10,
+  );
+
+  $items['admin/content/node-settings'] = array(
+    'title' => 'Post settings',
+    'description' => 'Control posting behavior, such as teaser length, requiring previews before posting, and the number of posts on the front page.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('node_configure'),
+    'access arguments' => array('administer nodes'),
+  );
+  $items['admin/content/node-settings/rebuild'] = array(
+    'title' => 'Rebuild permissions',
+    'page arguments' => array('node_configure_rebuild_confirm'),
+    // Any user than can potentially trigger a node_acess_needs_rebuild(TRUE)
+    // has to be allowed access to the 'node access rebuild' confirm form.
+    'access arguments' => array('access administration pages'),
+    'type' => MENU_CALLBACK,
+  );
+
+  $items['admin/build/types'] = array(
+    'title' => 'Content types',
+    'description' => 'Manage posts by content type, including default status, front page promotion, comment settings, etc.',
+    'page callback' => 'node_overview_types',
+    'access arguments' => array('administer content types'),
+  );
+  $items['admin/build/types/list'] = array(
+    'title' => 'List',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -10,
+  );
+  $items['admin/build/types/add'] = array(
+    'title' => 'Add content type',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('node_type_form'),
+    'access arguments' => array('administer content types'),
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['node'] = array(
+    'title' => 'Content',
+    'page callback' => 'node_page_default',
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['node/add'] = array(
+    'title' => 'Create content',
+    'page callback' => 'node_add_page',
+    'access callback' => '_node_add_access',
+    'weight' => 1,
+  );
+  $items['rss.xml'] = array(
+    'title' => 'RSS feed',
+    'page callback' => 'node_feed',
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+  foreach (node_get_types('types', NULL, TRUE) as $type) {
+    $type_url_str = str_replace('_', '-', $type->type);
+    $items['node/add/' . $type_url_str] = array(
+      'title' => $type->name,
+      'title callback' => 'check_plain',
+      'page callback' => 'node_add',
+      'page arguments' => array(2),
+      'access callback' => 'node_access',
+      'access arguments' => array('create', $type->type),
+      'description' => $type->description,
+    );
+    $items['admin/build/node-type/' . $type_url_str] = array(
+      'title' => $type->name,
+      'page callback' => 'drupal_get_form',
+      'page arguments' => array('node_type_form', $type),
+      'access arguments' => array('administer content types'),
+      'type' => MENU_CALLBACK,
+    );
+    $items['admin/build/node-type/' . $type_url_str . '/edit'] = array(
+      'title' => 'Edit',
+      'type' => MENU_DEFAULT_LOCAL_TASK,
+    );
+    $items['admin/build/node-type/' . $type_url_str . '/delete'] = array(
+      'title' => 'Delete',
+      'page arguments' => array('node_type_delete_confirm', $type),
+      'access arguments' => array('administer content types'),
+      'type' => MENU_CALLBACK,
+    );
+  }
+  $items['node/%node'] = array(
+    'title callback' => 'node_page_title',
+    'title arguments' => array(1),
+    'page callback' => 'node_page_view',
+    'page arguments' => array(1),
+    'access callback' => 'node_access',
+    'access arguments' => array('view', 1),
+    'type' => MENU_CALLBACK);
+  $items['node/%node/view'] = array(
+    'title' => 'View',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -10);
+  $items['node/%node/edit'] = array(
+    'title' => 'Edit',
+    'page callback' => 'node_page_edit',
+    'page arguments' => array(1),
+    'access callback' => 'node_access',
+    'access arguments' => array('update', 1),
+    'weight' => 1,
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['node/%node/delete'] = array(
+    'title' => 'Delete',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('node_delete_confirm', 1),
+    'access callback' => 'node_access',
+    'access arguments' => array('delete', 1),
+    'weight' => 1,
+    'type' => MENU_CALLBACK);
+  $items['node/%node/revisions'] = array(
+    'title' => 'Revisions',
+    'page callback' => 'node_revision_overview',
+    'page arguments' => array(1),
+    'access callback' => '_node_revision_access',
+    'access arguments' => array(1),
+    'weight' => 2,
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['node/%node/revisions/%/view'] = array(
+    'title' => 'Revisions',
+    'load arguments' => array(3),
+    'page callback' => 'node_show',
+    'page arguments' => array(1, NULL, TRUE),
+    'access callback' => '_node_revision_access',
+    'access arguments' => array(1),
+    'type' => MENU_CALLBACK,
+  );
+  $items['node/%node/revisions/%/revert'] = array(
+    'title' => 'Revert to earlier revision',
+    'load arguments' => array(3),
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('node_revision_revert_confirm', 1),
+    'access callback' => '_node_revision_access',
+    'access arguments' => array(1, 'update'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['node/%node/revisions/%/delete'] = array(
+    'title' => 'Delete earlier revision',
+    'load arguments' => array(3),
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('node_revision_delete_confirm', 1),
+    'access callback' => '_node_revision_access',
+    'access arguments' => array(1, 'delete'),
+    'type' => MENU_CALLBACK,
+  );
+  return $items;
+}
+
Index: modules/openid/openid.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/openid/openid.info,v
retrieving revision 1.6
diff -u -p -r1.6 openid.info
--- modules/openid/openid.info	11 Oct 2008 02:32:53 -0000	1.6
+++ modules/openid/openid.info	11 Dec 2008 11:32:57 -0000
@@ -7,5 +7,6 @@ core = 7.x
 files[] = openid.module
 files[] = openid.inc
 files[] = openid.pages.inc
+files[] = openid.registry.inc
 files[] = xrds.inc
 files[] = openid.install
Index: modules/openid/openid.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/openid/openid.module,v
retrieving revision 1.33
diff -u -p -r1.33 openid.module
--- modules/openid/openid.module	22 Nov 2008 10:32:42 -0000	1.33
+++ modules/openid/openid.module	11 Dec 2008 11:32:57 -0000
@@ -7,35 +7,6 @@
  */
 
 /**
- * Implementation of hook_menu().
- */
-function openid_menu() {
-  $items['openid/authenticate'] = array(
-    'title' => 'OpenID Login',
-    'page callback' => 'openid_authentication_page',
-    'access callback' => 'user_is_anonymous',
-    'type' => MENU_CALLBACK,
-  );
-  $items['user/%user/openid'] = array(
-    'title' => 'OpenID identities',
-    'page callback' => 'openid_user_identities',
-    'page arguments' => array(1),
-    'access callback' => 'user_edit_access',
-    'access arguments' => array(1),
-    'type' => MENU_LOCAL_TASK,
-  );
-  $items['user/%user/openid/delete'] = array(
-    'title' => 'Delete OpenID',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('openid_user_delete_form', 1),
-    'access callback' => 'user_edit_access',
-    'access arguments' => array(1),
-    'type' => MENU_CALLBACK,
-  );
-  return $items;
-}
-
-/**
  * Implementation of hook_help().
  */
 function openid_help($path, $arg) {
Index: modules/openid/openid.registry.inc
===================================================================
RCS file: modules/openid/openid.registry.inc
diff -N modules/openid/openid.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/openid/openid.registry.inc	11 Dec 2008 11:32:57 -0000
@@ -0,0 +1,36 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the openid module.
+ */
+
+/**
+ * Implementation of hook_menu().
+ */
+function openid_menu() {
+  $items['openid/authenticate'] = array(
+    'title' => 'OpenID Login',
+    'page callback' => 'openid_authentication_page',
+    'access callback' => 'user_is_anonymous',
+    'type' => MENU_CALLBACK,
+  );
+  $items['user/%user/openid'] = array(
+    'title' => 'OpenID identities',
+    'page callback' => 'openid_user_identities',
+    'page arguments' => array(1),
+    'access callback' => 'user_edit_access',
+    'access arguments' => array(1),
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['user/%user/openid/delete'] = array(
+    'title' => 'Delete OpenID',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('openid_user_delete_form', 1),
+    'access callback' => 'user_edit_access',
+    'access arguments' => array(1),
+    'type' => MENU_CALLBACK,
+  );
+  return $items;
+}
Index: modules/path/path.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/path/path.info,v
retrieving revision 1.7
diff -u -p -r1.7 path.info
--- modules/path/path.info	11 Oct 2008 02:32:54 -0000	1.7
+++ modules/path/path.info	11 Dec 2008 11:32:57 -0000
@@ -6,3 +6,4 @@ version = VERSION
 core = 7.x
 files[] = path.module
 files[] = path.admin.inc
+files[] = path.registry.inc
Index: modules/path/path.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/path/path.module,v
retrieving revision 1.152
diff -u -p -r1.152 path.module
--- modules/path/path.module	9 Dec 2008 11:30:24 -0000	1.152
+++ modules/path/path.module	11 Dec 2008 11:32:58 -0000
@@ -30,44 +30,6 @@ function path_help($path, $arg) {
 }
 
 /**
- * Implementation of hook_menu().
- */
-function path_menu() {
-  $items['admin/build/path'] = array(
-    'title' => 'URL aliases',
-    'description' => "Change your site's URL paths by aliasing them.",
-    'page callback' => 'path_admin_overview',
-    'access arguments' => array('administer url aliases'),
-  );
-  $items['admin/build/path/edit'] = array(
-    'title' => 'Edit alias',
-    'page callback' => 'path_admin_edit',
-    'access arguments' => array('administer url aliases'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/build/path/delete'] = array(
-    'title' => 'Delete alias',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('path_admin_delete_confirm'),
-    'access arguments' => array('administer url aliases'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/build/path/list'] = array(
-    'title' => 'List',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-    'weight' => -10,
-  );
-  $items['admin/build/path/add'] = array(
-    'title' => 'Add alias',
-    'page callback' => 'path_admin_edit',
-    'access arguments' => array('administer url aliases'),
-    'type' => MENU_LOCAL_TASK,
-  );
-
-  return $items;
-}
-
-/**
  * Post-confirmation; delete an URL alias.
  */
 function path_admin_delete($pid = 0) {
Index: modules/path/path.registry.inc
===================================================================
RCS file: modules/path/path.registry.inc
diff -N modules/path/path.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/path/path.registry.inc	11 Dec 2008 11:32:58 -0000
@@ -0,0 +1,45 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the path module.
+ */
+
+/**
+ * Implementation of hook_menu().
+ */
+function path_menu() {
+  $items['admin/build/path'] = array(
+    'title' => 'URL aliases',
+    'description' => "Change your site's URL paths by aliasing them.",
+    'page callback' => 'path_admin_overview',
+    'access arguments' => array('administer url aliases'),
+  );
+  $items['admin/build/path/edit'] = array(
+    'title' => 'Edit alias',
+    'page callback' => 'path_admin_edit',
+    'access arguments' => array('administer url aliases'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/build/path/delete'] = array(
+    'title' => 'Delete alias',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('path_admin_delete_confirm'),
+    'access arguments' => array('administer url aliases'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/build/path/list'] = array(
+    'title' => 'List',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -10,
+  );
+  $items['admin/build/path/add'] = array(
+    'title' => 'Add alias',
+    'page callback' => 'path_admin_edit',
+    'access arguments' => array('administer url aliases'),
+    'type' => MENU_LOCAL_TASK,
+  );
+
+  return $items;
+}
Index: modules/poll/poll.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/poll/poll.info,v
retrieving revision 1.8
diff -u -p -r1.8 poll.info
--- modules/poll/poll.info	11 Oct 2008 02:32:57 -0000	1.8
+++ modules/poll/poll.info	11 Dec 2008 11:32:58 -0000
@@ -6,4 +6,5 @@ version = VERSION
 core = 7.x
 files[] = poll.module
 files[] = poll.pages.inc
+files[] = poll.registry.inc
 files[] = poll.install
Index: modules/poll/poll.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/poll/poll.module,v
retrieving revision 1.280
diff -u -p -r1.280 poll.module
--- modules/poll/poll.module	9 Dec 2008 11:30:24 -0000	1.280
+++ modules/poll/poll.module	11 Dec 2008 11:32:58 -0000
@@ -28,29 +28,6 @@ function poll_init() {
 }
 
 /**
- * Implementation of hook_theme().
- */
-function poll_theme() {
-  return array(
-    'poll_vote' => array(
-      'template' => 'poll-vote',
-      'arguments' => array('form' => NULL),
-    ),
-    'poll_choices' => array(
-      'arguments' => array('form' => NULL),
-    ),
-    'poll_results' => array(
-      'template' => 'poll-results',
-      'arguments' => array('raw_title' => NULL, 'results' => NULL, 'votes' => NULL, 'raw_links' => NULL, 'block' => NULL, 'nid' => NULL, 'vote' => NULL),
-    ),
-    'poll_bar' => array(
-      'template' => 'poll-bar',
-      'arguments' => array('title' => NULL, 'votes' => NULL, 'total_votes' => NULL, 'vote' => NULL, 'block' => NULL),
-    ),
-  );
-}
-
-/**
  * Implementation of hook_perm().
  */
 function poll_perm() {
@@ -88,47 +65,6 @@ function poll_access($op, $node, $accoun
 }
 
 /**
- * Implementation of hook_menu().
- */
-function poll_menu() {
-  $items['poll'] = array(
-    'title' => 'Polls',
-    'page callback' => 'poll_page',
-    'access arguments' => array('access content'),
-    'type' => MENU_SUGGESTED_ITEM,
-  );
-
-  $items['node/%node/votes'] = array(
-    'title' => 'Votes',
-    'page callback' => 'poll_votes',
-    'page arguments' => array(1),
-    'access callback' => '_poll_menu_access',
-    'access arguments' => array(1, 'inspect all votes', FALSE),
-    'weight' => 3,
-    'type' => MENU_LOCAL_TASK,
-  );
-
-  $items['node/%node/results'] = array(
-    'title' => 'Results',
-    'page callback' => 'poll_results',
-    'page arguments' => array(1),
-    'access callback' => '_poll_menu_access',
-    'access arguments' => array(1, 'access content', TRUE),
-    'weight' => 3,
-    'type' => MENU_LOCAL_TASK,
-  );
-
-  $items['poll/js'] = array(
-    'title' => 'Javascript Choice Form',
-    'page callback' => 'poll_choice_js',
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-
-  return $items;
-}
-
-/**
  * Callback function to see if a node is acceptable for poll menu items.
  */
 function _poll_menu_access($node, $perm, $inspect_allowvotes) {
Index: modules/poll/poll.registry.inc
===================================================================
RCS file: modules/poll/poll.registry.inc
diff -N modules/poll/poll.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/poll/poll.registry.inc	11 Dec 2008 11:32:58 -0000
@@ -0,0 +1,71 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the poll module.
+ */
+
+/**
+ * Implementation of hook_theme().
+ */
+function poll_theme() {
+  return array(
+    'poll_vote' => array(
+      'template' => 'poll-vote',
+      'arguments' => array('form' => NULL),
+    ),
+    'poll_choices' => array(
+      'arguments' => array('form' => NULL),
+    ),
+    'poll_results' => array(
+      'template' => 'poll-results',
+      'arguments' => array('raw_title' => NULL, 'results' => NULL, 'votes' => NULL, 'raw_links' => NULL, 'block' => NULL, 'nid' => NULL, 'vote' => NULL),
+    ),
+    'poll_bar' => array(
+      'template' => 'poll-bar',
+      'arguments' => array('title' => NULL, 'votes' => NULL, 'total_votes' => NULL, 'vote' => NULL, 'block' => NULL),
+    ),
+  );
+}
+
+/**
+ * Implementation of hook_menu().
+ */
+function poll_menu() {
+  $items['poll'] = array(
+    'title' => 'Polls',
+    'page callback' => 'poll_page',
+    'access arguments' => array('access content'),
+    'type' => MENU_SUGGESTED_ITEM,
+  );
+
+  $items['node/%node/votes'] = array(
+    'title' => 'Votes',
+    'page callback' => 'poll_votes',
+    'page arguments' => array(1),
+    'access callback' => '_poll_menu_access',
+    'access arguments' => array(1, 'inspect all votes', FALSE),
+    'weight' => 3,
+    'type' => MENU_LOCAL_TASK,
+  );
+
+  $items['node/%node/results'] = array(
+    'title' => 'Results',
+    'page callback' => 'poll_results',
+    'page arguments' => array(1),
+    'access callback' => '_poll_menu_access',
+    'access arguments' => array(1, 'access content', TRUE),
+    'weight' => 3,
+    'type' => MENU_LOCAL_TASK,
+  );
+
+  $items['poll/js'] = array(
+    'title' => 'Javascript Choice Form',
+    'page callback' => 'poll_choice_js',
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+
+  return $items;
+}
Index: modules/profile/profile.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/profile/profile.info,v
retrieving revision 1.8
diff -u -p -r1.8 profile.info
--- modules/profile/profile.info	11 Oct 2008 02:32:59 -0000	1.8
+++ modules/profile/profile.info	11 Dec 2008 11:32:58 -0000
@@ -7,4 +7,5 @@ core = 7.x
 files[] = profile.module
 files[] = profile.admin.inc
 files[] = profile.pages.inc
+files[] = profile.registry.inc
 files[] = profile.install
Index: modules/profile/profile.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/profile/profile.module,v
retrieving revision 1.247
diff -u -p -r1.247 profile.module
--- modules/profile/profile.module	5 Dec 2008 12:50:28 -0000	1.247
+++ modules/profile/profile.module	11 Dec 2008 11:32:58 -0000
@@ -49,83 +49,6 @@ function profile_help($path, $arg) {
 }
 
 /**
- * Implementation of hook_theme().
- */
-function profile_theme() {
-  return array(
-    'profile_block' => array(
-      'arguments' => array('account' => NULL, 'fields' => array()),
-      'template' => 'profile-block',
-    ),
-    'profile_listing' => array(
-      'arguments' => array('account' => NULL, 'fields' => array()),
-      'template' => 'profile-listing',
-    ),
-    'profile_wrapper' => array(
-      'arguments' => array('content' => NULL),
-      'template' => 'profile-wrapper',
-    ),
-    'profile_admin_overview' => array(
-      'arguments' => array('form' => NULL),
-      'file' => 'profile.admin.inc',
-    )
-  );
-}
-
-/**
- * Implementation of hook_menu().
- */
-function profile_menu() {
-  $items['profile'] = array(
-    'title' => 'User list',
-    'page callback' => 'profile_browse',
-    'access arguments' => array('access user profiles'),
-    'type' => MENU_SUGGESTED_ITEM,
-  );
-  $items['admin/user/profile'] = array(
-    'title' => 'Profiles',
-    'description' => 'Create customizable fields for your users.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('profile_admin_overview'),
-    'access arguments' => array('administer users'),
-  );
-  $items['admin/user/profile/add'] = array(
-    'title' => 'Add field',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('profile_field_form'),
-    'access arguments' => array('administer users'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/user/profile/autocomplete'] = array(
-    'title' => 'Profile category autocomplete',
-    'page callback' => 'profile_admin_settings_autocomplete',
-    'access arguments' => array('administer users'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/user/profile/edit'] = array(
-    'title' => 'Edit field',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('profile_field_form'),
-    'access arguments' => array('administer users'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/user/profile/delete'] = array(
-    'title' => 'Delete field',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('profile_field_delete'),
-    'access arguments' => array('administer users'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['profile/autocomplete'] = array(
-    'title' => 'Profile autocomplete',
-    'page callback' => 'profile_autocomplete',
-    'access arguments' => array('access user profiles'),
-    'type' => MENU_CALLBACK,
-  );
-  return $items;
-}
-
-/**
  * Implementation of hook_block().
  */
 function profile_block($op = 'list', $delta = '', $edit = array()) {
Index: modules/profile/profile.registry.inc
===================================================================
RCS file: modules/profile/profile.registry.inc
diff -N modules/profile/profile.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/profile/profile.registry.inc	11 Dec 2008 11:32:58 -0000
@@ -0,0 +1,84 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the profile module.
+ */
+
+/**
+ * Implementation of hook_theme().
+ */
+function profile_theme() {
+  return array(
+    'profile_block' => array(
+      'arguments' => array('account' => NULL, 'fields' => array()),
+      'template' => 'profile-block',
+    ),
+    'profile_listing' => array(
+      'arguments' => array('account' => NULL, 'fields' => array()),
+      'template' => 'profile-listing',
+    ),
+    'profile_wrapper' => array(
+      'arguments' => array('content' => NULL),
+      'template' => 'profile-wrapper',
+    ),
+    'profile_admin_overview' => array(
+      'arguments' => array('form' => NULL),
+      'file' => 'profile.admin.inc',
+    )
+  );
+}
+
+/**
+ * Implementation of hook_menu().
+ */
+function profile_menu() {
+  $items['profile'] = array(
+    'title' => 'User list',
+    'page callback' => 'profile_browse',
+    'access arguments' => array('access user profiles'),
+    'type' => MENU_SUGGESTED_ITEM,
+  );
+  $items['admin/user/profile'] = array(
+    'title' => 'Profiles',
+    'description' => 'Create customizable fields for your users.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('profile_admin_overview'),
+    'access arguments' => array('administer users'),
+  );
+  $items['admin/user/profile/add'] = array(
+    'title' => 'Add field',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('profile_field_form'),
+    'access arguments' => array('administer users'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/user/profile/autocomplete'] = array(
+    'title' => 'Profile category autocomplete',
+    'page callback' => 'profile_admin_settings_autocomplete',
+    'access arguments' => array('administer users'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/user/profile/edit'] = array(
+    'title' => 'Edit field',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('profile_field_form'),
+    'access arguments' => array('administer users'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/user/profile/delete'] = array(
+    'title' => 'Delete field',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('profile_field_delete'),
+    'access arguments' => array('administer users'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['profile/autocomplete'] = array(
+    'title' => 'Profile autocomplete',
+    'page callback' => 'profile_autocomplete',
+    'access arguments' => array('access user profiles'),
+    'type' => MENU_CALLBACK,
+  );
+  return $items;
+}
Index: modules/search/search.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/search/search.info,v
retrieving revision 1.8
diff -u -p -r1.8 search.info
--- modules/search/search.info	11 Oct 2008 02:33:00 -0000	1.8
+++ modules/search/search.info	11 Dec 2008 11:32:58 -0000
@@ -7,4 +7,5 @@ core = 7.x
 files[] = search.module
 files[] = search.admin.inc
 files[] = search.pages.inc
+files[] = search.registry.inc
 files[] = search.install
Index: modules/search/search.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/search/search.module,v
retrieving revision 1.278
diff -u -p -r1.278 search.module
--- modules/search/search.module	9 Dec 2008 11:30:24 -0000	1.278
+++ modules/search/search.module	11 Dec 2008 11:32:59 -0000
@@ -112,32 +112,6 @@ function search_help($path, $arg) {
 }
 
 /**
- * Implementation of hook_theme().
- */
-function search_theme() {
-  return array(
-    'search_theme_form' => array(
-      'arguments' => array('form' => NULL),
-      'template' => 'search-theme-form',
-    ),
-    'search_block_form' => array(
-      'arguments' => array('form' => NULL),
-      'template' => 'search-block-form',
-    ),
-    'search_result' => array(
-      'arguments' => array('result' => NULL, 'type' => NULL),
-      'file' => 'search.pages.inc',
-      'template' => 'search-result',
-    ),
-    'search_results' => array(
-      'arguments' => array('results' => NULL, 'type' => NULL),
-      'file' => 'search.pages.inc',
-      'template' => 'search-results',
-    ),
-  );
-}
-
-/**
  * Implementation of hook_perm().
  */
 function search_perm() {
@@ -174,55 +148,6 @@ function search_block($op = 'list', $del
   }
 }
 
-/**
- * Implementation of hook_menu().
- */
-function search_menu() {
-  $items['search'] = array(
-    'title' => 'Search',
-    'page callback' => 'search_view',
-    'access arguments' => array('search content'),
-    'type' => MENU_SUGGESTED_ITEM,
-  );
-  $items['admin/settings/search'] = array(
-    'title' => 'Search settings',
-    'description' => 'Configure relevance settings for search and other indexing options',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('search_admin_settings'),
-    'access arguments' => array('administer search'),
-    'type' => MENU_NORMAL_ITEM,
-  );
-  $items['admin/settings/search/wipe'] = array(
-    'title' => 'Clear index',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('search_wipe_confirm'),
-    'access arguments' => array('administer search'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/reports/search'] = array(
-    'title' => 'Top search phrases',
-    'description' => 'View most popular search phrases.',
-    'page callback' => 'dblog_top',
-    'page arguments' => array('search'),
-    'access arguments' => array('access site reports'),
-    'file path' => drupal_get_path('module', 'dblog'),
-  );
-
-  foreach (module_implements('search') as $module) {
-    $items['search/' . $module . '/%menu_tail'] = array(
-      'title callback' => 'module_invoke',
-      'title arguments' => array($module, 'search', 'name', TRUE),
-      'page callback' => 'search_view',
-      'page arguments' => array($module),
-      'access callback' => '_search_menu',
-      'access arguments' => array($module),
-      'type' => MENU_LOCAL_TASK,
-      'parent' => 'search',
-    );
-  }
-  return $items;
-}
-
 function _search_menu($name) {
   return user_access('search content') && module_invoke($name, 'search', 'name');
 }
Index: modules/search/search.registry.inc
===================================================================
RCS file: modules/search/search.registry.inc
diff -N modules/search/search.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/search/search.registry.inc	11 Dec 2008 11:32:59 -0000
@@ -0,0 +1,83 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the search module.
+ */
+
+
+/**
+ * Implementation of hook_theme().
+ */
+function search_theme() {
+  return array(
+    'search_theme_form' => array(
+      'arguments' => array('form' => NULL),
+      'template' => 'search-theme-form',
+    ),
+    'search_block_form' => array(
+      'arguments' => array('form' => NULL),
+      'template' => 'search-block-form',
+    ),
+    'search_result' => array(
+      'arguments' => array('result' => NULL, 'type' => NULL),
+      'file' => 'search.pages.inc',
+      'template' => 'search-result',
+    ),
+    'search_results' => array(
+      'arguments' => array('results' => NULL, 'type' => NULL),
+      'file' => 'search.pages.inc',
+      'template' => 'search-results',
+    ),
+  );
+}
+
+/**
+ * Implementation of hook_menu().
+ */
+function search_menu() {
+  $items['search'] = array(
+    'title' => 'Search',
+    'page callback' => 'search_view',
+    'access arguments' => array('search content'),
+    'type' => MENU_SUGGESTED_ITEM,
+  );
+  $items['admin/settings/search'] = array(
+    'title' => 'Search settings',
+    'description' => 'Configure relevance settings for search and other indexing options',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('search_admin_settings'),
+    'access arguments' => array('administer search'),
+    'type' => MENU_NORMAL_ITEM,
+  );
+  $items['admin/settings/search/wipe'] = array(
+    'title' => 'Clear index',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('search_wipe_confirm'),
+    'access arguments' => array('administer search'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/reports/search'] = array(
+    'title' => 'Top search phrases',
+    'description' => 'View most popular search phrases.',
+    'page callback' => 'dblog_top',
+    'page arguments' => array('search'),
+    'access arguments' => array('access site reports'),
+    'file path' => drupal_get_path('module', 'dblog'),
+  );
+
+  foreach (module_implements('search') as $module) {
+    $items['search/' . $module . '/%menu_tail'] = array(
+      'title callback' => 'module_invoke',
+      'title arguments' => array($module, 'search', 'name', TRUE),
+      'page callback' => 'search_view',
+      'page arguments' => array($module),
+      'access callback' => '_search_menu',
+      'access arguments' => array($module),
+      'type' => MENU_LOCAL_TASK,
+      'parent' => 'search',
+    );
+  }
+  return $items;
+}
Index: modules/simpletest/simpletest.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/simpletest.info,v
retrieving revision 1.4
diff -u -p -r1.4 simpletest.info
--- modules/simpletest/simpletest.info	11 Oct 2008 02:33:01 -0000	1.4
+++ modules/simpletest/simpletest.info	11 Dec 2008 11:32:59 -0000
@@ -5,4 +5,5 @@ package = Core
 version = VERSION
 core = 7.x
 files[] = simpletest.module
+files[] = simpletest.registry.inc
 files[] = simpletest.install
Index: modules/simpletest/simpletest.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/simpletest.module,v
retrieving revision 1.29
diff -u -p -r1.29 simpletest.module
--- modules/simpletest/simpletest.module	26 Nov 2008 13:48:49 -0000	1.29
+++ modules/simpletest/simpletest.module	11 Dec 2008 11:32:59 -0000
@@ -17,20 +17,6 @@ function simpletest_help($path, $arg) {
 }
 
 /**
- * Implementation of hook_menu().
- */
-function simpletest_menu() {
-  $items['admin/build/testing'] = array(
-    'title' => 'Testing',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('simpletest_test_form'),
-    'description' => 'Run tests against Drupal core and your active modules. These tests help assure that your site code is working as designed.',
-    'access arguments' => array('administer unit tests'),
-  );
-  return $items;
-}
-
-/**
  * Implementation of hook_perm().
  */
 function simpletest_perm() {
@@ -43,20 +29,6 @@ function simpletest_perm() {
 }
 
 /**
- * Implemenation of hook_theme().
- */
-function simpletest_theme() {
-  return array(
-    'simpletest_test_table' => array(
-      'arguments' => array('table' => NULL)
-    ),
-    'simpletest_result_summary' => array(
-      'arguments' => array('form' => NULL)
-    ),
-  );
-}
-
-/**
  * Menu callback for both running tests and listing possible tests
  */
 function simpletest_test_form() {
Index: modules/simpletest/simpletest.registry.inc
===================================================================
RCS file: modules/simpletest/simpletest.registry.inc
diff -N modules/simpletest/simpletest.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/simpletest/simpletest.registry.inc	11 Dec 2008 11:32:59 -0000
@@ -0,0 +1,36 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the simpletest module.
+ */
+
+
+/**
+ * Implemenation of hook_theme().
+ */
+function simpletest_theme() {
+  return array(
+    'simpletest_test_table' => array(
+      'arguments' => array('table' => NULL)
+    ),
+    'simpletest_result_summary' => array(
+      'arguments' => array('form' => NULL)
+    ),
+  );
+}
+
+/**
+ * Implementation of hook_menu().
+ */
+function simpletest_menu() {
+  $items['admin/build/testing'] = array(
+    'title' => 'Testing',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('simpletest_test_form'),
+    'description' => 'Run tests against Drupal core and your active modules. These tests help assure that your site code is working as designed.',
+    'access arguments' => array('administer unit tests'),
+  );
+  return $items;
+}
Index: modules/statistics/statistics.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/statistics/statistics.info,v
retrieving revision 1.8
diff -u -p -r1.8 statistics.info
--- modules/statistics/statistics.info	11 Oct 2008 02:33:02 -0000	1.8
+++ modules/statistics/statistics.info	11 Dec 2008 11:32:59 -0000
@@ -7,4 +7,5 @@ core = 7.x
 files[] = statistics.module
 files[] = statistics.admin.inc
 files[] = statistics.pages.inc
+files[] = statistics.registry.inc
 files[] = statistics.install
Index: modules/statistics/statistics.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/statistics/statistics.module,v
retrieving revision 1.288
diff -u -p -r1.288 statistics.module
--- modules/statistics/statistics.module	9 Dec 2008 11:30:25 -0000	1.288
+++ modules/statistics/statistics.module	11 Dec 2008 11:32:59 -0000
@@ -113,73 +113,6 @@ function statistics_link($type, $node = 
 }
 
 /**
- * Implementation of hook_menu().
- */
-function statistics_menu() {
-  $items['admin/reports/hits'] = array(
-    'title' => 'Recent hits',
-    'description' => 'View pages that have recently been visited.',
-    'page callback' => 'statistics_recent_hits',
-    'access arguments' => array('access statistics'),
-  );
-  $items['admin/reports/pages'] = array(
-    'title' => 'Top pages',
-    'description' => 'View pages that have been hit frequently.',
-    'page callback' => 'statistics_top_pages',
-    'access arguments' => array('access statistics'),
-    'weight' => 1,
-  );
-  $items['admin/reports/visitors'] = array(
-    'title' => 'Top visitors',
-    'description' => 'View visitors that hit many pages.',
-    'page callback' => 'statistics_top_visitors',
-    'access arguments' => array('access statistics'),
-    'weight' => 2,
-  );
-  $items['admin/reports/referrers'] = array(
-    'title' => 'Top referrers',
-    'description' => 'View top referrers.',
-    'page callback' => 'statistics_top_referrers',
-    'access arguments' => array('access statistics'),
-  );
-  $items['admin/reports/access/%'] = array(
-    'title' => 'Details',
-    'description' => 'View access log.',
-    'page callback' => 'statistics_access_log',
-    'page arguments' => array(3),
-    'access arguments' => array('access statistics'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/reports/settings'] = array(
-    'title' => 'Access log settings',
-    'description' => 'Control details about what and how your site logs.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('statistics_access_logging_settings'),
-    'access arguments' => array('administer site configuration'),
-    'type' => MENU_NORMAL_ITEM,
-    'weight' => 3,
-  );
-  $items['user/%user/track/navigation'] = array(
-    'title' => 'Track page visits',
-    'page callback' => 'statistics_user_tracker',
-    'access callback' => 'user_access',
-    'access arguments' => array('access statistics'),
-    'type' => MENU_LOCAL_TASK,
-    'weight' => 2,
-  );
-  $items['node/%node/track'] = array(
-    'title' => 'Track',
-    'page callback' => 'statistics_node_tracker',
-    'access callback' => 'user_access',
-    'access arguments' => array('access statistics'),
-    'type' => MENU_LOCAL_TASK,
-    'weight' => 2,
-  );
-
-  return $items;
-}
-
-/**
  * Implementation of hook_user_delete().
  */
 function statistics_user_delete(&$edit, &$user, $category) {
Index: modules/statistics/statistics.registry.inc
===================================================================
RCS file: modules/statistics/statistics.registry.inc
diff -N modules/statistics/statistics.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/statistics/statistics.registry.inc	11 Dec 2008 11:32:59 -0000
@@ -0,0 +1,74 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the statistics module.
+ */
+
+/**
+ * Implementation of hook_menu().
+ */
+function statistics_menu() {
+  $items['admin/reports/hits'] = array(
+    'title' => 'Recent hits',
+    'description' => 'View pages that have recently been visited.',
+    'page callback' => 'statistics_recent_hits',
+    'access arguments' => array('access statistics'),
+  );
+  $items['admin/reports/pages'] = array(
+    'title' => 'Top pages',
+    'description' => 'View pages that have been hit frequently.',
+    'page callback' => 'statistics_top_pages',
+    'access arguments' => array('access statistics'),
+    'weight' => 1,
+  );
+  $items['admin/reports/visitors'] = array(
+    'title' => 'Top visitors',
+    'description' => 'View visitors that hit many pages.',
+    'page callback' => 'statistics_top_visitors',
+    'access arguments' => array('access statistics'),
+    'weight' => 2,
+  );
+  $items['admin/reports/referrers'] = array(
+    'title' => 'Top referrers',
+    'description' => 'View top referrers.',
+    'page callback' => 'statistics_top_referrers',
+    'access arguments' => array('access statistics'),
+  );
+  $items['admin/reports/access/%'] = array(
+    'title' => 'Details',
+    'description' => 'View access log.',
+    'page callback' => 'statistics_access_log',
+    'page arguments' => array(3),
+    'access arguments' => array('access statistics'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/reports/settings'] = array(
+    'title' => 'Access log settings',
+    'description' => 'Control details about what and how your site logs.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('statistics_access_logging_settings'),
+    'access arguments' => array('administer site configuration'),
+    'type' => MENU_NORMAL_ITEM,
+    'weight' => 3,
+  );
+  $items['user/%user/track/navigation'] = array(
+    'title' => 'Track page visits',
+    'page callback' => 'statistics_user_tracker',
+    'access callback' => 'user_access',
+    'access arguments' => array('access statistics'),
+    'type' => MENU_LOCAL_TASK,
+    'weight' => 2,
+  );
+  $items['node/%node/track'] = array(
+    'title' => 'Track',
+    'page callback' => 'statistics_node_tracker',
+    'access callback' => 'user_access',
+    'access arguments' => array('access statistics'),
+    'type' => MENU_LOCAL_TASK,
+    'weight' => 2,
+  );
+
+  return $items;
+}
Index: modules/syslog/syslog.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/syslog/syslog.info,v
retrieving revision 1.5
diff -u -p -r1.5 syslog.info
--- modules/syslog/syslog.info	11 Oct 2008 02:33:03 -0000	1.5
+++ modules/syslog/syslog.info	11 Dec 2008 11:32:59 -0000
@@ -5,3 +5,4 @@ package = Core
 version = VERSION
 core = 7.x
 files[] = syslog.module
+files[] = syslog.registry.inc
Index: modules/syslog/syslog.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/syslog/syslog.module,v
retrieving revision 1.18
diff -u -p -r1.18 syslog.module
--- modules/syslog/syslog.module	31 Aug 2008 09:15:13 -0000	1.18
+++ modules/syslog/syslog.module	11 Dec 2008 11:32:59 -0000
@@ -26,17 +26,6 @@ function syslog_help($path, $arg) {
   }
 }
 
-function syslog_menu() {
-  $items['admin/settings/logging/syslog'] = array(
-    'title'          => 'Syslog',
-    'description'    => 'Settings for syslog logging. Syslog is an operating system administrative logging tool used in systems management and security auditing. Most suited to medium and large sites, syslog provides filtering tools that allow messages to be routed by type and severity.',
-    'page callback'  => 'drupal_get_form',
-    'page arguments' => array('syslog_admin_settings'),
-    'access arguments' => array('administer site configuration'),
-  );
-  return $items;
-}
-
 function syslog_admin_settings() {
   $form['syslog_facility'] = array(
     '#type'          => 'select',
@@ -79,14 +68,6 @@ function syslog_watchdog($entry) {
   syslog($entry['severity'], theme('syslog_format', $entry));
 }
 
-function syslog_theme() {
-  return array(
-    'syslog_format' => array(
-      'arguments' => array('entry' => NULL),
-    ),
-  );
-}
-
 /**
  * Format a system log entry.
  *
Index: modules/syslog/syslog.registry.inc
===================================================================
RCS file: modules/syslog/syslog.registry.inc
diff -N modules/syslog/syslog.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/syslog/syslog.registry.inc	11 Dec 2008 11:32:59 -0000
@@ -0,0 +1,32 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the syslog module.
+ */
+
+/**
+ * Implementation of hook_theme().
+ */
+function syslog_theme() {
+  return array(
+    'syslog_format' => array(
+      'arguments' => array('entry' => NULL),
+    ),
+  );
+}
+
+/**
+ * Implementation of hook_menu().
+ */
+function syslog_menu() {
+  $items['admin/settings/logging/syslog'] = array(
+    'title'          => 'Syslog',
+    'description'    => 'Settings for syslog logging. Syslog is an operating system administrative logging tool used in systems management and security auditing. Most suited to medium and large sites, syslog provides filtering tools that allow messages to be routed by type and severity.',
+    'page callback'  => 'drupal_get_form',
+    'page arguments' => array('syslog_admin_settings'),
+    'access arguments' => array('administer site configuration'),
+  );
+  return $items;
+}
Index: modules/system/system.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.info,v
retrieving revision 1.11
diff -u -p -r1.11 system.info
--- modules/system/system.info	12 Oct 2008 01:23:06 -0000	1.11
+++ modules/system/system.info	11 Dec 2008 11:32:59 -0000
@@ -6,6 +6,7 @@ version = VERSION
 core = 7.x
 files[] = system.module
 files[] = system.admin.inc
+files[] = system.registry.inc
 files[] = image.gd.inc
 files[] = system.install
 required = TRUE
Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.650
diff -u -p -r1.650 system.module
--- modules/system/system.module	28 Nov 2008 09:25:59 -0000	1.650
+++ modules/system/system.module	11 Dec 2008 11:33:00 -0000
@@ -115,64 +115,6 @@ function system_help($path, $arg) {
 }
 
 /**
- * Implementation of hook_theme().
- */
-function system_theme() {
-  return array_merge(drupal_common_theme(), array(
-    'system_theme_select_form' => array(
-      'arguments' => array('form' => NULL),
-      'file' => 'system.admin.inc',
-    ),
-    'system_themes_form' => array(
-      'arguments' => array('form' => NULL),
-      'file' => 'system.admin.inc',
-    ),
-    'system_modules_fieldset' => array(
-      'arguments' => array('form' => NULL),
-      'file' => 'system.admin.inc',
-    ),
-    'system_modules_incompatible' => array(
-      'arguments' => array('message' => NULL),
-      'file' => 'system.admin.inc',
-    ),
-    'system_modules_uninstall' => array(
-      'arguments' => array('form' => NULL),
-      'file' => 'system.admin.inc',
-    ),
-    'status_report' => array(
-      'arguments' => array('requirements' => NULL),
-      'file' => 'system.admin.inc',
-    ),
-    'admin_page' => array(
-      'arguments' => array('blocks' => NULL),
-      'file' => 'system.admin.inc',
-    ),
-    'admin_block' => array(
-      'arguments' => array('block' => NULL),
-      'file' => 'system.admin.inc',
-    ),
-    'admin_block_content' => array(
-      'arguments' => array('content' => NULL),
-      'file' => 'system.admin.inc',
-    ),
-    'system_admin_by_module' => array(
-      'arguments' => array('menu_items' => NULL),
-      'file' => 'system.admin.inc',
-    ),
-    'system_powered_by' => array(
-      'arguments' => array('image_path' => NULL),
-    ),
-    'meta_generator_html' => array(
-      'arguments' => array('version' => NULL),
-    ),
-    'meta_generator_header' => array(
-      'arguments' => array('version' => NULL),
-    ),
-    'system_compact_link' => array(),
-  ));
-}
-
-/**
  * Implementation of hook_perm().
  */
 function system_perm() {
@@ -379,342 +321,6 @@ function system_elements() {
 }
 
 /**
- * Implementation of hook_menu().
- */
-function system_menu() {
-  $items['system/files'] = array(
-    'title' => 'File download',
-    'page callback' => 'file_download',
-    'access callback' => TRUE,
-    'type' => MENU_CALLBACK,
-  );
-  $items['system/timezone'] = array(
-    'title' => 'Time zone',
-    'page callback' => 'system_timezone',
-    'access callback' => TRUE,
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin'] = array(
-    'title' => 'Administer',
-    'access arguments' => array('access administration pages'),
-    'page callback' => 'system_main_admin_page',
-    'weight' => 9,
-  );
-  $items['admin/compact'] = array(
-    'title' => 'Compact mode',
-    'page callback' => 'system_admin_compact_page',
-    'access arguments' => array('access administration pages'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/by-task'] = array(
-    'title' => 'By task',
-    'page callback' => 'system_main_admin_page',
-    'access arguments' => array('access administration pages'),
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-  );
-  $items['admin/by-module'] = array(
-    'title' => 'By module',
-    'page callback' => 'system_admin_by_module',
-    'access arguments' => array('access administration pages'),
-    'type' => MENU_LOCAL_TASK,
-    'weight' => 2,
-  );
-  $items['admin/content'] = array(
-    'title' => 'Content management',
-    'description' => "Manage your site's content.",
-    'position' => 'left',
-    'weight' => -10,
-    'page callback' => 'system_admin_menu_block_page',
-    'access arguments' => array('access administration pages'),
-  );
-
-  // menu items that are basically just menu blocks
-  $items['admin/settings'] = array(
-    'title' => 'Site configuration',
-    'description' => 'Configure site settings.',
-    'position' => 'right',
-    'weight' => -5,
-    'page callback' => 'system_settings_overview',
-    'access arguments' => array('access administration pages'),
-  );
-  $items['admin/build'] = array(
-    'title' => 'Site building',
-    'description' => 'Control how your site looks and feels.',
-    'position' => 'right',
-    'weight' => -10,
-    'page callback' => 'system_admin_menu_block_page',
-    'access arguments' => array('access administration pages'),
-  );
-  $items['admin/settings/admin'] = array(
-    'title' => 'Administration theme',
-    'description' => 'Settings for how your administrative pages should look.',
-    'position' => 'left',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('system_admin_theme_settings'),
-    'access arguments' => array('administer site configuration'),
-    'block callback' => 'system_admin_theme_settings',
-  );
-  // Themes:
-  $items['admin/build/themes'] = array(
-    'title' => 'Themes',
-    'description' => 'Change which theme your site uses or allows users to set.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('system_themes_form', NULL),
-    'access arguments' => array('administer site configuration'),
-  );
-  $items['admin/build/themes/select'] = array(
-    'title' => 'List',
-    'description' => 'Select the default theme.',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-    'weight' => -1,
-  );
-  $items['admin/build/themes/settings'] = array(
-    'title' => 'Configure',
-    'page arguments' => array('system_theme_settings'),
-    'access arguments' => array('administer site configuration'),
-    'type' => MENU_LOCAL_TASK,
-  );
-  // Theme configuration subtabs
-  $items['admin/build/themes/settings/global'] = array(
-    'title' => 'Global settings',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-    'weight' => -1,
-  );
-
-  foreach (list_themes() as $theme) {
-    $items['admin/build/themes/settings/' . $theme->name] = array(
-      'title' => $theme->info['name'],
-      'page arguments' => array('system_theme_settings', $theme->name),
-      'type' => MENU_LOCAL_TASK,
-      'access callback' => '_system_themes_access',
-      'access arguments' => array($theme),
-    );
-  }
-
-  // Modules:
-  $items['admin/build/modules'] = array(
-    'title' => 'Modules',
-    'description' => 'Enable or disable add-on modules for your site.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('system_modules'),
-    'access arguments' => array('administer site configuration'),
-  );
-  $items['admin/build/modules/list'] = array(
-    'title' => 'List',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-  );
-  $items['admin/build/modules/list/confirm'] = array(
-    'title' => 'List',
-    'access arguments' => array('administer site configuration'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/build/modules/uninstall'] = array(
-    'title' => 'Uninstall',
-    'page arguments' => array('system_modules_uninstall'),
-    'access arguments' => array('administer site configuration'),
-    'type' => MENU_LOCAL_TASK,
-  );
-  $items['admin/build/modules/uninstall/confirm'] = array(
-    'title' => 'Uninstall',
-    'access arguments' => array('administer site configuration'),
-    'type' => MENU_CALLBACK,
-  );
-
-  // Actions:
-  $items['admin/settings/actions'] = array(
-    'title' => 'Actions',
-    'description' => 'Manage the actions defined for your site.',
-    'access arguments' => array('administer actions'),
-    'page callback' => 'system_actions_manage'
-  );
-  $items['admin/settings/actions/manage'] = array(
-    'title' => 'Manage actions',
-    'description' => 'Manage the actions defined for your site.',
-    'page callback' => 'system_actions_manage',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-    'weight' => -2,
-  );
-  $items['admin/settings/actions/configure'] = array(
-    'title' => 'Configure an advanced action',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('system_actions_configure'),
-    'access arguments' => array('administer actions'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/settings/actions/delete/%actions'] = array(
-    'title' => 'Delete action',
-    'description' => 'Delete an action.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('system_actions_delete_form', 4),
-    'access arguments' => array('administer actions'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/settings/actions/orphan'] = array(
-    'title' => 'Remove orphans',
-    'page callback' => 'system_actions_remove_orphans',
-    'access arguments' => array('administer actions'),
-    'type' => MENU_CALLBACK,
-  );
-
-  // IP address blocking.
-  $items['admin/settings/ip-blocking'] = array(
-    'title' => 'IP address blocking',
-    'description' => 'Manage blocked IP addresses.',
-    'page callback' => 'system_ip_blocking',
-    'access arguments' => array('block IP addresses'),
-  );
-  $items['admin/settings/ip-blocking/%'] = array(
-    'title' => 'IP address blocking',
-    'description' => 'Manage blocked IP addresses.',
-    'page callback' => 'system_ip_blocking',
-    'access arguments' => array('block IP addresses'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/settings/ip-blocking/delete/%blocked_ip'] = array(
-    'title' => 'Delete IP address',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('system_ip_blocking_delete', 4),
-    'access arguments' => array('block IP addresses'),
-    'type' => MENU_CALLBACK,
-  );
-
-  // Settings:
-  $items['admin/settings/site-information'] = array(
-    'title' => 'Site information',
-    'description' => 'Change basic site information, such as the site name, slogan, e-mail address, mission, front page and more.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('system_site_information_settings'),
-    'access arguments' => array('administer site configuration'),
-  );
-  $items['admin/settings/error-reporting'] = array(
-    'title' => 'Error reporting',
-    'description' => 'Control how Drupal deals with errors including 403/404 errors as well as PHP error reporting.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('system_error_reporting_settings'),
-    'access arguments' => array('administer site configuration'),
-  );
-  $items['admin/settings/logging'] = array(
-    'title' => 'Logging and alerts',
-    'description' => "Settings for logging and alerts modules. Various modules can route Drupal's system events to different destination, such as syslog, database, email, ...etc.",
-    'page callback' => 'system_logging_overview',
-    'access arguments' => array('administer site configuration'),
-  );
-  $items['admin/settings/performance'] = array(
-    'title' => 'Performance',
-    'description' => 'Enable or disable page caching for anonymous users and set CSS and JS bandwidth optimization options.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('system_performance_settings'),
-    'access arguments' => array('administer site configuration'),
-  );
-  $items['admin/settings/file-system'] = array(
-    'title' => 'File system',
-    'description' => 'Tell Drupal where to store uploaded files and how they are accessed.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('system_file_system_settings'),
-    'access arguments' => array('administer site configuration'),
-  );
-  $items['admin/settings/image-toolkit'] = array(
-    'title' => 'Image toolkit',
-    'description' => 'Choose which image toolkit to use if you have installed optional toolkits.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('system_image_toolkit_settings'),
-    'access arguments' => array('administer site configuration'),
-  );
-  $items['admin/content/rss-publishing'] = array(
-    'title' => 'RSS publishing',
-    'description' => 'Configure the number of items per feed and whether feeds should be titles/teasers/full-text.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('system_rss_feeds_settings'),
-    'access arguments' => array('administer site configuration'),
-  );
-  $items['admin/settings/date-time'] = array(
-    'title' => 'Date and time',
-    'description' => "Settings for how Drupal displays date and time, as well as the system's default time zone.",
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('system_date_time_settings'),
-    'access arguments' => array('administer site configuration'),
-  );
-  $items['admin/settings/date-time/lookup'] = array(
-    'title' => 'Date and time lookup',
-    'type' => MENU_CALLBACK,
-    'page callback' => 'system_date_time_lookup',
-    'access arguments' => array('administer site configuration'),
-  );
-  $items['admin/settings/site-maintenance'] = array(
-    'title' => 'Site maintenance',
-    'description' => 'Take the site offline for maintenance or bring it back online.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('system_site_maintenance_settings'),
-    'access arguments' => array('administer site configuration'),
-  );
-  $items['admin/settings/clean-urls'] = array(
-    'title' => 'Clean URLs',
-    'description' => 'Enable or disable clean URLs for your site.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('system_clean_url_settings'),
-    'access arguments' => array('administer site configuration'),
-  );
-  $items['admin/settings/clean-urls/check'] = array(
-    'title' => 'Clean URL check',
-    'page callback' => 'drupal_json',
-    'page arguments' => array(array('status' => TRUE)),
-    'access callback' => TRUE,
-    'type' => MENU_CALLBACK,
-  );
-  // Menu handler to test that drupal_http_request() works locally.
-  // @see system_check_http_request()
-  $items['admin/reports/request-test'] = array(
-    'title' => 'Request test',
-    'page callback' => 'printf',
-    'page arguments' => array('request test'),
-    'access callback' => TRUE,
-    'type' => MENU_CALLBACK,
-  );
-
-  // Reports:
-  $items['admin/reports'] = array(
-    'title' => 'Reports',
-    'description' => 'View reports from system logs and other status information.',
-    'page callback' => 'system_admin_menu_block_page',
-    'access arguments' => array('access site reports'),
-    'weight' => 5,
-    'position' => 'left',
-  );
-  $items['admin/reports/status'] = array(
-    'title' => 'Status report',
-    'description' => "Get a status report about your site's operation and any detected problems.",
-    'page callback' => 'system_status',
-    'weight' => 10,
-    'access arguments' => array('administer site configuration'),
-  );
-  $items['admin/reports/status/run-cron'] = array(
-    'title' => 'Run cron',
-    'page callback' => 'system_run_cron',
-    'access arguments' => array('administer site configuration'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/reports/status/php'] = array(
-    'title' => 'PHP',
-    'page callback' => 'system_php',
-    'access arguments' => array('administer site configuration'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/reports/status/sql'] = array(
-    'title' => 'SQL',
-    'page callback' => 'system_sql',
-    'access arguments' => array('administer site configuration'),
-    'type' => MENU_CALLBACK,
-  );
-  // Default page for batch operations
-  $items['batch'] = array(
-    'page callback' => 'system_batch_page',
-    'access callback' => TRUE,
-    'type' => MENU_CALLBACK,
-  );
-  return $items;
-}
-
-/**
  * Retrieve a blocked IP address from the database.
  *
  * @param $iid integer
Index: modules/system/system.registry.inc
===================================================================
RCS file: modules/system/system.registry.inc
diff -N modules/system/system.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/system/system.registry.inc	11 Dec 2008 11:33:01 -0000
@@ -0,0 +1,401 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the system module.
+ */
+
+/**
+ * Implementation of hook_theme().
+ */
+function system_theme() {
+  return array_merge(drupal_common_theme(), array(
+    'system_theme_select_form' => array(
+      'arguments' => array('form' => NULL),
+      'file' => 'system.admin.inc',
+    ),
+    'system_themes_form' => array(
+      'arguments' => array('form' => NULL),
+      'file' => 'system.admin.inc',
+    ),
+    'system_modules_fieldset' => array(
+      'arguments' => array('form' => NULL),
+      'file' => 'system.admin.inc',
+    ),
+    'system_modules_incompatible' => array(
+      'arguments' => array('message' => NULL),
+      'file' => 'system.admin.inc',
+    ),
+    'system_modules_uninstall' => array(
+      'arguments' => array('form' => NULL),
+      'file' => 'system.admin.inc',
+    ),
+    'status_report' => array(
+      'arguments' => array('requirements' => NULL),
+      'file' => 'system.admin.inc',
+    ),
+    'admin_page' => array(
+      'arguments' => array('blocks' => NULL),
+      'file' => 'system.admin.inc',
+    ),
+    'admin_block' => array(
+      'arguments' => array('block' => NULL),
+      'file' => 'system.admin.inc',
+    ),
+    'admin_block_content' => array(
+      'arguments' => array('content' => NULL),
+      'file' => 'system.admin.inc',
+    ),
+    'system_admin_by_module' => array(
+      'arguments' => array('menu_items' => NULL),
+      'file' => 'system.admin.inc',
+    ),
+    'system_powered_by' => array(
+      'arguments' => array('image_path' => NULL),
+    ),
+    'meta_generator_html' => array(
+      'arguments' => array('version' => NULL),
+    ),
+    'meta_generator_header' => array(
+      'arguments' => array('version' => NULL),
+    ),
+    'system_compact_link' => array(),
+  ));
+}
+
+/**
+ * Implementation of hook_menu().
+ */
+function system_menu() {
+  $items['system/files'] = array(
+    'title' => 'File download',
+    'page callback' => 'file_download',
+    'access callback' => TRUE,
+    'type' => MENU_CALLBACK,
+  );
+  $items['system/timezone'] = array(
+    'title' => 'Time zone',
+    'page callback' => 'system_timezone',
+    'access callback' => TRUE,
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin'] = array(
+    'title' => 'Administer',
+    'access arguments' => array('access administration pages'),
+    'page callback' => 'system_main_admin_page',
+    'weight' => 9,
+  );
+  $items['admin/compact'] = array(
+    'title' => 'Compact mode',
+    'page callback' => 'system_admin_compact_page',
+    'access arguments' => array('access administration pages'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/by-task'] = array(
+    'title' => 'By task',
+    'page callback' => 'system_main_admin_page',
+    'access arguments' => array('access administration pages'),
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+  );
+  $items['admin/by-module'] = array(
+    'title' => 'By module',
+    'page callback' => 'system_admin_by_module',
+    'access arguments' => array('access administration pages'),
+    'type' => MENU_LOCAL_TASK,
+    'weight' => 2,
+  );
+  $items['admin/content'] = array(
+    'title' => 'Content management',
+    'description' => "Manage your site's content.",
+    'position' => 'left',
+    'weight' => -10,
+    'page callback' => 'system_admin_menu_block_page',
+    'access arguments' => array('access administration pages'),
+  );
+
+  // menu items that are basically just menu blocks
+  $items['admin/settings'] = array(
+    'title' => 'Site configuration',
+    'description' => 'Configure site settings.',
+    'position' => 'right',
+    'weight' => -5,
+    'page callback' => 'system_settings_overview',
+    'access arguments' => array('access administration pages'),
+  );
+  $items['admin/build'] = array(
+    'title' => 'Site building',
+    'description' => 'Control how your site looks and feels.',
+    'position' => 'right',
+    'weight' => -10,
+    'page callback' => 'system_admin_menu_block_page',
+    'access arguments' => array('access administration pages'),
+  );
+  $items['admin/settings/admin'] = array(
+    'title' => 'Administration theme',
+    'description' => 'Settings for how your administrative pages should look.',
+    'position' => 'left',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('system_admin_theme_settings'),
+    'access arguments' => array('administer site configuration'),
+    'block callback' => 'system_admin_theme_settings',
+  );
+  // Themes:
+  $items['admin/build/themes'] = array(
+    'title' => 'Themes',
+    'description' => 'Change which theme your site uses or allows users to set.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('system_themes_form', NULL),
+    'access arguments' => array('administer site configuration'),
+  );
+  $items['admin/build/themes/select'] = array(
+    'title' => 'List',
+    'description' => 'Select the default theme.',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -1,
+  );
+  $items['admin/build/themes/settings'] = array(
+    'title' => 'Configure',
+    'page arguments' => array('system_theme_settings'),
+    'access arguments' => array('administer site configuration'),
+    'type' => MENU_LOCAL_TASK,
+  );
+  // Theme configuration subtabs
+  $items['admin/build/themes/settings/global'] = array(
+    'title' => 'Global settings',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -1,
+  );
+
+  foreach (list_themes() as $theme) {
+    $items['admin/build/themes/settings/' . $theme->name] = array(
+      'title' => $theme->info['name'],
+      'page arguments' => array('system_theme_settings', $theme->name),
+      'type' => MENU_LOCAL_TASK,
+      'access callback' => '_system_themes_access',
+      'access arguments' => array($theme),
+    );
+  }
+
+  // Modules:
+  $items['admin/build/modules'] = array(
+    'title' => 'Modules',
+    'description' => 'Enable or disable add-on modules for your site.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('system_modules'),
+    'access arguments' => array('administer site configuration'),
+  );
+  $items['admin/build/modules/list'] = array(
+    'title' => 'List',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+  );
+  $items['admin/build/modules/list/confirm'] = array(
+    'title' => 'List',
+    'access arguments' => array('administer site configuration'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/build/modules/uninstall'] = array(
+    'title' => 'Uninstall',
+    'page arguments' => array('system_modules_uninstall'),
+    'access arguments' => array('administer site configuration'),
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['admin/build/modules/uninstall/confirm'] = array(
+    'title' => 'Uninstall',
+    'access arguments' => array('administer site configuration'),
+    'type' => MENU_CALLBACK,
+  );
+
+  // Actions:
+  $items['admin/settings/actions'] = array(
+    'title' => 'Actions',
+    'description' => 'Manage the actions defined for your site.',
+    'access arguments' => array('administer actions'),
+    'page callback' => 'system_actions_manage'
+  );
+  $items['admin/settings/actions/manage'] = array(
+    'title' => 'Manage actions',
+    'description' => 'Manage the actions defined for your site.',
+    'page callback' => 'system_actions_manage',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -2,
+  );
+  $items['admin/settings/actions/configure'] = array(
+    'title' => 'Configure an advanced action',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('system_actions_configure'),
+    'access arguments' => array('administer actions'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/settings/actions/delete/%actions'] = array(
+    'title' => 'Delete action',
+    'description' => 'Delete an action.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('system_actions_delete_form', 4),
+    'access arguments' => array('administer actions'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/settings/actions/orphan'] = array(
+    'title' => 'Remove orphans',
+    'page callback' => 'system_actions_remove_orphans',
+    'access arguments' => array('administer actions'),
+    'type' => MENU_CALLBACK,
+  );
+
+  // IP address blocking.
+  $items['admin/settings/ip-blocking'] = array(
+    'title' => 'IP address blocking',
+    'description' => 'Manage blocked IP addresses.',
+    'page callback' => 'system_ip_blocking',
+    'access arguments' => array('block IP addresses'),
+  );
+  $items['admin/settings/ip-blocking/%'] = array(
+    'title' => 'IP address blocking',
+    'description' => 'Manage blocked IP addresses.',
+    'page callback' => 'system_ip_blocking',
+    'access arguments' => array('block IP addresses'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/settings/ip-blocking/delete/%blocked_ip'] = array(
+    'title' => 'Delete IP address',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('system_ip_blocking_delete', 4),
+    'access arguments' => array('block IP addresses'),
+    'type' => MENU_CALLBACK,
+  );
+
+  // Settings:
+  $items['admin/settings/site-information'] = array(
+    'title' => 'Site information',
+    'description' => 'Change basic site information, such as the site name, slogan, e-mail address, mission, front page and more.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('system_site_information_settings'),
+    'access arguments' => array('administer site configuration'),
+  );
+  $items['admin/settings/error-reporting'] = array(
+    'title' => 'Error reporting',
+    'description' => 'Control how Drupal deals with errors including 403/404 errors as well as PHP error reporting.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('system_error_reporting_settings'),
+    'access arguments' => array('administer site configuration'),
+  );
+  $items['admin/settings/logging'] = array(
+    'title' => 'Logging and alerts',
+    'description' => "Settings for logging and alerts modules. Various modules can route Drupal's system events to different destination, such as syslog, database, email, ...etc.",
+    'page callback' => 'system_logging_overview',
+    'access arguments' => array('administer site configuration'),
+  );
+  $items['admin/settings/performance'] = array(
+    'title' => 'Performance',
+    'description' => 'Enable or disable page caching for anonymous users and set CSS and JS bandwidth optimization options.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('system_performance_settings'),
+    'access arguments' => array('administer site configuration'),
+  );
+  $items['admin/settings/file-system'] = array(
+    'title' => 'File system',
+    'description' => 'Tell Drupal where to store uploaded files and how they are accessed.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('system_file_system_settings'),
+    'access arguments' => array('administer site configuration'),
+  );
+  $items['admin/settings/image-toolkit'] = array(
+    'title' => 'Image toolkit',
+    'description' => 'Choose which image toolkit to use if you have installed optional toolkits.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('system_image_toolkit_settings'),
+    'access arguments' => array('administer site configuration'),
+  );
+  $items['admin/content/rss-publishing'] = array(
+    'title' => 'RSS publishing',
+    'description' => 'Configure the number of items per feed and whether feeds should be titles/teasers/full-text.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('system_rss_feeds_settings'),
+    'access arguments' => array('administer site configuration'),
+  );
+  $items['admin/settings/date-time'] = array(
+    'title' => 'Date and time',
+    'description' => "Settings for how Drupal displays date and time, as well as the system's default time zone.",
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('system_date_time_settings'),
+    'access arguments' => array('administer site configuration'),
+  );
+  $items['admin/settings/date-time/lookup'] = array(
+    'title' => 'Date and time lookup',
+    'type' => MENU_CALLBACK,
+    'page callback' => 'system_date_time_lookup',
+    'access arguments' => array('administer site configuration'),
+  );
+  $items['admin/settings/site-maintenance'] = array(
+    'title' => 'Site maintenance',
+    'description' => 'Take the site offline for maintenance or bring it back online.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('system_site_maintenance_settings'),
+    'access arguments' => array('administer site configuration'),
+  );
+  $items['admin/settings/clean-urls'] = array(
+    'title' => 'Clean URLs',
+    'description' => 'Enable or disable clean URLs for your site.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('system_clean_url_settings'),
+    'access arguments' => array('administer site configuration'),
+  );
+  $items['admin/settings/clean-urls/check'] = array(
+    'title' => 'Clean URL check',
+    'page callback' => 'drupal_json',
+    'page arguments' => array(array('status' => TRUE)),
+    'access callback' => TRUE,
+    'type' => MENU_CALLBACK,
+  );
+  // Menu handler to test that drupal_http_request() works locally.
+  // @see system_check_http_request()
+  $items['admin/reports/request-test'] = array(
+    'title' => 'Request test',
+    'page callback' => 'printf',
+    'page arguments' => array('request test'),
+    'access callback' => TRUE,
+    'type' => MENU_CALLBACK,
+  );
+
+  // Reports:
+  $items['admin/reports'] = array(
+    'title' => 'Reports',
+    'description' => 'View reports from system logs and other status information.',
+    'page callback' => 'system_admin_menu_block_page',
+    'access arguments' => array('access site reports'),
+    'weight' => 5,
+    'position' => 'left',
+  );
+  $items['admin/reports/status'] = array(
+    'title' => 'Status report',
+    'description' => "Get a status report about your site's operation and any detected problems.",
+    'page callback' => 'system_status',
+    'weight' => 10,
+    'access arguments' => array('administer site configuration'),
+  );
+  $items['admin/reports/status/run-cron'] = array(
+    'title' => 'Run cron',
+    'page callback' => 'system_run_cron',
+    'access arguments' => array('administer site configuration'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/reports/status/php'] = array(
+    'title' => 'PHP',
+    'page callback' => 'system_php',
+    'access arguments' => array('administer site configuration'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/reports/status/sql'] = array(
+    'title' => 'SQL',
+    'page callback' => 'system_sql',
+    'access arguments' => array('administer site configuration'),
+    'type' => MENU_CALLBACK,
+  );
+  // Default page for batch operations
+  $items['batch'] = array(
+    'page callback' => 'system_batch_page',
+    'access callback' => TRUE,
+    'type' => MENU_CALLBACK,
+  );
+  return $items;
+}
Index: modules/taxonomy/taxonomy.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/taxonomy/taxonomy.info,v
retrieving revision 1.8
diff -u -p -r1.8 taxonomy.info
--- modules/taxonomy/taxonomy.info	11 Oct 2008 02:33:06 -0000	1.8
+++ modules/taxonomy/taxonomy.info	11 Dec 2008 11:33:01 -0000
@@ -7,4 +7,5 @@ core = 7.x
 files[] = taxonomy.module
 files[] = taxonomy.admin.inc
 files[] = taxonomy.pages.inc
+files[] = taxonomy.registry.inc
 files[] = taxonomy.install
Index: modules/taxonomy/taxonomy.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/taxonomy/taxonomy.module,v
retrieving revision 1.447
diff -u -p -r1.447 taxonomy.module
--- modules/taxonomy/taxonomy.module	9 Dec 2008 11:30:25 -0000	1.447
+++ modules/taxonomy/taxonomy.module	11 Dec 2008 11:33:01 -0000
@@ -19,26 +19,6 @@ function taxonomy_perm() {
 }
 
 /**
- * Implementation of hook_theme().
- */
-function taxonomy_theme() {
-  return array(
-    'taxonomy_term_select' => array(
-      'arguments' => array('element' => NULL),
-    ),
-    'taxonomy_term_page' => array(
-      'arguments' => array('tids' => array(), 'result' => NULL),
-    ),
-    'taxonomy_overview_vocabularies' => array(
-      'arguments' => array('form' => array()),
-    ),
-    'taxonomy_overview_terms' => array(
-      'arguments' => array('form' => array()),
-    ),
-  );
-}
-
-/**
  * Implementation of hook_link().
  *
  * This hook is extended with $type = 'taxonomy terms' to allow themes to
@@ -111,97 +91,6 @@ function taxonomy_term_path($term) {
 }
 
 /**
- * Implementation of hook_menu().
- */
-function taxonomy_menu() {
-  $items['admin/content/taxonomy'] = array(
-    'title' => 'Taxonomy',
-    'description' => 'Manage tagging, categorization, and classification of your content.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('taxonomy_overview_vocabularies'),
-    'access arguments' => array('administer taxonomy'),
-  );
-
-  $items['admin/content/taxonomy/list'] = array(
-    'title' => 'List',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-    'weight' => -10,
-  );
-
-  $items['admin/content/taxonomy/add'] = array(
-    'title' => 'Add vocabulary',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('taxonomy_form_vocabulary'),
-    'access arguments' => array('administer taxonomy'),
-    'type' => MENU_LOCAL_TASK,
-  );
-
-  $items['taxonomy/term/%taxonomy_terms'] = array(
-    'title' => 'Taxonomy term',
-    'page callback' => 'taxonomy_term_page',
-    'page arguments' => array(2),
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-
-  $items['taxonomy/term/%taxonomy_terms/view'] = array(
-    'title' => 'View',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-  );
-
-  $items['taxonomy/term/%taxonomy_term/edit'] = array(
-    'title' => 'Edit term',
-    'page callback' => 'taxonomy_term_edit',
-    'page arguments' => array(2),
-    'access arguments' => array('administer taxonomy'),
-    'type' => MENU_LOCAL_TASK,
-    'weight' => 10,
-  );
-
-  $items['taxonomy/autocomplete'] = array(
-    'title' => 'Autocomplete taxonomy',
-    'page callback' => 'taxonomy_autocomplete',
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-
-  $items['admin/content/taxonomy/%taxonomy_vocabulary'] = array(
-    'title' => 'Vocabulary', // this is replaced by callback
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('taxonomy_form_vocabulary', 3),
-    'title callback' => 'taxonomy_admin_vocabulary_title_callback',
-    'title arguments' => array(3),
-    'access arguments' => array('administer taxonomy'),
-    'type' => MENU_CALLBACK,
-  );
-
-  $items['admin/content/taxonomy/%taxonomy_vocabulary/edit'] = array(
-    'title' => 'Edit vocabulary',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-    'weight' => -20,
-  );
-
-  $items['admin/content/taxonomy/%taxonomy_vocabulary/list'] = array(
-    'title' => 'List terms',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('taxonomy_overview_terms', 3),
-    'access arguments' => array('administer taxonomy'),
-    'type' => MENU_LOCAL_TASK,
-    'weight' => -10,
-  );
-
-  $items['admin/content/taxonomy/%taxonomy_vocabulary/add'] = array(
-    'title' => 'Add term',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('taxonomy_form_term', 3),
-    'access arguments' => array('administer taxonomy'),
-    'type' => MENU_LOCAL_TASK,
-  );
-
-  return $items;
-}
-
-/**
  * Return the vocabulary name given the vocabulary object.
  */
 function taxonomy_admin_vocabulary_title_callback($vocabulary) {
@@ -334,7 +223,7 @@ function taxonomy_term_save($term) {
     $status = drupal_write_record('term_data', $term);
     module_invoke_all('taxonomy_term_update', $term);
   }
-  
+
   $or = db_or()->condition('tid1', $term->tid)->condition('tid2', $term->tid);
   db_delete('term_relation')->condition($or)->execute();
 
Index: modules/taxonomy/taxonomy.registry.inc
===================================================================
RCS file: modules/taxonomy/taxonomy.registry.inc
diff -N modules/taxonomy/taxonomy.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/taxonomy/taxonomy.registry.inc	11 Dec 2008 11:33:01 -0000
@@ -0,0 +1,118 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the taxonomy module.
+ */
+
+/**
+ * Implementation of hook_theme().
+ */
+function taxonomy_theme() {
+  return array(
+    'taxonomy_term_select' => array(
+      'arguments' => array('element' => NULL),
+    ),
+    'taxonomy_term_page' => array(
+      'arguments' => array('tids' => array(), 'result' => NULL),
+    ),
+    'taxonomy_overview_vocabularies' => array(
+      'arguments' => array('form' => array()),
+    ),
+    'taxonomy_overview_terms' => array(
+      'arguments' => array('form' => array()),
+    ),
+  );
+}
+
+/**
+ * Implementation of hook_menu().
+ */
+function taxonomy_menu() {
+  $items['admin/content/taxonomy'] = array(
+    'title' => 'Taxonomy',
+    'description' => 'Manage tagging, categorization, and classification of your content.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('taxonomy_overview_vocabularies'),
+    'access arguments' => array('administer taxonomy'),
+  );
+
+  $items['admin/content/taxonomy/list'] = array(
+    'title' => 'List',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -10,
+  );
+
+  $items['admin/content/taxonomy/add'] = array(
+    'title' => 'Add vocabulary',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('taxonomy_form_vocabulary'),
+    'access arguments' => array('administer taxonomy'),
+    'type' => MENU_LOCAL_TASK,
+  );
+
+  $items['taxonomy/term/%taxonomy_terms'] = array(
+    'title' => 'Taxonomy term',
+    'page callback' => 'taxonomy_term_page',
+    'page arguments' => array(2),
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+
+  $items['taxonomy/term/%taxonomy_terms/view'] = array(
+    'title' => 'View',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+  );
+
+  $items['taxonomy/term/%taxonomy_term/edit'] = array(
+    'title' => 'Edit term',
+    'page callback' => 'taxonomy_term_edit',
+    'page arguments' => array(2),
+    'access arguments' => array('administer taxonomy'),
+    'type' => MENU_LOCAL_TASK,
+    'weight' => 10,
+  );
+
+  $items['taxonomy/autocomplete'] = array(
+    'title' => 'Autocomplete taxonomy',
+    'page callback' => 'taxonomy_autocomplete',
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+
+  $items['admin/content/taxonomy/%taxonomy_vocabulary'] = array(
+    'title' => 'Vocabulary', // this is replaced by callback
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('taxonomy_form_vocabulary', 3),
+    'title callback' => 'taxonomy_admin_vocabulary_title_callback',
+    'title arguments' => array(3),
+    'access arguments' => array('administer taxonomy'),
+    'type' => MENU_CALLBACK,
+  );
+
+  $items['admin/content/taxonomy/%taxonomy_vocabulary/edit'] = array(
+    'title' => 'Edit vocabulary',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -20,
+  );
+
+  $items['admin/content/taxonomy/%taxonomy_vocabulary/list'] = array(
+    'title' => 'List terms',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('taxonomy_overview_terms', 3),
+    'access arguments' => array('administer taxonomy'),
+    'type' => MENU_LOCAL_TASK,
+    'weight' => -10,
+  );
+
+  $items['admin/content/taxonomy/%taxonomy_vocabulary/add'] = array(
+    'title' => 'Add term',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('taxonomy_form_term', 3),
+    'access arguments' => array('administer taxonomy'),
+    'type' => MENU_LOCAL_TASK,
+  );
+
+  return $items;
+}
Index: modules/tracker/tracker.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/tracker/tracker.info,v
retrieving revision 1.8
diff -u -p -r1.8 tracker.info
--- modules/tracker/tracker.info	11 Oct 2008 02:33:07 -0000	1.8
+++ modules/tracker/tracker.info	11 Dec 2008 11:33:01 -0000
@@ -7,3 +7,4 @@ version = VERSION
 core = 7.x
 files[] = tracker.module
 files[] = tracker.pages.inc
+files[] = tracker.registry.inc
Index: modules/tracker/tracker.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/tracker/tracker.module,v
retrieving revision 1.157
diff -u -p -r1.157 tracker.module
--- modules/tracker/tracker.module	6 May 2008 12:18:51 -0000	1.157
+++ modules/tracker/tracker.module	11 Dec 2008 11:33:01 -0000
@@ -20,43 +20,6 @@ function tracker_help($path, $arg) {
 }
 
 /**
- * Implementation of hook_menu().
- */
-function tracker_menu() {
-  $items['tracker'] = array(
-    'title' => 'Recent posts',
-    'page callback' => 'tracker_page',
-    'access arguments' => array('access content'),
-    'weight' => 1,
-  );
-  $items['tracker/all'] = array(
-    'title' => 'All recent posts',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-  );
-  $items['tracker/%user_uid_optional'] = array(
-    'title' => 'My recent posts',
-    'access callback' => '_tracker_myrecent_access',
-    'access arguments' => array(1),
-    'page arguments' => array(1),
-    'type' => MENU_LOCAL_TASK,
-  );
-
-  $items['user/%user/track'] = array(
-    'title' => 'Track',
-    'page callback' => 'tracker_page',
-    'page arguments' => array(1, TRUE),
-    'access callback' => '_tracker_user_access',
-    'access arguments' => array(1),
-    'type' => MENU_LOCAL_TASK,
-  );
-  $items['user/%user/track/posts'] = array(
-    'title' => 'Track posts',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-  );
-  return $items;
-}
-
-/**
  * Access callback for tracker/%user_uid_optional
  */
 function _tracker_myrecent_access($account) {
Index: modules/tracker/tracker.registry.inc
===================================================================
RCS file: modules/tracker/tracker.registry.inc
diff -N modules/tracker/tracker.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/tracker/tracker.registry.inc	11 Dec 2008 11:33:01 -0000
@@ -0,0 +1,44 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the tracker module.
+ */
+
+/**
+ * Implementation of hook_menu().
+ */
+function tracker_menu() {
+  $items['tracker'] = array(
+    'title' => 'Recent posts',
+    'page callback' => 'tracker_page',
+    'access arguments' => array('access content'),
+    'weight' => 1,
+  );
+  $items['tracker/all'] = array(
+    'title' => 'All recent posts',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+  );
+  $items['tracker/%user_uid_optional'] = array(
+    'title' => 'My recent posts',
+    'access callback' => '_tracker_myrecent_access',
+    'access arguments' => array(1),
+    'page arguments' => array(1),
+    'type' => MENU_LOCAL_TASK,
+  );
+
+  $items['user/%user/track'] = array(
+    'title' => 'Track',
+    'page callback' => 'tracker_page',
+    'page arguments' => array(1, TRUE),
+    'access callback' => '_tracker_user_access',
+    'access arguments' => array(1),
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['user/%user/track/posts'] = array(
+    'title' => 'Track posts',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+  );
+  return $items;
+}
Index: modules/translation/translation.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/translation/translation.info,v
retrieving revision 1.4
diff -u -p -r1.4 translation.info
--- modules/translation/translation.info	11 Oct 2008 02:33:09 -0000	1.4
+++ modules/translation/translation.info	11 Dec 2008 11:33:01 -0000
@@ -7,3 +7,4 @@ version = VERSION
 core = 7.x
 files[] = translation.module
 files[] = translation.pages.inc
+files[] = translation.registry.inc
Index: modules/translation/translation.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/translation/translation.module,v
retrieving revision 1.36
diff -u -p -r1.36 translation.module
--- modules/translation/translation.module	9 Dec 2008 11:36:04 -0000	1.36
+++ modules/translation/translation.module	11 Dec 2008 11:33:01 -0000
@@ -51,23 +51,6 @@ function translation_help($path, $arg) {
 }
 
 /**
- * Implementation of hook_menu().
- */
-function translation_menu() {
-  $items = array();
-  $items['node/%node/translate'] = array(
-    'title' => 'Translate',
-    'page callback' => 'translation_node_overview',
-    'page arguments' => array(1),
-    'access callback' => '_translation_tab_access',
-    'access arguments' => array(1),
-    'type' => MENU_LOCAL_TASK,
-    'weight' => 2,
-  );
-  return $items;
-}
-
-/**
  * Menu access callback.
  *
  * Only display translation tab for node types, which have translation enabled
Index: modules/translation/translation.registry.inc
===================================================================
RCS file: modules/translation/translation.registry.inc
diff -N modules/translation/translation.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/translation/translation.registry.inc	11 Dec 2008 11:33:01 -0000
@@ -0,0 +1,24 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the translation module.
+ */
+
+/**
+ * Implementation of hook_menu().
+ */
+function translation_menu() {
+  $items = array();
+  $items['node/%node/translate'] = array(
+    'title' => 'Translate',
+    'page callback' => 'translation_node_overview',
+    'page arguments' => array(1),
+    'access callback' => '_translation_tab_access',
+    'access arguments' => array(1),
+    'type' => MENU_LOCAL_TASK,
+    'weight' => 2,
+  );
+  return $items;
+}
Index: modules/trigger/trigger.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/trigger/trigger.info,v
retrieving revision 1.5
diff -u -p -r1.5 trigger.info
--- modules/trigger/trigger.info	11 Oct 2008 02:33:10 -0000	1.5
+++ modules/trigger/trigger.info	11 Dec 2008 11:33:01 -0000
@@ -6,4 +6,5 @@ version = VERSION
 core = 7.x
 files[] = trigger.module
 files[] = trigger.admin.inc
+files[] = trigger.registry.inc
 files[] = trigger.install
Index: modules/trigger/trigger.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/trigger/trigger.module,v
retrieving revision 1.23
diff -u -p -r1.23 trigger.module
--- modules/trigger/trigger.module	9 Dec 2008 11:30:25 -0000	1.23
+++ modules/trigger/trigger.module	11 Dec 2008 11:33:01 -0000
@@ -31,89 +31,6 @@ function trigger_help($path, $arg) {
   }
 }
 
-/**
- * Implementation of hook_menu().
- */
-function trigger_menu() {
-  $items['admin/build/trigger'] = array(
-    'title' => 'Triggers',
-    'description' => 'Tell Drupal when to execute actions.',
-    'page callback' => 'trigger_assign',
-    'access callback' => 'trigger_access_check',
-    'access arguments' => array('node'),
-  );
-  // We don't use a menu wildcard here because these are tabs,
-  // not invisible items.
-  $items['admin/build/trigger/node'] = array(
-    'title' => 'Content',
-    'page callback' => 'trigger_assign',
-    'page arguments' => array('node'),
-    'access callback' => 'trigger_access_check',
-    'access arguments' => array('node'),
-    'type' => MENU_LOCAL_TASK,
-  );
-  $items['admin/build/trigger/user'] = array(
-    'title' => 'Users',
-    'page callback' => 'trigger_assign',
-    'page arguments' => array('user'),
-    'access callback' => 'trigger_access_check',
-    'access arguments' => array('user'),
-    'type' => MENU_LOCAL_TASK,
-  );
-  $items['admin/build/trigger/comment'] = array(
-    'title' => 'Comments',
-    'page callback' => 'trigger_assign',
-    'page arguments' => array('comment'),
-    'access callback' => 'trigger_access_check',
-    'access arguments' => array('comment'),
-    'type' => MENU_LOCAL_TASK,
-  );
-  $items['admin/build/trigger/taxonomy'] = array(
-    'title' => 'Taxonomy',
-    'page callback' => 'trigger_assign',
-    'page arguments' => array('taxonomy'),
-    'access callback' => 'trigger_access_check',
-    'access arguments' => array('taxonomy'),
-    'type' => MENU_LOCAL_TASK,
-  );
-  $items['admin/build/trigger/cron'] = array(
-    'title' => 'Cron',
-    'page callback' => 'trigger_assign',
-    'page arguments' => array('cron'),
-    'access arguments' => array('administer actions'),
-    'type' => MENU_LOCAL_TASK,
-  );
-
-  // We want contributed modules to be able to describe
-  // their hooks and have actions assignable to them.
-  $hooks = module_invoke_all('hook_info');
-  foreach ($hooks as $module => $hook) {
-    // We've already done these.
-    if (in_array($module, array('node', 'comment', 'user', 'system', 'taxonomy'))) {
-      continue;
-    }
-    $info = db_result(db_query("SELECT info FROM {system} WHERE name = '%s'", $module));
-    $info = unserialize($info);
-    $nice_name = $info['name'];
-    $items["admin/build/trigger/$module"] = array(
-      'title' => $nice_name,
-      'page callback' => 'trigger_assign',
-      'page arguments' => array($module),
-      'access arguments' => array($module),
-      'type' => MENU_LOCAL_TASK,
-    );
-  }
-  $items['admin/build/trigger/unassign'] = array(
-    'title' => 'Unassign',
-    'description' => 'Unassign an action from a trigger.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('trigger_unassign'),
-    'access arguments' => array('administer actions'),
-    'type' => MENU_CALLBACK,
-  );
-
-  return $items;
-}
 
 /**
  * Access callback for menu system.
@@ -143,18 +60,6 @@ function _trigger_get_hook_aids($hook, $
 }
 
 /**
- * Implementation of hook_theme().
- */
-function trigger_theme() {
-  return array(
-    'trigger_display' => array(
-      'arguments' => array('element'),
-      'file' => 'trigger.admin.inc',
-    ),
-  );
-}
-
-/**
  * Implementation of hook_forms(). We reuse code by using the
  * same assignment form definition for each node-op combination.
  */
Index: modules/trigger/trigger.registry.inc
===================================================================
RCS file: modules/trigger/trigger.registry.inc
diff -N modules/trigger/trigger.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/trigger/trigger.registry.inc	11 Dec 2008 11:33:02 -0000
@@ -0,0 +1,103 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the trigger module.
+ */
+
+/**
+ * Implementation of hook_theme().
+ */
+function trigger_theme() {
+  return array(
+    'trigger_display' => array(
+      'arguments' => array('element'),
+      'file' => 'trigger.admin.inc',
+    ),
+  );
+}
+
+/**
+ * Implementation of hook_menu().
+ */
+function trigger_menu() {
+  $items['admin/build/trigger'] = array(
+    'title' => 'Triggers',
+    'description' => 'Tell Drupal when to execute actions.',
+    'page callback' => 'trigger_assign',
+    'access callback' => 'trigger_access_check',
+    'access arguments' => array('node'),
+  );
+  // We don't use a menu wildcard here because these are tabs,
+  // not invisible items.
+  $items['admin/build/trigger/node'] = array(
+    'title' => 'Content',
+    'page callback' => 'trigger_assign',
+    'page arguments' => array('node'),
+    'access callback' => 'trigger_access_check',
+    'access arguments' => array('node'),
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['admin/build/trigger/user'] = array(
+    'title' => 'Users',
+    'page callback' => 'trigger_assign',
+    'page arguments' => array('user'),
+    'access callback' => 'trigger_access_check',
+    'access arguments' => array('user'),
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['admin/build/trigger/comment'] = array(
+    'title' => 'Comments',
+    'page callback' => 'trigger_assign',
+    'page arguments' => array('comment'),
+    'access callback' => 'trigger_access_check',
+    'access arguments' => array('comment'),
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['admin/build/trigger/taxonomy'] = array(
+    'title' => 'Taxonomy',
+    'page callback' => 'trigger_assign',
+    'page arguments' => array('taxonomy'),
+    'access callback' => 'trigger_access_check',
+    'access arguments' => array('taxonomy'),
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['admin/build/trigger/cron'] = array(
+    'title' => 'Cron',
+    'page callback' => 'trigger_assign',
+    'page arguments' => array('cron'),
+    'access arguments' => array('administer actions'),
+    'type' => MENU_LOCAL_TASK,
+  );
+
+  // We want contributed modules to be able to describe
+  // their hooks and have actions assignable to them.
+  $hooks = module_invoke_all('hook_info');
+  foreach ($hooks as $module => $hook) {
+    // We've already done these.
+    if (in_array($module, array('node', 'comment', 'user', 'system', 'taxonomy'))) {
+      continue;
+    }
+    $info = db_result(db_query("SELECT info FROM {system} WHERE name = '%s'", $module));
+    $info = unserialize($info);
+    $nice_name = $info['name'];
+    $items["admin/build/trigger/$module"] = array(
+      'title' => $nice_name,
+      'page callback' => 'trigger_assign',
+      'page arguments' => array($module),
+      'access arguments' => array($module),
+      'type' => MENU_LOCAL_TASK,
+    );
+  }
+  $items['admin/build/trigger/unassign'] = array(
+    'title' => 'Unassign',
+    'description' => 'Unassign an action from a trigger.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('trigger_unassign'),
+    'access arguments' => array('administer actions'),
+    'type' => MENU_CALLBACK,
+  );
+
+  return $items;
+}
Index: modules/update/update.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/update/update.info,v
retrieving revision 1.5
diff -u -p -r1.5 update.info
--- modules/update/update.info	11 Oct 2008 02:33:12 -0000	1.5
+++ modules/update/update.info	11 Dec 2008 11:33:02 -0000
@@ -9,4 +9,5 @@ files[] = update.compare.inc
 files[] = update.fetch.inc
 files[] = update.report.inc
 files[] = update.settings.inc
+files[] = update.registry.inc
 files[] = update.install
Index: modules/update/update.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/update/update.module,v
retrieving revision 1.27
diff -u -p -r1.27 update.module
--- modules/update/update.module	13 Nov 2008 20:27:30 -0000	1.27
+++ modules/update/update.module	11 Dec 2008 11:33:02 -0000
@@ -110,53 +110,6 @@ function update_help($path, $arg) {
 }
 
 /**
- * Implementation of hook_menu().
- */
-function update_menu() {
-  $items = array();
-
-  $items['admin/reports/updates'] = array(
-    'title' => 'Available updates',
-    'description' => 'Get a status report about available updates for your installed modules and themes.',
-    'page callback' => 'update_status',
-    'access arguments' => array('administer site configuration'),
-    'weight' => 10,
-  );
-  $items['admin/settings/updates'] = array(
-    'title' => 'Updates',
-    'description' => 'Change frequency of checks for available updates to your installed modules and themes, and how you would like to be notified.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('update_settings'),
-    'access arguments' => array('administer site configuration'),
-  );
-  $items['admin/reports/updates/check'] = array(
-    'title' => 'Manual update check',
-    'page callback' => 'update_manual_status',
-    'access arguments' => array('administer site configuration'),
-    'type' => MENU_CALLBACK,
-  );
-
-  return $items;
-}
-
-/**
- * Implementation of the hook_theme() registry.
- */
-function update_theme() {
-  return array(
-    'update_settings' => array(
-      'arguments' => array('form' => NULL),
-    ),
-    'update_report' => array(
-      'arguments' => array('data' => NULL),
-    ),
-    'update_version' => array(
-      'arguments' => array('version' => NULL, 'tag' => NULL, 'class' => NULL),
-    ),
-  );
-}
-
-/**
  * Implementation of hook_requirements().
  *
  * @return
Index: modules/update/update.registry.inc
===================================================================
RCS file: modules/update/update.registry.inc
diff -N modules/update/update.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/update/update.registry.inc	11 Dec 2008 11:33:02 -0000
@@ -0,0 +1,55 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the update module.
+ */
+
+
+/**
+ * Implementation of the hook_theme() registry.
+ */
+function update_theme() {
+  return array(
+    'update_settings' => array(
+      'arguments' => array('form' => NULL),
+    ),
+    'update_report' => array(
+      'arguments' => array('data' => NULL),
+    ),
+    'update_version' => array(
+      'arguments' => array('version' => NULL, 'tag' => NULL, 'class' => NULL),
+    ),
+  );
+}
+
+/**
+ * Implementation of hook_menu().
+ */
+function update_menu() {
+  $items = array();
+
+  $items['admin/reports/updates'] = array(
+    'title' => 'Available updates',
+    'description' => 'Get a status report about available updates for your installed modules and themes.',
+    'page callback' => 'update_status',
+    'access arguments' => array('administer site configuration'),
+    'weight' => 10,
+  );
+  $items['admin/settings/updates'] = array(
+    'title' => 'Updates',
+    'description' => 'Change frequency of checks for available updates to your installed modules and themes, and how you would like to be notified.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('update_settings'),
+    'access arguments' => array('administer site configuration'),
+  );
+  $items['admin/reports/updates/check'] = array(
+    'title' => 'Manual update check',
+    'page callback' => 'update_manual_status',
+    'access arguments' => array('administer site configuration'),
+    'type' => MENU_CALLBACK,
+  );
+
+  return $items;
+}
Index: modules/upload/upload.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/upload/upload.info,v
retrieving revision 1.8
diff -u -p -r1.8 upload.info
--- modules/upload/upload.info	11 Oct 2008 02:33:13 -0000	1.8
+++ modules/upload/upload.info	11 Dec 2008 11:33:02 -0000
@@ -6,4 +6,5 @@ version = VERSION
 core = 7.x
 files[] = upload.module
 files[] = upload.admin.inc
+files[] = upload.registry.inc
 files[] = upload.install
Index: modules/upload/upload.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/upload/upload.module,v
retrieving revision 1.220
diff -u -p -r1.220 upload.module
--- modules/upload/upload.module	9 Dec 2008 11:30:25 -0000	1.220
+++ modules/upload/upload.module	11 Dec 2008 11:33:02 -0000
@@ -23,23 +23,6 @@ function upload_help($path, $arg) {
 }
 
 /**
- * Implementation of hook_theme().
- */
-function upload_theme() {
-  return array(
-    'upload_attachments' => array(
-      'arguments' => array('files' => NULL),
-    ),
-    'upload_form_current' => array(
-      'arguments' => array('form' => NULL),
-    ),
-    'upload_form_new' => array(
-      'arguments' => array('form' => NULL),
-    ),
-  );
-}
-
-/**
  * Implementation of hook_perm().
  */
 function upload_perm() {
@@ -83,26 +66,6 @@ function upload_link($type, $node = NULL
 }
 
 /**
- * Implementation of hook_menu().
- */
-function upload_menu() {
-  $items['upload/js'] = array(
-    'page callback' => 'upload_js',
-    'access arguments' => array('upload files'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['admin/settings/uploads'] = array(
-    'title' => 'File uploads',
-    'description' => 'Control how files may be attached to content.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('upload_admin_settings'),
-    'access arguments' => array('administer site configuration'),
-    'type' => MENU_NORMAL_ITEM,
-  );
-  return $items;
-}
-
-/**
  * Determine the limitations on files that a given user may upload. The user
  * may be in multiple roles so we select the most permissive limitations from
  * all of their roles.
Index: modules/upload/upload.registry.inc
===================================================================
RCS file: modules/upload/upload.registry.inc
diff -N modules/upload/upload.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/upload/upload.registry.inc	11 Dec 2008 11:33:02 -0000
@@ -0,0 +1,44 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the upload module.
+ */
+
+/**
+ * Implementation of hook_theme().
+ */
+function upload_theme() {
+  return array(
+    'upload_attachments' => array(
+      'arguments' => array('files' => NULL),
+    ),
+    'upload_form_current' => array(
+      'arguments' => array('form' => NULL),
+    ),
+    'upload_form_new' => array(
+      'arguments' => array('form' => NULL),
+    ),
+  );
+}
+
+/**
+ * Implementation of hook_menu().
+ */
+function upload_menu() {
+  $items['upload/js'] = array(
+    'page callback' => 'upload_js',
+    'access arguments' => array('upload files'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['admin/settings/uploads'] = array(
+    'title' => 'File uploads',
+    'description' => 'Control how files may be attached to content.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('upload_admin_settings'),
+    'access arguments' => array('administer site configuration'),
+    'type' => MENU_NORMAL_ITEM,
+  );
+  return $items;
+}
Index: modules/user/user.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.info,v
retrieving revision 1.10
diff -u -p -r1.10 user.info
--- modules/user/user.info	12 Oct 2008 01:23:07 -0000	1.10
+++ modules/user/user.info	11 Dec 2008 11:33:02 -0000
@@ -7,5 +7,6 @@ core = 7.x
 files[] = user.module
 files[] = user.admin.inc
 files[] = user.pages.inc
+files[] = user.registry.inc
 files[] = user.install
 required = TRUE
Index: modules/user/user.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.module,v
retrieving revision 1.944
diff -u -p -r1.944 user.module
--- modules/user/user.module	29 Nov 2008 09:33:51 -0000	1.944
+++ modules/user/user.module	11 Dec 2008 11:33:03 -0000
@@ -29,59 +29,6 @@ function user_module_invoke($type, &$arr
   }
 }
 
-/**
- * Implementation of hook_theme().
- */
-function user_theme() {
-  return array(
-    'user_picture' => array(
-      'arguments' => array('account' => NULL),
-      'template' => 'user-picture',
-    ),
-    'user_profile' => array(
-      'arguments' => array('account' => NULL),
-      'template' => 'user-profile',
-      'file' => 'user.pages.inc',
-    ),
-    'user_profile_category' => array(
-      'arguments' => array('element' => NULL),
-      'template' => 'user-profile-category',
-      'file' => 'user.pages.inc',
-    ),
-    'user_profile_item' => array(
-      'arguments' => array('element' => NULL),
-      'template' => 'user-profile-item',
-      'file' => 'user.pages.inc',
-    ),
-    'user_list' => array(
-      'arguments' => array('users' => NULL, 'title' => NULL),
-    ),
-    'user_admin_perm' => array(
-      'arguments' => array('form' => NULL),
-      'file' => 'user.admin.inc',
-    ),
-    'user_admin_new_role' => array(
-      'arguments' => array('form' => NULL),
-      'file' => 'user.admin.inc',
-    ),
-    'user_admin_account' => array(
-      'arguments' => array('form' => NULL),
-      'file' => 'user.admin.inc',
-    ),
-    'user_filter_form' => array(
-      'arguments' => array('form' => NULL),
-      'file' => 'user.admin.inc',
-    ),
-    'user_filters' => array(
-      'arguments' => array('form' => NULL),
-      'file' => 'user.admin.inc',
-    ),
-    'user_signature' => array(
-      'arguments' => array('signature' => NULL),
-    ),
-  );
-}
-
 function user_external_load($authname) {
   $result = db_query("SELECT uid FROM {authmap} WHERE authname = '%s'", $authname);
 
@@ -928,183 +875,6 @@ function user_load_self($arg) {
   return $arg;
 }
 
-/**
- * Implementation of hook_menu().
- */
-function user_menu() {
-  $items['user/autocomplete'] = array(
-    'title' => 'User autocomplete',
-    'page callback' => 'user_autocomplete',
-    'access callback' => 'user_access',
-    'access arguments' => array('access user profiles'),
-    'type' => MENU_CALLBACK,
-  );
-
-  // Registration and login pages.
-  $items['user'] = array(
-    'title' => 'User account',
-    'page callback' => 'user_page',
-    'access callback' => TRUE,
-    'type' => MENU_CALLBACK,
-  );
-
-  $items['user/login'] = array(
-    'title' => 'Log in',
-    'access callback' => 'user_is_anonymous',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-  );
-
-  $items['user/register'] = array(
-    'title' => 'Create new account',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('user_register'),
-    'access callback' => 'user_register_access',
-    'type' => MENU_LOCAL_TASK,
-  );
-
-  $items['user/password'] = array(
-    'title' => 'Request new password',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('user_pass'),
-    'access callback' => 'user_is_anonymous',
-    'type' => MENU_LOCAL_TASK,
-  );
-  $items['user/reset/%/%/%'] = array(
-    'title' => 'Reset password',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('user_pass_reset', 2, 3, 4),
-    'access callback' => TRUE,
-    'type' => MENU_CALLBACK,
-  );
-
-  $items['user/logout'] = array(
-    'title' => 'Log out',
-    'access callback' => 'user_is_logged_in',
-    'page callback' => 'user_logout',
-    'weight' => 10,
-  );
-
-  // User administration pages.
-  $items['admin/user'] = array(
-    'title' => 'User management',
-    'description' => "Manage your site's users, groups and access to site features.",
-    'position' => 'left',
-    'page callback' => 'system_admin_menu_block_page',
-    'access arguments' => array('access administration pages'),
-  );
-  $items['admin/user/user'] = array(
-    'title' => 'Users',
-    'description' => 'List, add, and edit users.',
-    'page callback' => 'user_admin',
-    'page arguments' => array('list'),
-    'access arguments' => array('administer users'),
-  );
-  $items['admin/user/user/list'] = array(
-    'title' => 'List',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-    'weight' => -10,
-  );
-  $items['admin/user/user/create'] = array(
-    'title' => 'Add user',
-    'page arguments' => array('create'),
-    'access arguments' => array('administer users'),
-    'type' => MENU_LOCAL_TASK,
-  );
-  $items['admin/user/settings'] = array(
-    'title' => 'User settings',
-    'description' => 'Configure default behavior of users, including registration requirements, e-mails, and user pictures.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('user_admin_settings'),
-    'access arguments' => array('administer users'),
-  );
-
-  // Permission administration pages.
-  $items['admin/user/permissions'] = array(
-    'title' => 'Permissions',
-    'description' => 'Determine access to features by selecting permissions for roles.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('user_admin_perm'),
-    'access arguments' => array('administer permissions'),
-  );
-  $items['admin/user/roles'] = array(
-    'title' => 'Roles',
-    'description' => 'List, edit, or add user roles.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('user_admin_new_role'),
-    'access arguments' => array('administer permissions'),
-  );
-  $items['admin/user/roles/edit'] = array(
-    'title' => 'Edit role',
-    'page arguments' => array('user_admin_role'),
-    'access arguments' => array('administer permissions'),
-    'type' => MENU_CALLBACK,
-  );
-
-  $items['user/%user_uid_optional'] = array(
-    'title' => 'My account',
-    'title callback' => 'user_page_title',
-    'title arguments' => array(1),
-    'page callback' => 'user_view',
-    'page arguments' => array(1),
-    'access callback' => 'user_view_access',
-    'access arguments' => array(1),
-    'parent' => '',
-  );
-
-  $items['user/%user/view'] = array(
-    'title' => 'View',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-    'weight' => -10,
-  );
-
-  $items['user/%user/delete'] = array(
-    'title' => 'Delete',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('user_confirm_delete', 1),
-    'access callback' => 'user_access',
-    'access arguments' => array('administer users'),
-    'type' => MENU_CALLBACK,
-  );
-
-  $items['user/%user/edit'] = array(
-    'title' => 'Edit',
-    'page callback' => 'user_edit',
-    'page arguments' => array(1),
-    'access callback' => 'user_edit_access',
-    'access arguments' => array(1),
-    'type' => MENU_LOCAL_TASK,
-    'load arguments' => array('%map', '%index'),
-  );
-
-  $items['user/%user_category/edit/account'] = array(
-    'title' => 'Account',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-    'load arguments' => array('%map', '%index'),
-  );
-
-  $empty_account = new stdClass();
-  if (($categories = _user_categories($empty_account)) && (count($categories) > 1)) {
-    foreach ($categories as $key => $category) {
-      // 'account' is already handled by the MENU_DEFAULT_LOCAL_TASK.
-      if ($category['name'] != 'account') {
-        $items['user/%user_category/edit/' . $category['name']] = array(
-          'title callback' => 'check_plain',
-          'title arguments' => array($category['title']),
-          'page callback' => 'user_edit',
-          'page arguments' => array(1, 3),
-          'access callback' => isset($category['access callback']) ? $category['access callback'] : 'user_edit_access',
-          'access arguments' => isset($category['access arguments']) ? $category['access arguments'] : array(1),
-          'type' => MENU_LOCAL_TASK,
-          'weight' => $category['weight'],
-          'load arguments' => array('%map', '%index'),
-          'tab_parent' => 'user/%/edit',
-        );
-      }
-    }
-  }
-  return $items;
-}
-
 function user_init() {
   drupal_add_css(drupal_get_path('module', 'user') . '/user.css');
 }
Index: modules/user/user.registry.inc
===================================================================
RCS file: modules/user/user.registry.inc
diff -N modules/user/user.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/user/user.registry.inc	11 Dec 2008 11:33:03 -0000
@@ -0,0 +1,237 @@
+<?php
+// $Id: $
+
+/**
+ * @file
+ * Registry-type hooks for the user module.
+ */
+
+/**
+ * Implementation of hook_theme().
+ */
+function user_theme() {
+  return array(
+    'user_picture' => array(
+      'arguments' => array('account' => NULL),
+      'template' => 'user-picture',
+    ),
+    'user_profile' => array(
+      'arguments' => array('account' => NULL),
+      'template' => 'user-profile',
+      'file' => 'user.pages.inc',
+    ),
+    'user_profile_category' => array(
+      'arguments' => array('element' => NULL),
+      'template' => 'user-profile-category',
+      'file' => 'user.pages.inc',
+    ),
+    'user_profile_item' => array(
+      'arguments' => array('element' => NULL),
+      'template' => 'user-profile-item',
+      'file' => 'user.pages.inc',
+    ),
+    'user_list' => array(
+      'arguments' => array('users' => NULL, 'title' => NULL),
+    ),
+    'user_admin_perm' => array(
+      'arguments' => array('form' => NULL),
+      'file' => 'user.admin.inc',
+    ),
+    'user_admin_new_role' => array(
+      'arguments' => array('form' => NULL),
+      'file' => 'user.admin.inc',
+    ),
+    'user_admin_account' => array(
+      'arguments' => array('form' => NULL),
+      'file' => 'user.admin.inc',
+    ),
+    'user_filter_form' => array(
+      'arguments' => array('form' => NULL),
+      'file' => 'user.admin.inc',
+    ),
+    'user_filters' => array(
+      'arguments' => array('form' => NULL),
+      'file' => 'user.admin.inc',
+    ),
+    'user_signature' => array(
+      'arguments' => array('signature' => NULL),
+    ),
+  );
+}
+
+/**
+ * Implementation of hook_menu().
+ */
+function user_menu() {
+  $items['user/autocomplete'] = array(
+    'title' => 'User autocomplete',
+    'page callback' => 'user_autocomplete',
+    'access callback' => 'user_access',
+    'access arguments' => array('access user profiles'),
+    'type' => MENU_CALLBACK,
+  );
+
+  // Registration and login pages.
+  $items['user'] = array(
+    'title' => 'User account',
+    'page callback' => 'user_page',
+    'access callback' => TRUE,
+    'type' => MENU_CALLBACK,
+  );
+
+  $items['user/login'] = array(
+    'title' => 'Log in',
+    'access callback' => 'user_is_anonymous',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+  );
+
+  $items['user/register'] = array(
+    'title' => 'Create new account',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('user_register'),
+    'access callback' => 'user_register_access',
+    'type' => MENU_LOCAL_TASK,
+  );
+
+  $items['user/password'] = array(
+    'title' => 'Request new password',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('user_pass'),
+    'access callback' => 'user_is_anonymous',
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['user/reset/%/%/%'] = array(
+    'title' => 'Reset password',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('user_pass_reset', 2, 3, 4),
+    'access callback' => TRUE,
+    'type' => MENU_CALLBACK,
+  );
+
+  $items['user/logout'] = array(
+    'title' => 'Log out',
+    'access callback' => 'user_is_logged_in',
+    'page callback' => 'user_logout',
+    'weight' => 10,
+  );
+
+  // User administration pages.
+  $items['admin/user'] = array(
+    'title' => 'User management',
+    'description' => "Manage your site's users, groups and access to site features.",
+    'position' => 'left',
+    'page callback' => 'system_admin_menu_block_page',
+    'access arguments' => array('access administration pages'),
+  );
+  $items['admin/user/user'] = array(
+    'title' => 'Users',
+    'description' => 'List, add, and edit users.',
+    'page callback' => 'user_admin',
+    'page arguments' => array('list'),
+    'access arguments' => array('administer users'),
+  );
+  $items['admin/user/user/list'] = array(
+    'title' => 'List',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -10,
+  );
+  $items['admin/user/user/create'] = array(
+    'title' => 'Add user',
+    'page arguments' => array('create'),
+    'access arguments' => array('administer users'),
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['admin/user/settings'] = array(
+    'title' => 'User settings',
+    'description' => 'Configure default behavior of users, including registration requirements, e-mails, and user pictures.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('user_admin_settings'),
+    'access arguments' => array('administer users'),
+  );
+
+  // Permission administration pages.
+  $items['admin/user/permissions'] = array(
+    'title' => 'Permissions',
+    'description' => 'Determine access to features by selecting permissions for roles.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('user_admin_perm'),
+    'access arguments' => array('administer permissions'),
+  );
+  $items['admin/user/roles'] = array(
+    'title' => 'Roles',
+    'description' => 'List, edit, or add user roles.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('user_admin_new_role'),
+    'access arguments' => array('administer permissions'),
+  );
+  $items['admin/user/roles/edit'] = array(
+    'title' => 'Edit role',
+    'page arguments' => array('user_admin_role'),
+    'access arguments' => array('administer permissions'),
+    'type' => MENU_CALLBACK,
+  );
+
+  $items['user/%user_uid_optional'] = array(
+    'title' => 'My account',
+    'title callback' => 'user_page_title',
+    'title arguments' => array(1),
+    'page callback' => 'user_view',
+    'page arguments' => array(1),
+    'access callback' => 'user_view_access',
+    'access arguments' => array(1),
+    'parent' => '',
+  );
+
+  $items['user/%user/view'] = array(
+    'title' => 'View',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -10,
+  );
+
+  $items['user/%user/delete'] = array(
+    'title' => 'Delete',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('user_confirm_delete', 1),
+    'access callback' => 'user_access',
+    'access arguments' => array('administer users'),
+    'type' => MENU_CALLBACK,
+  );
+
+  $items['user/%user/edit'] = array(
+    'title' => 'Edit',
+    'page callback' => 'user_edit',
+    'page arguments' => array(1),
+    'access callback' => 'user_edit_access',
+    'access arguments' => array(1),
+    'type' => MENU_LOCAL_TASK,
+    'load arguments' => array('%map', '%index'),
+  );
+
+  $items['user/%user_category/edit/account'] = array(
+    'title' => 'Account',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'load arguments' => array('%map', '%index'),
+  );
+
+  $empty_account = new stdClass();
+  if (($categories = _user_categories($empty_account)) && (count($categories) > 1)) {
+    foreach ($categories as $key => $category) {
+      // 'account' is already handled by the MENU_DEFAULT_LOCAL_TASK.
+      if ($category['name'] != 'account') {
+        $items['user/%user_category/edit/' . $category['name']] = array(
+          'title callback' => 'check_plain',
+          'title arguments' => array($category['title']),
+          'page callback' => 'user_edit',
+          'page arguments' => array(1, 3),
+          'access callback' => isset($category['access callback']) ? $category['access callback'] : 'user_edit_access',
+          'access arguments' => isset($category['access arguments']) ? $category['access arguments'] : array(1),
+          'type' => MENU_LOCAL_TASK,
+          'weight' => $category['weight'],
+          'load arguments' => array('%map', '%index'),
+          'tab_parent' => 'user/%/edit',
+        );
+      }
+    }
+  }
+  return $items;
+}
