Index: modules/aggregator/aggregator.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.info,v
retrieving revision 1.11
diff -u -p -r1.11 aggregator.info
--- modules/aggregator/aggregator.info	15 Mar 2009 18:59:05 -0000	1.11
+++ modules/aggregator/aggregator.info	20 May 2009 17:36:41 -0000
@@ -11,3 +11,4 @@ files[] = aggregator.fetcher.inc
 files[] = aggregator.parser.inc
 files[] = aggregator.processor.inc
 files[] = aggregator.install
+files[] = aggregator.registry.inc
Index: modules/aggregator/aggregator.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.module,v
retrieving revision 1.409
diff -u -p -r1.409 aggregator.module
--- modules/aggregator/aggregator.module	18 May 2009 14:23:22 -0000	1.409
+++ modules/aggregator/aggregator.module	20 May 2009 17:28:58 -0000
@@ -30,206 +30,6 @@ function aggregator_help($path, $arg) {
 }
 
 /**
- * Implementation of hook_theme().
- */
-function aggregator_theme() {
-  return array(
-    'aggregator_wrapper' => array(
-      'arguments' => array('content' => NULL),
-      'template' => 'aggregator-wrapper',
-    ),
-    'aggregator_categorize_items' => array(
-      'arguments' => array('form' => NULL),
-    ),
-    'aggregator_feed_source' => array(
-      'arguments' => array('feed' => NULL),
-      '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),
-      'template' => 'aggregator-summary-items',
-    ),
-    'aggregator_summary_item' => array(
-      'arguments' => array('item' => NULL),
-      'template' => 'aggregator-summary-item',
-    ),
-    'aggregator_item' => array(
-      'arguments' => array('item' => NULL),
-      'template' => 'aggregator-item',
-    ),
-    'aggregator_page_opml' => array(
-      'arguments' => array('feeds' => NULL),
-    ),
-    'aggregator_page_rss' => array(
-      'arguments' => array('feeds' => NULL, 'category' => NULL),
-    ),
-  );
-}
-
-/**
- * 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/settings/aggregator'] = array(
-    'title' => 'Aggregator',
-    'description' => 'Configure the behavior of the feed aggregator, including when to discard feed items and how to present feed items and categories.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('aggregator_admin_form'),
-    '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	20 May 2009 17:28:58 -0000
@@ -0,0 +1,208 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Aggregator module.
+ */
+
+/**
+ * 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/settings/aggregator'] = array(
+    'title' => 'Aggregator',
+    'description' => 'Configure the behavior of the feed aggregator, including when to discard feed items and how to present feed items and categories.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('aggregator_admin_form'),
+    '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;
+}
+
+/**
+ * Implementation of hook_theme().
+ */
+function aggregator_theme() {
+  return array(
+    'aggregator_wrapper' => array(
+      'arguments' => array('content' => NULL),
+      'template' => 'aggregator-wrapper',
+    ),
+    'aggregator_categorize_items' => array(
+      'arguments' => array('form' => NULL),
+    ),
+    'aggregator_feed_source' => array(
+      'arguments' => array('feed' => NULL),
+      '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),
+      'template' => 'aggregator-summary-items',
+    ),
+    'aggregator_summary_item' => array(
+      'arguments' => array('item' => NULL),
+      'template' => 'aggregator-summary-item',
+    ),
+    'aggregator_item' => array(
+      'arguments' => array('item' => NULL),
+      'template' => 'aggregator-item',
+    ),
+    'aggregator_page_opml' => array(
+      'arguments' => array('feeds' => NULL),
+    ),
+    'aggregator_page_rss' => array(
+      'arguments' => array('feeds' => NULL, 'category' => NULL),
+    ),
+  );
+}
+
Index: modules/aggregator/tests/aggregator_test.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/aggregator/tests/aggregator_test.info,v
retrieving revision 1.1
diff -u -p -r1.1 aggregator_test.info
--- modules/aggregator/tests/aggregator_test.info	2 Apr 2009 20:50:37 -0000	1.1
+++ modules/aggregator/tests/aggregator_test.info	20 May 2009 17:36:41 -0000
@@ -6,3 +6,4 @@ version = VERSION
 core = 7.x
 files[] = aggregator_test.module
 hidden = TRUE
+files[] = aggregator_test.registry.inc
Index: modules/aggregator/tests/aggregator_test.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/aggregator/tests/aggregator_test.module,v
retrieving revision 1.2
diff -u -p -r1.2 aggregator_test.module
--- modules/aggregator/tests/aggregator_test.module	22 Apr 2009 09:45:02 -0000	1.2
+++ modules/aggregator/tests/aggregator_test.module	20 May 2009 17:28:58 -0000
@@ -2,20 +2,6 @@
 // $Id: aggregator_test.module,v 1.2 2009/04/22 09:45:02 dries Exp $
 
 /**
- * Implementation of hook_menu().
- */
-function aggregator_test_menu() {
-  $items['aggregator/test-feed'] = array(
-    'title' => 'Test feed static last modified date',
-    'description' => "A cached test feed with a static last modified date.",
-    'page callback' => 'aggregator_test_feed',
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-  return $items;
-}
-
-/**
  * Page callback. Generates a test feed and simulates last-modified and etags.
  *
  * @param $use_last_modified 
Index: modules/aggregator/tests/aggregator_test.registry.inc
===================================================================
RCS file: modules/aggregator/tests/aggregator_test.registry.inc
diff -N modules/aggregator/tests/aggregator_test.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/aggregator/tests/aggregator_test.registry.inc	20 May 2009 17:28:58 -0000
@@ -0,0 +1,22 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Aggregator_test module.
+ */
+
+/**
+ * Implementation of hook_menu().
+ */
+function aggregator_test_menu() {
+  $items['aggregator/test-feed'] = array(
+    'title' => 'Test feed static last modified date',
+    'description' => "A cached test feed with a static last modified date.",
+    'page callback' => 'aggregator_test_feed',
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+  return $items;
+}
+
Index: modules/block/block.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/block/block.info,v
retrieving revision 1.12
diff -u -p -r1.12 block.info
--- modules/block/block.info	3 Feb 2009 12:30:14 -0000	1.12
+++ modules/block/block.info	20 May 2009 17:36:41 -0000
@@ -8,3 +8,4 @@ core = 7.x
 files[] = block.module
 files[] = block.admin.inc
 files[] = block.install
+files[] = block.registry.inc
Index: modules/block/block.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/block/block.module,v
retrieving revision 1.332
diff -u -p -r1.332 block.module
--- modules/block/block.module	16 May 2009 15:23:15 -0000	1.332
+++ modules/block/block.module	20 May 2009 17:28:58 -0000
@@ -88,22 +88,6 @@ function block_help($path, $arg) {
 }
 
 /**
- * Implementation of hook_theme().
- */
-function block_theme() {
-  return array(
-    'block' => array(
-      'arguments' => array('block' => NULL),
-      'template' => 'block',
-    ),  
-    'block_admin_display_form' => array(
-      'template' => 'block-admin-display-form',
-      'arguments' => array('form' => NULL),
-    ),
-  );
-}
-
-/**
  * Implementation of hook_perm().
  */
 function block_perm() {
@@ -116,62 +100,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	20 May 2009 17:28:58 -0000
@@ -0,0 +1,80 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Block module.
+ */
+
+/**
+ * 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;
+}
+
+/**
+ * Implementation of hook_theme().
+ */
+function block_theme() {
+  return array(
+    'block' => array(
+      'arguments' => array('block' => NULL),
+      'template' => 'block',
+    ),  
+    'block_admin_display_form' => array(
+      'template' => 'block-admin-display-form',
+      'arguments' => array('form' => NULL),
+    ),
+  );
+}
+
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	20 May 2009 17:36:40 -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.319
diff -u -p -r1.319 blog.module
--- modules/blog/blog.module	3 May 2009 10:11:33 -0000	1.319
+++ modules/blog/blog.module	20 May 2009 17:28:58 -0000
@@ -113,41 +113,6 @@ function blog_node_view($node, $teaser =
 }
 
 /**
- * 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	20 May 2009 17:28:58 -0000
@@ -0,0 +1,43 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for 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;
+}
+
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	20 May 2009 17:36:40 -0000
@@ -7,3 +7,4 @@ version = VERSION
 core = 7.x
 files[] = blogapi.module
 files[] = blogapi.install
+files[] = blogapi.registry.inc
Index: modules/blogapi/blogapi.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/blogapi/blogapi.module,v
retrieving revision 1.150
diff -u -p -r1.150 blogapi.module
--- modules/blogapi/blogapi.module	9 May 2009 18:28:11 -0000	1.150
+++ modules/blogapi/blogapi.module	20 May 2009 17:28:58 -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;
-}
-
-/**
  * Implementation 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	20 May 2009 17:28:58 -0000
@@ -0,0 +1,30 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for 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	20 May 2009 17:36:40 -0000
@@ -9,3 +9,4 @@ files[] = book.module
 files[] = book.admin.inc
 files[] = book.pages.inc
 files[] = book.install
+files[] = book.registry.inc
Index: modules/book/book.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/book/book.module,v
retrieving revision 1.493
diff -u -p -r1.493 book.module
--- modules/book/book.module	9 May 2009 18:28:11 -0000	1.493
+++ modules/book/book.module	20 May 2009 17:28:58 -0000
@@ -2,41 +2,6 @@
 // $Id: book.module,v 1.493 2009/05/09 18:28:11 dries Exp $
 
 /**
- * @file
- * Allows users to create and organize related content in an outline.
- */
-
-/**
- * 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() {
@@ -96,74 +61,6 @@ function book_node_view_link($node, $tea
 }
 
 /**
- * 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	20 May 2009 17:28:58 -0000
@@ -0,0 +1,111 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Book module.
+ */
+
+/**
+ * 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;
+}
+
+/**
+ * @file
+ * Allows users to create and organize related content in an outline.
+ */
+
+/**
+ * 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',
+    ),
+  );
+}
+
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	20 May 2009 17:36:40 -0000
@@ -7,3 +7,4 @@ version = VERSION
 core = 7.x
 files[] = color.module
 files[] = color.install
+files[] = color.registry.inc
Index: modules/color/color.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/color/color.module,v
retrieving revision 1.58
diff -u -p -r1.58 color.module
--- modules/color/color.module	16 May 2009 16:08:57 -0000	1.58
+++ modules/color/color.module	20 May 2009 17:28:58 -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_FORM_ID_alter().
  */
 function color_form_system_theme_settings_alter(&$form, &$form_state) {
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	20 May 2009 17:28:58 -0000
@@ -0,0 +1,19 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for 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	20 May 2009 17:36:40 -0000
@@ -9,3 +9,4 @@ files[] = comment.module
 files[] = comment.admin.inc
 files[] = comment.pages.inc
 files[] = comment.install
+files[] = comment.registry.inc
Index: modules/comment/comment.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/comment/comment.module,v
retrieving revision 1.709
diff -u -p -r1.709 comment.module
--- modules/comment/comment.module	12 May 2009 08:37:44 -0000	1.709
+++ modules/comment/comment.module	20 May 2009 17:28:58 -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_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_form_box' => array(
-      'arguments' => array('edit' => NULL, 'title' => NULL),
-    ),
-    '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 approval 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	20 May 2009 17:28:58 -0000
@@ -0,0 +1,111 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Comment module.
+ */
+
+/**
+ * Implementation of hook_menu().
+ */
+function comment_menu() {
+  $items['admin/content/comment'] = array(
+    'title' => 'Comments',
+    'description' => 'List and edit site comments and the comment approval 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_theme().
+ */
+function comment_theme() {
+  return array(
+    'comment_block' => array(
+      'arguments' => array(),
+    ),
+    '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_form_box' => array(
+      'arguments' => array('edit' => NULL, 'title' => NULL),
+    ),
+    '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),
+    ),
+  );
+}
+
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	20 May 2009 17:36:40 -0000
@@ -8,3 +8,4 @@ files[] = contact.module
 files[] = contact.admin.inc
 files[] = contact.pages.inc
 files[] = contact.install
+files[] = contact.registry.inc
Index: modules/contact/contact.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/contact/contact.module,v
retrieving revision 1.114
diff -u -p -r1.114 contact.module
--- modules/contact/contact.module	10 May 2009 18:24:06 -0000	1.114
+++ modules/contact/contact.module	20 May 2009 17:28:58 -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_personal_page',
-    'page arguments' => array(1),
-    'type' => MENU_LOCAL_TASK,
-    'access callback' => '_contact_personal_tab_access',
-    'access arguments' => array(1),
-    'weight' => 2,
-  );
-  return $items;
-}
-
-/**
  * Determine permission to a user's personal contact form.
  */
 function _contact_personal_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	20 May 2009 17:28:58 -0000
@@ -0,0 +1,71 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for 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_personal_page',
+    'page arguments' => array(1),
+    'type' => MENU_LOCAL_TASK,
+    'access callback' => '_contact_personal_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	20 May 2009 17:36:40 -0000
@@ -7,3 +7,4 @@ core = 7.x
 files[] = dblog.module
 files[] = dblog.admin.inc
 files[] = dblog.install
+files[] = dblog.registry.inc
Index: modules/dblog/dblog.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/dblog/dblog.module,v
retrieving revision 1.37
diff -u -p -r1.37 dblog.module
--- modules/dblog/dblog.module	13 Apr 2009 08:48:58 -0000	1.37
+++ modules/dblog/dblog.module	20 May 2009 17:28:58 -0000
@@ -27,52 +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/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	20 May 2009 17:28:58 -0000
@@ -0,0 +1,54 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Dblog module.
+ */
+
+/**
+ * Implementation of hook_menu().
+ */
+function dblog_menu() {
+  $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;
+}
+
+/**
+ * Implementation of hook_theme().
+ */
+function dblog_theme() {
+  return array(
+    'dblog_filters' => array(
+      'arguments' => array('form' => NULL),
+    ),
+  );
+}
+
Index: modules/field/field.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/field.info,v
retrieving revision 1.2
diff -u -p -r1.2 field.info
--- modules/field/field.info	10 May 2009 18:56:56 -0000	1.2
+++ modules/field/field.info	20 May 2009 17:36:40 -0000
@@ -14,3 +14,4 @@ files[] = field.form.inc
 files[] = field.autoload.inc
 dependencies[] = field_sql_storage
 required = TRUE
+files[] = field.registry.inc
Index: modules/field/field.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/field.module,v
retrieving revision 1.7
diff -u -p -r1.7 field.module
--- modules/field/field.module	26 Mar 2009 13:31:24 -0000	1.7
+++ modules/field/field.module	20 May 2009 17:28:58 -0000
@@ -120,47 +120,6 @@ function field_init() {
 }
 
 /**
- * Implementation of hook_menu().
- */
-function field_menu() {
-  $items = array();
-
-  // Callback for AHAH add more buttons.
-  $items['field/js_add_more'] = array(
-    'page callback' => 'field_add_more_js',
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-
-  return $items;
-}
-
-/**
- * Implementation of hook_theme().
- */
-function field_theme() {
-  $path = drupal_get_path('module', 'field') . '/theme';
-
-  return array(
-    'field' => array(
-      'template' => 'field',
-      'arguments' => array('element' => NULL),
-      'path' => $path,
-    ),
-    // TODO D7 : do we need exclude in core? See [#367215].
-    // This is just adding '#post_render' => array('field_wrapper_post_render')
-    // at the right places in the render array generated by field_default_view().
-    // Can be done in hook_field_attach_post_view if we want.
-    'field_exclude' => array(
-      'arguments' => array('content' => NULL, 'object' => array(), 'context' => NULL),
-    ),
-    'field_multiple_value_form' => array(
-      'arguments' => array('element' => NULL),
-    ),
-  );
-}
-
-/**
  * Implementation of hook_modules_installed().
  */
 function field_modules_installed($modules) {
Index: modules/field/field.registry.inc
===================================================================
RCS file: modules/field/field.registry.inc
diff -N modules/field/field.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/field/field.registry.inc	20 May 2009 17:28:58 -0000
@@ -0,0 +1,49 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Field module.
+ */
+
+/**
+ * Implementation of hook_menu().
+ */
+function field_menu() {
+  $items = array();
+
+  // Callback for AHAH add more buttons.
+  $items['field/js_add_more'] = array(
+    'page callback' => 'field_add_more_js',
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+
+  return $items;
+}
+
+/**
+ * Implementation of hook_theme().
+ */
+function field_theme() {
+  $path = drupal_get_path('module', 'field') . '/theme';
+
+  return array(
+    'field' => array(
+      'template' => 'field',
+      'arguments' => array('element' => NULL),
+      'path' => $path,
+    ),
+    // TODO D7 : do we need exclude in core? See [#367215].
+    // This is just adding '#post_render' => array('field_wrapper_post_render')
+    // at the right places in the render array generated by field_default_view().
+    // Can be done in hook_field_attach_post_view if we want.
+    'field_exclude' => array(
+      'arguments' => array('content' => NULL, 'object' => array(), 'context' => NULL),
+    ),
+    'field_multiple_value_form' => array(
+      'arguments' => array('element' => NULL),
+    ),
+  );
+}
+
Index: modules/field/modules/list/list.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/modules/list/list.info,v
retrieving revision 1.3
diff -u -p -r1.3 list.info
--- modules/field/modules/list/list.info	10 May 2009 18:56:56 -0000	1.3
+++ modules/field/modules/list/list.info	20 May 2009 17:36:40 -0000
@@ -5,3 +5,4 @@ package = Core - fields
 version = VERSION
 core = 7.x
 files[]=list.module
+files[] = list.registry.inc
Index: modules/field/modules/list/list.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/modules/list/list.module,v
retrieving revision 1.5
diff -u -p -r1.5 list.module
--- modules/field/modules/list/list.module	20 May 2009 09:48:47 -0000	1.5
+++ modules/field/modules/list/list.module	20 May 2009 17:28:58 -0000
@@ -2,25 +2,6 @@
 // $Id: list.module,v 1.5 2009/05/20 09:48:47 dries Exp $
 
 /**
- * @file
- * Defines list field types that can be used with the Options module.
- */
-
-/**
- * Implementation of hook_theme().
- */
-function list_theme() {
-  return array(
-    'field_formatter_list_default' => array(
-      'arguments' => array('element' => NULL),
-    ),
-    'field_formatter_list_key' => array(
-      'arguments' => array('element' => NULL),
-    ),
-  );
-}
-
-/**
  * Implementation of hook_field_info().
  */
 function list_field_info() {
Index: modules/field/modules/list/list.registry.inc
===================================================================
RCS file: modules/field/modules/list/list.registry.inc
diff -N modules/field/modules/list/list.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/field/modules/list/list.registry.inc	20 May 2009 17:28:58 -0000
@@ -0,0 +1,27 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for List module.
+ */
+
+/**
+ * @file
+ * Defines list field types that can be used with the Options module.
+ */
+
+/**
+ * Implementation of hook_theme().
+ */
+function list_theme() {
+  return array(
+    'field_formatter_list_default' => array(
+      'arguments' => array('element' => NULL),
+    ),
+    'field_formatter_list_key' => array(
+      'arguments' => array('element' => NULL),
+    ),
+  );
+}
+
Index: modules/field/modules/number/number.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/modules/number/number.info,v
retrieving revision 1.3
diff -u -p -r1.3 number.info
--- modules/field/modules/number/number.info	10 May 2009 18:56:56 -0000	1.3
+++ modules/field/modules/number/number.info	20 May 2009 17:36:40 -0000
@@ -5,3 +5,4 @@ package = Core - fields
 version = VERSION
 core = 7.x
 files[]=number.module
+files[] = number.registry.inc
Index: modules/field/modules/number/number.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/modules/number/number.module,v
retrieving revision 1.8
diff -u -p -r1.8 number.module
--- modules/field/modules/number/number.module	20 May 2009 09:48:47 -0000	1.8
+++ modules/field/modules/number/number.module	20 May 2009 17:28:58 -0000
@@ -2,23 +2,6 @@
 // $Id: number.module,v 1.8 2009/05/20 09:48:47 dries Exp $
 
 /**
- * @file
- * Defines numeric field types.
- */
-
-/**
- * Implementation of hook_theme().
- */
-function number_theme() {
-  return array(
-    'number' => array('arguments' => array('element' => NULL)),
-    'field_formatter_number_integer' => array('arguments' => array('element' => NULL), 'function' => 'theme_field_formatter_number'),
-    'field_formatter_number_decimal' => array('arguments' => array('element' => NULL), 'function' => 'theme_field_formatter_number'),
-    'field_formatter_number_unformatted' => array('arguments' => array('element' => NULL)),
-  );
-}
-
-/**
  * Implementation of hook_field_info().
  */
 function number_field_info() {
Index: modules/field/modules/number/number.registry.inc
===================================================================
RCS file: modules/field/modules/number/number.registry.inc
diff -N modules/field/modules/number/number.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/field/modules/number/number.registry.inc	20 May 2009 17:28:58 -0000
@@ -0,0 +1,25 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Number module.
+ */
+
+/**
+ * @file
+ * Defines numeric field types.
+ */
+
+/**
+ * Implementation of hook_theme().
+ */
+function number_theme() {
+  return array(
+    'number' => array('arguments' => array('element' => NULL)),
+    'field_formatter_number_integer' => array('arguments' => array('element' => NULL), 'function' => 'theme_field_formatter_number'),
+    'field_formatter_number_decimal' => array('arguments' => array('element' => NULL), 'function' => 'theme_field_formatter_number'),
+    'field_formatter_number_unformatted' => array('arguments' => array('element' => NULL)),
+  );
+}
+
Index: modules/field/modules/options/options.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/modules/options/options.info,v
retrieving revision 1.2
diff -u -p -r1.2 options.info
--- modules/field/modules/options/options.info	10 May 2009 18:56:57 -0000	1.2
+++ modules/field/modules/options/options.info	20 May 2009 17:36:40 -0000
@@ -5,3 +5,4 @@ package = Core - fields
 version = VERSION
 core = 7.x
 files[]=options.module
+files[] = options.registry.inc
Index: modules/field/modules/options/options.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/modules/options/options.module,v
retrieving revision 1.5
diff -u -p -r1.5 options.module
--- modules/field/modules/options/options.module	12 Apr 2009 02:18:51 -0000	1.5
+++ modules/field/modules/options/options.module	20 May 2009 17:28:58 -0000
@@ -2,31 +2,6 @@
 // $Id: options.module,v 1.5 2009/04/12 02:18:51 webchick Exp $
 
 /**
- * @file
- * Defines selection, check box and radio button widgets for text and numeric fields.
- */
-
-/**
- * Implementation of hook_theme().
- */
-function options_theme() {
-  return array(
-    'options_select' => array(
-      'arguments' => array('element' => NULL),
-    ),
-    'options_buttons' => array(
-      'arguments' => array('element' => NULL),
-    ),
-    'options_onoff' => array(
-      'arguments' => array('element' => NULL),
-    ),
-    'options_none' => array(
-      'arguments' => array('widget_type' => NULL, 'field_name' => NULL, 'node_type' => NULL),
-      ),
-  );
-}
-
-/**
  * Implementation of hook_field_widget_info().
  *
  * We need custom handling of multiple values because we need
Index: modules/field/modules/options/options.registry.inc
===================================================================
RCS file: modules/field/modules/options/options.registry.inc
diff -N modules/field/modules/options/options.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/field/modules/options/options.registry.inc	20 May 2009 17:28:58 -0000
@@ -0,0 +1,33 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Options module.
+ */
+
+/**
+ * @file
+ * Defines selection, check box and radio button widgets for text and numeric fields.
+ */
+
+/**
+ * Implementation of hook_theme().
+ */
+function options_theme() {
+  return array(
+    'options_select' => array(
+      'arguments' => array('element' => NULL),
+    ),
+    'options_buttons' => array(
+      'arguments' => array('element' => NULL),
+    ),
+    'options_onoff' => array(
+      'arguments' => array('element' => NULL),
+    ),
+    'options_none' => array(
+      'arguments' => array('widget_type' => NULL, 'field_name' => NULL, 'node_type' => NULL),
+      ),
+  );
+}
+
Index: modules/field/modules/text/text.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/modules/text/text.info,v
retrieving revision 1.3
diff -u -p -r1.3 text.info
--- modules/field/modules/text/text.info	10 May 2009 18:56:57 -0000	1.3
+++ modules/field/modules/text/text.info	20 May 2009 17:36:40 -0000
@@ -5,3 +5,4 @@ package = Core - fields
 version = VERSION
 core = 7.x
 files[]=text.module
+files[] = text.registry.inc
Index: modules/field/modules/text/text.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/modules/text/text.module,v
retrieving revision 1.7
diff -u -p -r1.7 text.module
--- modules/field/modules/text/text.module	20 May 2009 09:48:47 -0000	1.7
+++ modules/field/modules/text/text.module	20 May 2009 17:28:58 -0000
@@ -2,34 +2,6 @@
 // $Id: text.module,v 1.7 2009/05/20 09:48:47 dries Exp $
 
 /**
- * @file
- * Defines simple text field types.
- */
-
-/**
- * Implementation of hook_theme().
- */
-function text_theme() {
-  return array(
-    'text_textarea' => array(
-      'arguments' => array('element' => NULL),
-    ),
-    'text_textfield' => array(
-      'arguments' => array('element' => NULL),
-    ),
-    'field_formatter_text_default' => array(
-      'arguments' => array('element' => NULL),
-    ),
-    'field_formatter_text_plain' => array(
-      'arguments' => array('element' => NULL),
-    ),
-    'field_formatter_text_trimmed' => array(
-      'arguments' => array('element' => NULL),
-    ),
-  );
-}
-
-/**
  * Implementation of hook_field_info().
  */
 function text_field_info() {
Index: modules/field/modules/text/text.registry.inc
===================================================================
RCS file: modules/field/modules/text/text.registry.inc
diff -N modules/field/modules/text/text.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/field/modules/text/text.registry.inc	20 May 2009 17:28:58 -0000
@@ -0,0 +1,36 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Text module.
+ */
+
+/**
+ * @file
+ * Defines simple text field types.
+ */
+
+/**
+ * Implementation of hook_theme().
+ */
+function text_theme() {
+  return array(
+    'text_textarea' => array(
+      'arguments' => array('element' => NULL),
+    ),
+    'text_textfield' => array(
+      'arguments' => array('element' => NULL),
+    ),
+    'field_formatter_text_default' => array(
+      'arguments' => array('element' => NULL),
+    ),
+    'field_formatter_text_plain' => array(
+      'arguments' => array('element' => NULL),
+    ),
+    'field_formatter_text_trimmed' => array(
+      'arguments' => array('element' => NULL),
+    ),
+  );
+}
+
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	20 May 2009 17:36:40 -0000
@@ -9,3 +9,4 @@ files[] = filter.admin.inc
 files[] = filter.pages.inc
 files[] = filter.install
 required = TRUE
+files[] = filter.registry.inc
Index: modules/filter/filter.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/filter/filter.module,v
retrieving revision 1.250
diff -u -p -r1.250 filter.module
--- modules/filter/filter.module	14 May 2009 08:23:14 -0000	1.250
+++ modules/filter/filter.module	20 May 2009 17:28:58 -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),
-    ),
-    'filter_admin_order' => array(
-      'arguments' => array('form' => NULL),
-    ),
-    'filter_tips' => array(
-      'arguments' => array('tips' => NULL, 'long' => FALSE),
-    ),
-    'filter_tips_more_info' => array(
-      'arguments' => array(),
-    ),
-    'filter_guidelines' => array(
-      'arguments' => array('format' => NULL),
-    ),
-  );
-}
-
-/**
- * Implementation of hook_menu().
- */
-function filter_menu() {
-  $items['admin/settings/filter'] = array(
-    'title' => 'Text 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/filter/list'] = array(
-    'title' => 'List',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-  );
-  $items['admin/settings/filter/add'] = array(
-    'title' => 'Add text format',
-    'page callback' => 'filter_admin_format_page',
-    'access arguments' => array('administer filters'),
-    'type' => MENU_LOCAL_TASK,
-    'weight' => 1,
-  );
-  $items['admin/settings/filter/delete'] = array(
-    'title' => 'Delete text 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/filter/%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/filter/%filter_format/edit'] = array(
-    'title' => 'Edit',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-    'weight' => 0,
-  );
-  $items['admin/settings/filter/%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/filter/%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	20 May 2009 17:28:58 -0000
@@ -0,0 +1,98 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Filter module.
+ */
+
+/**
+ * Implementation of hook_menu().
+ */
+function filter_menu() {
+  $items['admin/settings/filter'] = array(
+    'title' => 'Text 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/filter/list'] = array(
+    'title' => 'List',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+  );
+  $items['admin/settings/filter/add'] = array(
+    'title' => 'Add text format',
+    'page callback' => 'filter_admin_format_page',
+    'access arguments' => array('administer filters'),
+    'type' => MENU_LOCAL_TASK,
+    'weight' => 1,
+  );
+  $items['admin/settings/filter/delete'] = array(
+    'title' => 'Delete text 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/filter/%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/filter/%filter_format/edit'] = array(
+    'title' => 'Edit',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => 0,
+  );
+  $items['admin/settings/filter/%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/filter/%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;
+}
+
+/**
+ * Implementation of hook_theme().
+ */
+function filter_theme() {
+  return array(
+    'filter_admin_overview' => array(
+      'arguments' => array('form' => NULL),
+    ),
+    'filter_admin_order' => array(
+      'arguments' => array('form' => NULL),
+    ),
+    'filter_tips' => array(
+      'arguments' => array('tips' => NULL, 'long' => FALSE),
+    ),
+    'filter_tips_more_info' => array(
+      'arguments' => array(),
+    ),
+    'filter_guidelines' => array(
+      'arguments' => array('format' => NULL),
+    ),
+  );
+}
+
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	20 May 2009 17:36:40 -0000
@@ -10,3 +10,4 @@ files[] = forum.module
 files[] = forum.admin.inc
 files[] = forum.pages.inc
 files[] = forum.install
+files[] = forum.registry.inc
Index: modules/forum/forum.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/forum/forum.module,v
retrieving revision 1.492
diff -u -p -r1.492 forum.module
--- modules/forum/forum.module	9 May 2009 18:28:12 -0000	1.492
+++ modules/forum/forum.module	20 May 2009 17:28:58 -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	20 May 2009 17:28:58 -0000
@@ -0,0 +1,110 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Forum module.
+ */
+
+/**
+ * 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_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),
+    ),
+  );
+}
+
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	20 May 2009 17:36:40 -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	20 May 2009 17:28:58 -0000
@@ -2,35 +2,6 @@
 // $Id: help.module,v 1.81 2008/05/06 12:18:47 dries Exp $
 
 /**
- * @file
- * Manages displaying online help.
- */
-
-/**
- * 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	20 May 2009 17:28:58 -0000
@@ -0,0 +1,37 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Help module.
+ */
+
+/**
+ * @file
+ * Manages displaying online help.
+ */
+
+/**
+ * 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	20 May 2009 17:36:40 -0000
@@ -6,3 +6,4 @@ version = VERSION
 core = 7.x
 files[] = locale.module
 files[] = locale.install
+files[] = locale.registry.inc
Index: modules/locale/locale.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/locale/locale.module,v
retrieving revision 1.238
diff -u -p -r1.238 locale.module
--- modules/locale/locale.module	31 Mar 2009 02:02:21 -0000	1.238
+++ modules/locale/locale.module	20 May 2009 17:28:58 -0000
@@ -66,113 +66,6 @@ function locale_help($path, $arg) {
 }
 
 /**
- * Implementation of hook_menu().
- */
-function locale_menu() {
-  // Manage languages
-  $items['admin/international'] = array(
-   'title' => 'International',
-   'description' => 'Localization and translation.',
-   'position' => 'left',
-   'weight' => -7,
-   'page callback' => 'system_admin_menu_block_page',
-   'access arguments' => array('access administration pages'),
-  );
-  $items['admin/international/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/international/language/overview'] = array(
-    'title' => 'List',
-    'weight' => 0,
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-  );
-  $items['admin/international/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/international/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/international/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/international/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/international/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/international/translate/overview'] = array(
-    'title' => 'Overview',
-    'weight' => 0,
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-  );
-  $items['admin/international/translate/translate'] = array(
-    'title' => 'Translate',
-    'weight' => 10,
-    'type' => MENU_LOCAL_TASK,
-    'page callback' => 'locale_translate_seek_screen', // search results and form concatenated
-    'access arguments' => array('translate interface'),
-  );
-  $items['admin/international/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/international/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/international/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/international/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() {
@@ -314,20 +207,6 @@ function locale_form_alter(&$form, &$for
   }
 }
 
-/**
- * Implementation of hook_theme().
- */
-function locale_theme() {
-  return array(
-    'locale_languages_overview_form' => array(
-      'arguments' => array('form' => array()),
-    ),
-    'locale_translation_filters' => 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	20 May 2009 17:28:58 -0000
@@ -0,0 +1,129 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Locale module.
+ */
+
+/**
+ * Implementation of hook_menu().
+ */
+function locale_menu() {
+  // Manage languages
+  $items['admin/international'] = array(
+   'title' => 'International',
+   'description' => 'Localization and translation.',
+   'position' => 'left',
+   'weight' => -7,
+   'page callback' => 'system_admin_menu_block_page',
+   'access arguments' => array('access administration pages'),
+  );
+  $items['admin/international/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/international/language/overview'] = array(
+    'title' => 'List',
+    'weight' => 0,
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+  );
+  $items['admin/international/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/international/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/international/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/international/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/international/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/international/translate/overview'] = array(
+    'title' => 'Overview',
+    'weight' => 0,
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+  );
+  $items['admin/international/translate/translate'] = array(
+    'title' => 'Translate',
+    'weight' => 10,
+    'type' => MENU_LOCAL_TASK,
+    'page callback' => 'locale_translate_seek_screen', // search results and form concatenated
+    'access arguments' => array('translate interface'),
+  );
+  $items['admin/international/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/international/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/international/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/international/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;
+}
+
+/**
+ * Implementation of hook_theme().
+ */
+function locale_theme() {
+  return array(
+    'locale_languages_overview_form' => array(
+      'arguments' => array('form' => array()),
+    ),
+    'locale_translation_filters' => array(
+      'arguments' => array('form' => array()),
+    ),
+  );
+}
+
Index: modules/locale/tests/locale_test.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/locale/tests/locale_test.info,v
retrieving revision 1.2
diff -u -p -r1.2 locale_test.info
--- modules/locale/tests/locale_test.info	26 Apr 2009 15:14:55 -0000	1.2
+++ modules/locale/tests/locale_test.info	20 May 2009 17:36:40 -0000
@@ -6,3 +6,4 @@ package = Testing
 files[] = locale_test.module
 version = VERSION
 hidden = TRUE
+files[] = locale_test.registry.inc
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	20 May 2009 17:36:40 -0000
@@ -7,3 +7,4 @@ core = 7.x
 files[] = menu.module
 files[] = menu.admin.inc
 files[] = menu.install
+files[] = menu.registry.inc
Index: modules/menu/menu.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/menu/menu.module,v
retrieving revision 1.187
diff -u -p -r1.187 menu.module
--- modules/menu/menu.module	14 May 2009 08:23:15 -0000	1.187
+++ modules/menu/menu.module	20 May 2009 17:28:58 -0000
@@ -46,110 +46,6 @@ function menu_perm() {
 }
 
 /**
- * Implementation of hook_menu().
- */
-function menu_menu() {
-  $items['admin/build/menu'] = array(
-    'title' => 'Menus',
-    'description' => 'Add new menus to your site, edit existing menus, and rename and reorganize menu links.',
-    '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 links',
-    'weight' => -10,
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-  );
-  $items['admin/build/menu-customize/%menu/add'] = array(
-    'title' => 'Add link',
-    '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 link',
-    '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 link',
-    '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 link',
-    'page callback' => 'menu_item_delete_page',
-    'page arguments' => array(4),
-    'access arguments' => array('administer menu'),
-    'type' => MENU_CALLBACK,
-  );
-  return $items;
-}
-
-/**
- * Implementation of hook_theme().
- */
-function menu_theme() {
-  return array(
-    'menu_overview_form' => array(
-      'arguments' => array('form' => NULL),
-    ),
-    'menu_admin_overview' => array(
-      'arguments' => array('title' => NULL, 'name' => NULL, 'description' => 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	20 May 2009 17:28:58 -0000
@@ -0,0 +1,112 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Menu module.
+ */
+
+/**
+ * Implementation of hook_menu().
+ */
+function menu_menu() {
+  $items['admin/build/menu'] = array(
+    'title' => 'Menus',
+    'description' => 'Add new menus to your site, edit existing menus, and rename and reorganize menu links.',
+    '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 links',
+    'weight' => -10,
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+  );
+  $items['admin/build/menu-customize/%menu/add'] = array(
+    'title' => 'Add link',
+    '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 link',
+    '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 link',
+    '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 link',
+    'page callback' => 'menu_item_delete_page',
+    'page arguments' => array(4),
+    'access arguments' => array('administer menu'),
+    'type' => MENU_CALLBACK,
+  );
+  return $items;
+}
+
+/**
+ * Implementation of hook_theme().
+ */
+function menu_theme() {
+  return array(
+    'menu_overview_form' => array(
+      'arguments' => array('form' => NULL),
+    ),
+    'menu_admin_overview' => array(
+      'arguments' => array('title' => NULL, 'name' => NULL, 'description' => NULL),
+    ),
+  );
+}
+
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	20 May 2009 17:36:40 -0000
@@ -10,3 +10,4 @@ files[] = node.admin.inc
 files[] = node.pages.inc
 files[] = node.install
 required = TRUE
+files[] = node.registry.inc
Index: modules/node/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.module,v
retrieving revision 1.1050
diff -u -p -r1.1050 node.module
--- modules/node/node.module	20 May 2009 05:39:45 -0000	1.1050
+++ modules/node/node.module	20 May 2009 17:28:58 -0000
@@ -91,54 +91,6 @@ function node_help($path, $arg) {
 }
 
 /**
- * Implementation of hook_theme().
- */
-function node_theme() {
-  return array(
-    'node' => array(
-      'arguments' => array('elements' => NULL),
-      '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),
-    ),
-    'node_filters' => array(
-      'arguments' => array('form' => NULL),
-    ),
-    'node_admin_nodes' => array(
-      'arguments' => array('form' => NULL),
-    ),
-    'node_add_list' => array(
-      'arguments' => array('content' => NULL),
-    ),
-    'node_form' => array(
-      'arguments' => array('form' => NULL),
-    ),
-    'node_preview' => array(
-      'arguments' => array('node' => NULL),
-    ),
-    '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),
-    ),
-    'node_links' => array(
-      'arguments' => array('element' => NULL),
-    ),
-  );
-}
-
-/**
  * Implementation of hook_cron().
  */
 function node_cron() {
@@ -1725,174 +1677,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_access_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,
-    'menu_name' => 'management',
-  );
-  $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, 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	20 May 2009 17:28:58 -0000
@@ -0,0 +1,224 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Node module.
+ */
+
+/**
+ * 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_access_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,
+    'menu_name' => 'management',
+  );
+  $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, 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;
+}
+
+/**
+ * Implementation of hook_theme().
+ */
+function node_theme() {
+  return array(
+    'node' => array(
+      'arguments' => array('elements' => NULL),
+      '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),
+    ),
+    'node_filters' => array(
+      'arguments' => array('form' => NULL),
+    ),
+    'node_admin_nodes' => array(
+      'arguments' => array('form' => NULL),
+    ),
+    'node_add_list' => array(
+      'arguments' => array('content' => NULL),
+    ),
+    'node_form' => array(
+      'arguments' => array('form' => NULL),
+    ),
+    'node_preview' => array(
+      'arguments' => array('node' => NULL),
+    ),
+    '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),
+    ),
+    'node_links' => array(
+      'arguments' => array('element' => NULL),
+    ),
+  );
+}
+
Index: modules/node/tests/node_test.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/tests/node_test.info,v
retrieving revision 1.1
diff -u -p -r1.1 node_test.info
--- modules/node/tests/node_test.info	2 Apr 2009 20:47:54 -0000	1.1
+++ modules/node/tests/node_test.info	20 May 2009 17:36:40 -0000
@@ -6,3 +6,4 @@ version = VERSION
 core = 7.x
 files[] = node_test.module
 hidden = TRUE
+files[] = node_test.registry.inc
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	20 May 2009 17:36:40 -0000
@@ -9,3 +9,4 @@ files[] = openid.inc
 files[] = openid.pages.inc
 files[] = xrds.inc
 files[] = openid.install
+files[] = openid.registry.inc
Index: modules/openid/openid.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/openid/openid.module,v
retrieving revision 1.45
diff -u -p -r1.45 openid.module
--- modules/openid/openid.module	29 Apr 2009 07:29:59 -0000	1.45
+++ modules/openid/openid.module	20 May 2009 17:28:58 -0000
@@ -2,40 +2,6 @@
 // $Id: openid.module,v 1.45 2009/04/29 07:29:59 dries Exp $
 
 /**
- * @file
- * Implement OpenID Relying Party support for Drupal
- */
-
-/**
- * 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	20 May 2009 17:28:58 -0000
@@ -0,0 +1,42 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Openid module.
+ */
+
+/**
+ * @file
+ * Implement OpenID Relying Party support for Drupal
+ */
+
+/**
+ * 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/openid/tests/openid_test.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/openid/tests/openid_test.info,v
retrieving revision 1.1
diff -u -p -r1.1 openid_test.info
--- modules/openid/tests/openid_test.info	8 May 2009 21:44:48 -0000	1.1
+++ modules/openid/tests/openid_test.info	20 May 2009 17:36:40 -0000
@@ -8,3 +8,4 @@ files[] = openid_test.install
 files[] = openid_test.module
 dependencies[] = openid
 hidden = TRUE
+files[] = openid_test.registry.inc
Index: modules/openid/tests/openid_test.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/openid/tests/openid_test.module,v
retrieving revision 1.1
diff -u -p -r1.1 openid_test.module
--- modules/openid/tests/openid_test.module	8 May 2009 21:44:48 -0000	1.1
+++ modules/openid/tests/openid_test.module	20 May 2009 17:28:58 -0000
@@ -2,69 +2,6 @@
 // $Id: openid_test.module,v 1.1 2009/05/08 21:44:48 dries Exp $
 
 /**
- * @file
- * Dummy OpenID Provider used with SimpleTest.
- *
- * The provider simply responds positively to all authentication requests. In
- * addition to a Provider Endpoint (a URL used for Drupal to communicate with
- * the provider using the OpenID Authentication protocol) the module provides
- * URLs used by the various discovery mechanisms.
- *
- * When a user enters an OpenID identity, the Relying Party (in the testing
- * scenario, this is the OpenID module) looks up the URL of the Provider
- * Endpoint using one of several discovery mechanisms. The Relying Party then
- * redirects the user to Provider Endpoint. The provider verifies the user's
- * identity and redirects the user back to the Relying Party accompanied by a
- * signed message confirming the identity. Before redirecting to a provider for
- * the first time, the Relying Party fetches a secret MAC key from the provider
- * by doing a direct "associate" HTTP request to the Provider Endpoint. This
- * key is used for verifying the signed messages from the provider.
- */
-
-/**
- * Implementation of hook_menu().
- */
-function openid_test_menu() {
-  $items['openid-test/yadis/xrds'] = array(
-    'title' => 'XRDS service document',
-    'page callback' => 'openid_test_yadis_xrds',
-    'access callback' => TRUE,
-    'type' => MENU_CALLBACK,
-  );
-  $items['openid-test/yadis/x-xrds-location'] = array(
-    'title' => 'Yadis discovery using X-XRDS-Location header',
-    'page callback' => 'openid_test_yadis_x_xrds_location',
-    'access callback' => TRUE,
-    'type' => MENU_CALLBACK,
-  );
-  $items['openid-test/yadis/http-equiv'] = array(
-    'title' => 'Yadis discovery using <meta http-equiv="X-XRDS-Location" ...>',
-    'page callback' => 'openid_test_yadis_http_equiv',
-    'access callback' => TRUE,
-    'type' => MENU_CALLBACK,
-  );
-  $items['openid-test/html/openid1'] = array(
-    'title' => 'HTML-based discovery using <link rel="openid.server" ...>',
-    'page callback' => 'openid_test_html_openid1',
-    'access callback' => TRUE,
-    'type' => MENU_CALLBACK,
-  );
-  $items['openid-test/html/openid2'] = array(
-    'title' => 'HTML-based discovery using <link rel="openid2.provider" ...>',
-    'page callback' => 'openid_test_html_openid2',
-    'access callback' => TRUE,
-    'type' => MENU_CALLBACK,
-  );
-  $items['openid-test/endpoint'] = array(
-    'title' => 'OpenID Provider Endpoint',
-    'page callback' => 'openid_test_endpoint',
-    'access callback' => TRUE,
-    'type' => MENU_CALLBACK,
-  );
-  return $items;
-}
-
-/**
  * Menu callback; XRDS document that references the OP Endpoint URL.
  */
 function openid_test_yadis_xrds() {
Index: modules/openid/tests/openid_test.registry.inc
===================================================================
RCS file: modules/openid/tests/openid_test.registry.inc
diff -N modules/openid/tests/openid_test.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/openid/tests/openid_test.registry.inc	20 May 2009 17:28:58 -0000
@@ -0,0 +1,71 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Openid_test module.
+ */
+
+/**
+ * @file
+ * Dummy OpenID Provider used with SimpleTest.
+ *
+ * The provider simply responds positively to all authentication requests. In
+ * addition to a Provider Endpoint (a URL used for Drupal to communicate with
+ * the provider using the OpenID Authentication protocol) the module provides
+ * URLs used by the various discovery mechanisms.
+ *
+ * When a user enters an OpenID identity, the Relying Party (in the testing
+ * scenario, this is the OpenID module) looks up the URL of the Provider
+ * Endpoint using one of several discovery mechanisms. The Relying Party then
+ * redirects the user to Provider Endpoint. The provider verifies the user's
+ * identity and redirects the user back to the Relying Party accompanied by a
+ * signed message confirming the identity. Before redirecting to a provider for
+ * the first time, the Relying Party fetches a secret MAC key from the provider
+ * by doing a direct "associate" HTTP request to the Provider Endpoint. This
+ * key is used for verifying the signed messages from the provider.
+ */
+
+/**
+ * Implementation of hook_menu().
+ */
+function openid_test_menu() {
+  $items['openid-test/yadis/xrds'] = array(
+    'title' => 'XRDS service document',
+    'page callback' => 'openid_test_yadis_xrds',
+    'access callback' => TRUE,
+    'type' => MENU_CALLBACK,
+  );
+  $items['openid-test/yadis/x-xrds-location'] = array(
+    'title' => 'Yadis discovery using X-XRDS-Location header',
+    'page callback' => 'openid_test_yadis_x_xrds_location',
+    'access callback' => TRUE,
+    'type' => MENU_CALLBACK,
+  );
+  $items['openid-test/yadis/http-equiv'] = array(
+    'title' => 'Yadis discovery using <meta http-equiv="X-XRDS-Location" ...>',
+    'page callback' => 'openid_test_yadis_http_equiv',
+    'access callback' => TRUE,
+    'type' => MENU_CALLBACK,
+  );
+  $items['openid-test/html/openid1'] = array(
+    'title' => 'HTML-based discovery using <link rel="openid.server" ...>',
+    'page callback' => 'openid_test_html_openid1',
+    'access callback' => TRUE,
+    'type' => MENU_CALLBACK,
+  );
+  $items['openid-test/html/openid2'] = array(
+    'title' => 'HTML-based discovery using <link rel="openid2.provider" ...>',
+    'page callback' => 'openid_test_html_openid2',
+    'access callback' => TRUE,
+    'type' => MENU_CALLBACK,
+  );
+  $items['openid-test/endpoint'] = array(
+    'title' => 'OpenID Provider Endpoint',
+    'page callback' => 'openid_test_endpoint',
+    'access callback' => TRUE,
+    '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	20 May 2009 17:36:40 -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.157
diff -u -p -r1.157 path.module
--- modules/path/path.module	10 May 2009 16:50:19 -0000	1.157
+++ modules/path/path.module	20 May 2009 17:28: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	20 May 2009 17:28:58 -0000
@@ -0,0 +1,46 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for 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/php/php.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/php/php.info,v
retrieving revision 1.6
diff -u -p -r1.6 php.info
--- modules/php/php.info	11 Oct 2008 02:32:56 -0000	1.6
+++ modules/php/php.info	20 May 2009 17:36:40 -0000
@@ -6,3 +6,4 @@ version = VERSION
 core = 7.x
 files[] = php.module
 files[] = php.install
+files[] = php.registry.inc
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	20 May 2009 17:36:40 -0000
@@ -7,3 +7,4 @@ core = 7.x
 files[] = poll.module
 files[] = poll.pages.inc
 files[] = poll.install
+files[] = poll.registry.inc
Index: modules/poll/poll.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/poll/poll.module,v
retrieving revision 1.294
diff -u -p -r1.294 poll.module
--- modules/poll/poll.module	12 May 2009 08:37:45 -0000	1.294
+++ modules/poll/poll.module	20 May 2009 17:28: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,40 +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,
-  );
-
-  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	20 May 2009 17:28:58 -0000
@@ -0,0 +1,65 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Poll module.
+ */
+
+/**
+ * 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,
+  );
+
+  return $items;
+}
+
+/**
+ * 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),
+    ),
+  );
+}
+
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	20 May 2009 17:36:40 -0000
@@ -8,3 +8,4 @@ files[] = profile.module
 files[] = profile.admin.inc
 files[] = profile.pages.inc
 files[] = profile.install
+files[] = profile.registry.inc
Index: modules/profile/profile.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/profile/profile.module,v
retrieving revision 1.254
diff -u -p -r1.254 profile.module
--- modules/profile/profile.module	16 May 2009 15:23:16 -0000	1.254
+++ modules/profile/profile.module	20 May 2009 17:28:58 -0000
@@ -49,82 +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),
-    )
-  );
-}
-
-/**
- * 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_list().
  */
 function profile_block_list() {
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	20 May 2009 17:28:58 -0000
@@ -0,0 +1,84 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Profile module.
+ */
+
+/**
+ * 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_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),
+    )
+  );
+}
+
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	20 May 2009 17:36:40 -0000
@@ -8,3 +8,4 @@ files[] = search.module
 files[] = search.admin.inc
 files[] = search.pages.inc
 files[] = search.install
+files[] = search.registry.inc
Index: modules/search/search.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/search/search.module,v
retrieving revision 1.292
diff -u -p -r1.292 search.module
--- modules/search/search.module	16 May 2009 16:06:04 -0000	1.292
+++ modules/search/search.module	20 May 2009 17:28:58 -0000
@@ -112,33 +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),
-      'template' => 'search-result',
-    ),
-    'search_results' => array(
-      'arguments' => array('results' => NULL, 'type' => NULL),
-      'template' => 'search-results',
-    ),
-    'search_results_listing' => array(
-      'arguments' => array('title' => NULL, 'content' => NULL),
-    ),
-  );
-}
-
-/**
  * Implementation of hook_perm().
  */
 function search_perm() {
@@ -179,55 +152,6 @@ function search_block_view($delta = '') 
   }
 }
 
-/**
- * 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	20 May 2009 17:28:58 -0000
@@ -0,0 +1,84 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Search module.
+ */
+
+/**
+ * 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;
+}
+
+/**
+ * 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),
+      'template' => 'search-result',
+    ),
+    'search_results' => array(
+      'arguments' => array('results' => NULL, 'type' => NULL),
+      'template' => 'search-results',
+    ),
+    'search_results_listing' => array(
+      'arguments' => array('title' => NULL, 'content' => NULL),
+    ),
+  );
+}
+
Index: modules/simpletest/simpletest.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/simpletest.info,v
retrieving revision 1.5
diff -u -p -r1.5 simpletest.info
--- modules/simpletest/simpletest.info	1 May 2009 11:01:53 -0000	1.5
+++ modules/simpletest/simpletest.info	20 May 2009 17:36:39 -0000
@@ -7,3 +7,4 @@ core = 7.x
 files[] = simpletest.module
 files[] = simpletest.pages.inc
 files[] = simpletest.install
+files[] = simpletest.registry.inc
Index: modules/simpletest/simpletest.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/simpletest.module,v
retrieving revision 1.44
diff -u -p -r1.44 simpletest.module
--- modules/simpletest/simpletest.module	17 May 2009 10:49:40 -0000	1.44
+++ modules/simpletest/simpletest.module	20 May 2009 17:28:57 -0000
@@ -22,36 +22,6 @@ function simpletest_help($path, $arg) {
 }
 
 /**
- * Implementation of hook_menu().
- */
-function simpletest_menu() {
-  $items['admin/development'] = array(
-    'title' => 'Development',
-    'description' => 'Development tools.',
-    'position' => 'right',
-    'weight' => -7,
-    'page callback' => 'system_admin_menu_block_page',
-    'access arguments' => array('access administration pages'),
-  );
-  $items['admin/development/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'),
-  );
-  $items['admin/development/testing/results/%'] = array(
-    'title' => 'Test result',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('simpletest_result_form', 4),
-    'description' => 'View result of tests.',
-    'access arguments' => array('administer unit tests'),
-    'type' => MENU_CALLBACK,
-  );
-  return $items;
-}
-
-/**
  * Implementation of hook_perm().
  */
 function simpletest_perm() {
@@ -64,20 +34,6 @@ function simpletest_perm() {
 }
 
 /**
- * Implementation 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_js_alter().
  */
 function simpletest_js_alter(&$javascript) {
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	20 May 2009 17:28:57 -0000
@@ -0,0 +1,52 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Simpletest module.
+ */
+
+/**
+ * Implementation of hook_menu().
+ */
+function simpletest_menu() {
+  $items['admin/development'] = array(
+    'title' => 'Development',
+    'description' => 'Development tools.',
+    'position' => 'right',
+    'weight' => -7,
+    'page callback' => 'system_admin_menu_block_page',
+    'access arguments' => array('access administration pages'),
+  );
+  $items['admin/development/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'),
+  );
+  $items['admin/development/testing/results/%'] = array(
+    'title' => 'Test result',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('simpletest_result_form', 4),
+    'description' => 'View result of tests.',
+    'access arguments' => array('administer unit tests'),
+    'type' => MENU_CALLBACK,
+  );
+  return $items;
+}
+
+/**
+ * Implementation of hook_theme().
+ */
+function simpletest_theme() {
+  return array(
+    'simpletest_test_table' => array(
+      'arguments' => array('table' => NULL),
+    ),
+    'simpletest_result_summary' => array(
+      'arguments' => array('form' => NULL),
+    ),
+  );
+}
+
Index: modules/simpletest/tests/database_test.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/database_test.info,v
retrieving revision 1.2
diff -u -p -r1.2 database_test.info
--- modules/simpletest/tests/database_test.info	9 Oct 2008 22:51:40 -0000	1.2
+++ modules/simpletest/tests/database_test.info	20 May 2009 17:36:39 -0000
@@ -7,3 +7,4 @@ files[] = database_test.module
 files[] = database_test.install
 version = VERSION
 hidden = TRUE
+files[] = database_test.registry.inc
Index: modules/simpletest/tests/database_test.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/database_test.module,v
retrieving revision 1.7
diff -u -p -r1.7 database_test.module
--- modules/simpletest/tests/database_test.module	22 Feb 2009 16:53:41 -0000	1.7
+++ modules/simpletest/tests/database_test.module	20 May 2009 17:28:57 -0000
@@ -41,30 +41,6 @@ function database_test_query_database_te
 }
 
 /**
- * Implementation of hook_menu().
- */
-function database_test_menu() {
-  $items['database_test/db_query_temporary'] = array(
-    'access callback' => TRUE,
-    'page callback' => 'database_test_db_query_temporary',
-  );
-  $items['database_test/pager_query_even'] = array(
-    'access callback' => TRUE,
-    'page callback' => 'database_test_even_pager_query',
-  );
-  $items['database_test/pager_query_odd'] = array(
-    'access callback' => TRUE,
-    'page callback' => 'database_test_odd_pager_query',
-  );
-  $items['database_test/tablesort'] = array(
-    'access callback' => TRUE,
-    'page callback' => 'database_test_tablesort',
-  );
-
-  return $items;
-}
-
-/**
  * Run a db_query_temporary and output the table name and its number of rows.
  *
  * We need to test that the table created is temporary, so we run it here, in a
Index: modules/simpletest/tests/database_test.registry.inc
===================================================================
RCS file: modules/simpletest/tests/database_test.registry.inc
diff -N modules/simpletest/tests/database_test.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/simpletest/tests/database_test.registry.inc	20 May 2009 17:28:57 -0000
@@ -0,0 +1,32 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Database_test module.
+ */
+
+/**
+ * Implementation of hook_menu().
+ */
+function database_test_menu() {
+  $items['database_test/db_query_temporary'] = array(
+    'access callback' => TRUE,
+    'page callback' => 'database_test_db_query_temporary',
+  );
+  $items['database_test/pager_query_even'] = array(
+    'access callback' => TRUE,
+    'page callback' => 'database_test_even_pager_query',
+  );
+  $items['database_test/pager_query_odd'] = array(
+    'access callback' => TRUE,
+    'page callback' => 'database_test_odd_pager_query',
+  );
+  $items['database_test/tablesort'] = array(
+    'access callback' => TRUE,
+    'page callback' => 'database_test_tablesort',
+  );
+
+  return $items;
+}
+
Index: modules/simpletest/tests/field_test.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/field_test.info,v
retrieving revision 1.2
diff -u -p -r1.2 field_test.info
--- modules/simpletest/tests/field_test.info	8 Feb 2009 21:22:59 -0000	1.2
+++ modules/simpletest/tests/field_test.info	20 May 2009 17:36:39 -0000
@@ -7,3 +7,4 @@ files[] = field_test.module
 files[] = field_test.install
 version = VERSION
 hidden = TRUE
+files[] = field_test.registry.inc
Index: modules/simpletest/tests/field_test.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/field_test.module,v
retrieving revision 1.8
diff -u -p -r1.8 field_test.module
--- modules/simpletest/tests/field_test.module	20 May 2009 09:48:47 -0000	1.8
+++ modules/simpletest/tests/field_test.module	20 May 2009 17:28:57 -0000
@@ -22,35 +22,6 @@ function field_test_perm() {
 }
 
 /**
- * Implementation of hook_menu().
- */
-function field_test_menu() {
-  $items = array();
-  $info = field_test_fieldable_info();
-
-  foreach (array_keys($info['test_entity']['bundles']) as $bundle) {
-    $bundle_url_str = str_replace('_', '-', $bundle);
-    $items['test-entity/add/' . $bundle_url_str] = array(
-      'title' => "Add $bundle test_entity",
-      'page callback' => 'field_test_entity_add',
-      'page arguments' => array(2),
-      'access arguments' => array('administer field_test content'),
-      'type' => MENU_NORMAL_ITEM,
-    );
-  }
-  $items['test-entity/%field_test_entity/edit'] = array(
-    'title' => 'Edit test entity',
-    'page callback' => 'field_test_entity_edit',
-    'page arguments' => array(1),
-    'access arguments' => array('administer field_test content'),
-    'type' => MENU_NORMAL_ITEM,
-  );
-
-  return $items;
-}
-
-
-/**
  *
  * 'Field attach' API.
  *
@@ -532,20 +503,6 @@ function field_test_field_load($obj_type
 }
 
 /**
- * Implementation of hook_theme().
- */
-function field_test_theme() {
-  return array(
-    'field_formatter_field_test_default' => array(
-      'arguments' => array('element' => NULL),
-    ),
-    'field_formatter_field_test_multiple' => array(
-      'arguments' => array('element' => NULL),
-    ),
-  );
-}
-
-/**
  * Theme function for 'field_test_default' formatter.
  */
 function theme_field_formatter_field_test_default($element) {
Index: modules/simpletest/tests/field_test.registry.inc
===================================================================
RCS file: modules/simpletest/tests/field_test.registry.inc
diff -N modules/simpletest/tests/field_test.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/simpletest/tests/field_test.registry.inc	20 May 2009 17:28:57 -0000
@@ -0,0 +1,51 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Field_test module.
+ */
+
+/**
+ * Implementation of hook_menu().
+ */
+function field_test_menu() {
+  $items = array();
+  $info = field_test_fieldable_info();
+
+  foreach (array_keys($info['test_entity']['bundles']) as $bundle) {
+    $bundle_url_str = str_replace('_', '-', $bundle);
+    $items['test-entity/add/' . $bundle_url_str] = array(
+      'title' => "Add $bundle test_entity",
+      'page callback' => 'field_test_entity_add',
+      'page arguments' => array(2),
+      'access arguments' => array('administer field_test content'),
+      'type' => MENU_NORMAL_ITEM,
+    );
+  }
+  $items['test-entity/%field_test_entity/edit'] = array(
+    'title' => 'Edit test entity',
+    'page callback' => 'field_test_entity_edit',
+    'page arguments' => array(1),
+    'access arguments' => array('administer field_test content'),
+    'type' => MENU_NORMAL_ITEM,
+  );
+
+  return $items;
+}
+
+
+/**
+ * Implementation of hook_theme().
+ */
+function field_test_theme() {
+  return array(
+    'field_formatter_field_test_default' => array(
+      'arguments' => array('element' => NULL),
+    ),
+    'field_formatter_field_test_multiple' => array(
+      'arguments' => array('element' => NULL),
+    ),
+  );
+}
+
Index: modules/simpletest/tests/file_test.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/file_test.info,v
retrieving revision 1.1
diff -u -p -r1.1 file_test.info
--- modules/simpletest/tests/file_test.info	20 Sep 2008 07:35:53 -0000	1.1
+++ modules/simpletest/tests/file_test.info	20 May 2009 17:36:39 -0000
@@ -6,3 +6,4 @@ version = VERSION
 core = 7.x
 files[] = file_test.module
 hidden = TRUE
+files[] = file_test.registry.inc
Index: modules/simpletest/tests/file_test.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/file_test.module,v
retrieving revision 1.8
diff -u -p -r1.8 file_test.module
--- modules/simpletest/tests/file_test.module	20 Jan 2009 02:56:05 -0000	1.8
+++ modules/simpletest/tests/file_test.module	20 May 2009 17:28:57 -0000
@@ -2,28 +2,6 @@
 // $Id: file_test.module,v 1.8 2009/01/20 02:56:05 webchick Exp $
 
 /**
- * @file
- * Helper module for the file tests.
- *
- * The caller is must call file_test_reset() to initializing this module before
- * calling file_test_get_calls() or file_test_set_return().
- */
-
-/**
- * Implementation of hook_menu().
- */
-function file_test_menu() {
-  $items['file-test/upload'] = array(
-    'title' => t('Upload test'),
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('_file_test_form'),
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-  return $items;
-}
-
-/**
  * Form to test file uploads.
  */
 function _file_test_form(&$form_state) {
Index: modules/simpletest/tests/file_test.registry.inc
===================================================================
RCS file: modules/simpletest/tests/file_test.registry.inc
diff -N modules/simpletest/tests/file_test.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/simpletest/tests/file_test.registry.inc	20 May 2009 17:28:57 -0000
@@ -0,0 +1,30 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for File_test module.
+ */
+
+/**
+ * @file
+ * Helper module for the file tests.
+ *
+ * The caller is must call file_test_reset() to initializing this module before
+ * calling file_test_get_calls() or file_test_set_return().
+ */
+
+/**
+ * Implementation of hook_menu().
+ */
+function file_test_menu() {
+  $items['file-test/upload'] = array(
+    'title' => t('Upload test'),
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('_file_test_form'),
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+  return $items;
+}
+
Index: modules/simpletest/tests/form_test.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/form_test.info,v
retrieving revision 1.1
diff -u -p -r1.1 form_test.info
--- modules/simpletest/tests/form_test.info	28 Jan 2009 07:43:26 -0000	1.1
+++ modules/simpletest/tests/form_test.info	20 May 2009 17:36:39 -0000
@@ -6,3 +6,4 @@ version = VERSION
 core = 7.x
 files[] = form_test.module
 hidden = TRUE
+files[] = form_test.registry.inc
Index: modules/simpletest/tests/form_test.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/form_test.module,v
retrieving revision 1.6
diff -u -p -r1.6 form_test.module
--- modules/simpletest/tests/form_test.module	12 May 2009 08:37:45 -0000	1.6
+++ modules/simpletest/tests/form_test.module	20 May 2009 17:28:57 -0000
@@ -2,74 +2,6 @@
 // $Id: form_test.module,v 1.6 2009/05/12 08:37:45 dries Exp $
 
 /**
- * @file
- * Helper module for the form API tests.
- */
-
-/**
- * Implementation of hook_menu().
- */
-function form_test_menu() {
-  $items = array();
-
-  $items['form_test/tableselect/multiple-true'] = array(
-    'title' => 'Tableselect checkboxes test',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('_form_test_tableselect_multiple_true_form'),
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-
-  $items['form_test/tableselect/multiple-false'] = array(
-    'title' => 'Tableselect radio button test',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('_form_test_tableselect_multiple_false_form'),
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-
-  $items['form_test/tableselect/empty-text'] = array(
-    'title' => 'Tableselect empty text test',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('_form_test_tableselect_empty_form'),
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-
-  $items['form_test/tableselect/advanced-select'] = array(
-    'title' => 'Tableselect js_select tests',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('_form_test_tableselect_js_select_form'),
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-
-  $items['form_test/form_clean_id'] = array(
-    'title' => 'form_clean_id test',
-    'page callback' => 'form_test_form_clean_id_page',
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-
-  $items['form_test/drupal_form_submit_batch_api'] = array(
-    'title' => 'BatchAPI Drupal_form_submit tests',
-    'page callback' => 'form_test_drupal_form_submit_batch_api',
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-
-  $items['form_test/form-storage'] = array(
-    'title' => 'Form storage test',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('form_storage_test_form'),
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-
-  return $items;
-}
-
-/**
  * Generate a page with three forms, to test the clean_id generation.
  */
 function form_test_form_clean_id_page() {
Index: modules/simpletest/tests/form_test.registry.inc
===================================================================
RCS file: modules/simpletest/tests/form_test.registry.inc
diff -N modules/simpletest/tests/form_test.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/simpletest/tests/form_test.registry.inc	20 May 2009 17:28:57 -0000
@@ -0,0 +1,76 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Form_test module.
+ */
+
+/**
+ * @file
+ * Helper module for the form API tests.
+ */
+
+/**
+ * Implementation of hook_menu().
+ */
+function form_test_menu() {
+  $items = array();
+
+  $items['form_test/tableselect/multiple-true'] = array(
+    'title' => 'Tableselect checkboxes test',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('_form_test_tableselect_multiple_true_form'),
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+
+  $items['form_test/tableselect/multiple-false'] = array(
+    'title' => 'Tableselect radio button test',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('_form_test_tableselect_multiple_false_form'),
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+
+  $items['form_test/tableselect/empty-text'] = array(
+    'title' => 'Tableselect empty text test',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('_form_test_tableselect_empty_form'),
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+
+  $items['form_test/tableselect/advanced-select'] = array(
+    'title' => 'Tableselect js_select tests',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('_form_test_tableselect_js_select_form'),
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+
+  $items['form_test/form_clean_id'] = array(
+    'title' => 'form_clean_id test',
+    'page callback' => 'form_test_form_clean_id_page',
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+
+  $items['form_test/drupal_form_submit_batch_api'] = array(
+    'title' => 'BatchAPI Drupal_form_submit tests',
+    'page callback' => 'form_test_drupal_form_submit_batch_api',
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+
+  $items['form_test/form-storage'] = array(
+    'title' => 'Form storage test',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('form_storage_test_form'),
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+
+  return $items;
+}
+
Index: modules/simpletest/tests/image_test.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/image_test.info,v
retrieving revision 1.1
diff -u -p -r1.1 image_test.info
--- modules/simpletest/tests/image_test.info	9 Mar 2009 11:44:54 -0000	1.1
+++ modules/simpletest/tests/image_test.info	20 May 2009 17:36:39 -0000
@@ -6,3 +6,4 @@ version = VERSION
 core = 7.x
 files[] = image_test.module
 hidden = TRUE
+files[] = image_test.registry.inc
Index: modules/simpletest/tests/menu_test.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/menu_test.info,v
retrieving revision 1.1
diff -u -p -r1.1 menu_test.info
--- modules/simpletest/tests/menu_test.info	28 Dec 2008 18:27:14 -0000	1.1
+++ modules/simpletest/tests/menu_test.info	20 May 2009 17:36:39 -0000
@@ -6,3 +6,4 @@ version = VERSION
 core = 7.x
 files[] = menu_test.module
 hidden = TRUE
+files[] = menu_test.registry.inc
Index: modules/simpletest/tests/menu_test.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/menu_test.module,v
retrieving revision 1.4
diff -u -p -r1.4 menu_test.module
--- modules/simpletest/tests/menu_test.module	13 Apr 2009 12:18:52 -0000	1.4
+++ modules/simpletest/tests/menu_test.module	20 May 2009 17:28:57 -0000
@@ -2,52 +2,6 @@
 // $Id: menu_test.module,v 1.4 2009/04/13 12:18:52 dries Exp $
 
 /**
- * @file
- * Dummy module implementing hook menu.
- */
-
-/**
- * Implementation of hook_menu().
- */
-function menu_test_menu() {
-  // The name of the menu changes during the course of the test. Using a $_GET.
-  $items['menu_name_test'] = array(
-    'title' => 'Test menu_name router item',
-    'page callback' => 'node_save',
-    'menu_name' => isset($_GET["hook_menu_name"]) ? $_GET["hook_menu_name"] : 'original',
-  );
-  // Use FALSE as 'title callback' to bypass t().
-  $items['menu_no_title_callback'] = array(
-    'title' => 'A title with @placeholder',
-    'title callback' => FALSE,
-    'title arguments' => array('@placeholder' => 'some other text'),
-    'page callback' => 'menu_test_callback',
-    'access arguments' => array('access content'),
-  );
-
-  // Hidden link for menu_link_maintain tests
-  $items['menu_test_maintain/%'] = array(
-    'title' => 'Menu maintain test',
-    'page callback' => 'node_page_default',
-    'access arguments' => array('access content'),
-   );
-  // Hierarchical tests.
-  $items['menu-test/hierarchy/parent'] = array(
-    'title' => 'Parent menu router',
-    'page callback' => 'node_page_default',
-  );
-  $items['menu-test/hierarchy/parent/child'] = array(
-    'title' => 'Child menu router',
-    'page callback' => 'node_page_default',
-  );
-  $items['menu-test/hierarchy/parent/child2/child'] = array(
-    'title' => 'Unattached subchild router',
-    'page callback' => 'node_page_default',
-  );
-  return $items;
-}
-
-/**
  * Dummy callback for hook_menu() to point to.
  *
  * @return
Index: modules/simpletest/tests/menu_test.registry.inc
===================================================================
RCS file: modules/simpletest/tests/menu_test.registry.inc
diff -N modules/simpletest/tests/menu_test.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/simpletest/tests/menu_test.registry.inc	20 May 2009 17:28:57 -0000
@@ -0,0 +1,54 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Menu_test module.
+ */
+
+/**
+ * @file
+ * Dummy module implementing hook menu.
+ */
+
+/**
+ * Implementation of hook_menu().
+ */
+function menu_test_menu() {
+  // The name of the menu changes during the course of the test. Using a $_GET.
+  $items['menu_name_test'] = array(
+    'title' => 'Test menu_name router item',
+    'page callback' => 'node_save',
+    'menu_name' => isset($_GET["hook_menu_name"]) ? $_GET["hook_menu_name"] : 'original',
+  );
+  // Use FALSE as 'title callback' to bypass t().
+  $items['menu_no_title_callback'] = array(
+    'title' => 'A title with @placeholder',
+    'title callback' => FALSE,
+    'title arguments' => array('@placeholder' => 'some other text'),
+    'page callback' => 'menu_test_callback',
+    'access arguments' => array('access content'),
+  );
+
+  // Hidden link for menu_link_maintain tests
+  $items['menu_test_maintain/%'] = array(
+    'title' => 'Menu maintain test',
+    'page callback' => 'node_page_default',
+    'access arguments' => array('access content'),
+   );
+  // Hierarchical tests.
+  $items['menu-test/hierarchy/parent'] = array(
+    'title' => 'Parent menu router',
+    'page callback' => 'node_page_default',
+  );
+  $items['menu-test/hierarchy/parent/child'] = array(
+    'title' => 'Child menu router',
+    'page callback' => 'node_page_default',
+  );
+  $items['menu-test/hierarchy/parent/child2/child'] = array(
+    'title' => 'Unattached subchild router',
+    'page callback' => 'node_page_default',
+  );
+  return $items;
+}
+
Index: modules/simpletest/tests/session_test.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/session_test.info,v
retrieving revision 1.1
diff -u -p -r1.1 session_test.info
--- modules/simpletest/tests/session_test.info	16 Aug 2008 21:11:02 -0000	1.1
+++ modules/simpletest/tests/session_test.info	20 May 2009 17:36:39 -0000
@@ -6,3 +6,4 @@ version = VERSION
 core = 7.x
 files[] = session_test.module
 hidden = TRUE
+files[] = session_test.registry.inc
Index: modules/simpletest/tests/session_test.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/session_test.module,v
retrieving revision 1.6
diff -u -p -r1.6 session_test.module
--- modules/simpletest/tests/session_test.module	26 Jan 2009 14:08:43 -0000	1.6
+++ modules/simpletest/tests/session_test.module	20 May 2009 17:28:57 -0000
@@ -2,52 +2,6 @@
 // $Id: session_test.module,v 1.6 2009/01/26 14:08:43 dries Exp $
 
 /**
- * Implementation of hook_menu().
- */
-function session_test_menu() {
-  $items['session-test/get'] = array(
-    'title' => t('Session value'),
-    'page callback' => '_session_test_get',
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['session-test/id'] = array(
-    'title' => t('Session ID value'),
-    'page callback' => '_session_test_id',
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['session-test/set/%'] = array(
-    'title' => t('Set Session value'),
-    'page callback' => '_session_test_set',
-    'page arguments' => array(2),
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['session-test/no-set/%'] = array(
-    'title' => t('Disabled session set value'),
-    'page callback' => '_session_test_no_set',
-    'page arguments' => array(2),
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['session-test/set-message'] = array(
-    'title' => t('Session value'),
-    'page callback' => '_session_test_set_message',
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['session-test/set-not-started'] = array(
-    'title' => t('Session value'),
-    'page callback' => '_session_test_set_not_started',
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-
-  return $items;
-}
-
-/**
  * Implement hook_boot().
  */
 function session_test_boot() {
Index: modules/simpletest/tests/session_test.registry.inc
===================================================================
RCS file: modules/simpletest/tests/session_test.registry.inc
diff -N modules/simpletest/tests/session_test.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/simpletest/tests/session_test.registry.inc	20 May 2009 17:28:57 -0000
@@ -0,0 +1,54 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Session_test module.
+ */
+
+/**
+ * Implementation of hook_menu().
+ */
+function session_test_menu() {
+  $items['session-test/get'] = array(
+    'title' => t('Session value'),
+    'page callback' => '_session_test_get',
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['session-test/id'] = array(
+    'title' => t('Session ID value'),
+    'page callback' => '_session_test_id',
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['session-test/set/%'] = array(
+    'title' => t('Set Session value'),
+    'page callback' => '_session_test_set',
+    'page arguments' => array(2),
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['session-test/no-set/%'] = array(
+    'title' => t('Disabled session set value'),
+    'page callback' => '_session_test_no_set',
+    'page arguments' => array(2),
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['session-test/set-message'] = array(
+    'title' => t('Session value'),
+    'page callback' => '_session_test_set_message',
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['session-test/set-not-started'] = array(
+    'title' => t('Session value'),
+    'page callback' => '_session_test_set_not_started',
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+
+  return $items;
+}
+
Index: modules/simpletest/tests/system_test.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/system_test.info,v
retrieving revision 1.3
diff -u -p -r1.3 system_test.info
--- modules/simpletest/tests/system_test.info	24 Oct 2008 23:32:44 -0000	1.3
+++ modules/simpletest/tests/system_test.info	20 May 2009 17:36:39 -0000
@@ -6,3 +6,4 @@ version = VERSION
 core = 7.x
 files[] = system_test.module
 hidden = TRUE
+files[] = system_test.registry.inc
Index: modules/simpletest/tests/system_test.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/system_test.module,v
retrieving revision 1.9
diff -u -p -r1.9 system_test.module
--- modules/simpletest/tests/system_test.module	22 Apr 2009 09:45:03 -0000	1.9
+++ modules/simpletest/tests/system_test.module	20 May 2009 17:28:57 -0000
@@ -1,90 +1,6 @@
 <?php
 // $Id: system_test.module,v 1.9 2009/04/22 09:45:03 dries Exp $
 
-/**
- * Implementation of hook_menu().
- */
-function system_test_menu() {
-  $items['system-test/auth'] = array(
-    'page callback' => 'system_test_basic_auth_page',
-    'access callback' => TRUE,
-    'type' => MENU_CALLBACK,
-  );
-  $items['system-test/redirect/%'] = array(
-    'title' => 'Redirect',
-    'page callback' => 'system_test_redirect',
-    'page arguments' => array(2),
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['system-test/set-header'] = array(
-    'page callback' => 'system_test_set_header',
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['system-test/redirect-noscheme'] = array(
-    'page callback' => 'system_test_redirect_noscheme',
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['system-test/redirect-noparse'] = array(
-    'page callback' => 'system_test_redirect_noparse',
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['system-test/redirect-invalid-scheme'] = array(
-    'page callback' => 'system_test_redirect_invalid_scheme',
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-  $items['system-test/destination'] = array(
-    'title' => 'Redirect',
-    'page callback' => 'system_test_destination',
-    'page arguments' => array(2),
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-
-  $items['system-test/variable-get'] = array(
-    'title' => 'Variable Get',
-    'page callback' => 'variable_get',
-    'page arguments' => array('simpletest_bootstrap_variable_test', NULL),
-    'access arguments' => array('access content'),
-    'type' => MENU_CALLBACK,
-  );
-
-  $items['system-test/generate-warnings'] = array(
-    'title' => 'Generate warnings',
-    'page callback' => 'system_test_generate_warnings',
-    'access callback' => TRUE,
-    'type' => MENU_CALLBACK,
-  );
-
-  $items['system-test/generate-warnings-with-report'] = array(
-    'title' => 'Generate warnings with Simpletest reporting',
-    'page callback' => 'system_test_generate_warnings',
-    'page arguments' => array(TRUE),
-    'access callback' => TRUE,
-    'type' => MENU_CALLBACK,
-  );
-
-  $items['system-test/trigger-exception'] = array(
-    'title' => 'Trigger an exception',
-    'page callback' => 'system_test_trigger_exception',
-    'access callback' => TRUE,
-    'type' => MENU_CALLBACK,
-  );
-
-  $items['system-test/trigger-pdo-exception'] = array(
-    'title' => 'Trigger a PDO exception',
-    'page callback' => 'system_test_trigger_pdo_exception',
-    'access callback' => TRUE,
-    'type' => MENU_CALLBACK,
-  );
-
-  return $items;
-}
-
 function system_test_basic_auth_page() {
   $output = t('$_SERVER[\'PHP_AUTH_USER\'] is @username.', array('@username' => $_SERVER['PHP_AUTH_USER']));
   $output .= t('$_SERVER[\'PHP_AUTH_PW\'] is @password.', array('@password' => $_SERVER['PHP_AUTH_PW']));
Index: modules/simpletest/tests/system_test.registry.inc
===================================================================
RCS file: modules/simpletest/tests/system_test.registry.inc
diff -N modules/simpletest/tests/system_test.registry.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/simpletest/tests/system_test.registry.inc	20 May 2009 17:28:57 -0000
@@ -0,0 +1,92 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for System_test module.
+ */
+
+/**
+ * Implementation of hook_menu().
+ */
+function system_test_menu() {
+  $items['system-test/auth'] = array(
+    'page callback' => 'system_test_basic_auth_page',
+    'access callback' => TRUE,
+    'type' => MENU_CALLBACK,
+  );
+  $items['system-test/redirect/%'] = array(
+    'title' => 'Redirect',
+    'page callback' => 'system_test_redirect',
+    'page arguments' => array(2),
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['system-test/set-header'] = array(
+    'page callback' => 'system_test_set_header',
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['system-test/redirect-noscheme'] = array(
+    'page callback' => 'system_test_redirect_noscheme',
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['system-test/redirect-noparse'] = array(
+    'page callback' => 'system_test_redirect_noparse',
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['system-test/redirect-invalid-scheme'] = array(
+    'page callback' => 'system_test_redirect_invalid_scheme',
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+  $items['system-test/destination'] = array(
+    'title' => 'Redirect',
+    'page callback' => 'system_test_destination',
+    'page arguments' => array(2),
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+
+  $items['system-test/variable-get'] = array(
+    'title' => 'Variable Get',
+    'page callback' => 'variable_get',
+    'page arguments' => array('simpletest_bootstrap_variable_test', NULL),
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+
+  $items['system-test/generate-warnings'] = array(
+    'title' => 'Generate warnings',
+    'page callback' => 'system_test_generate_warnings',
+    'access callback' => TRUE,
+    'type' => MENU_CALLBACK,
+  );
+
+  $items['system-test/generate-warnings-with-report'] = array(
+    'title' => 'Generate warnings with Simpletest reporting',
+    'page callback' => 'system_test_generate_warnings',
+    'page arguments' => array(TRUE),
+    'access callback' => TRUE,
+    'type' => MENU_CALLBACK,
+  );
+
+  $items['system-test/trigger-exception'] = array(
+    'title' => 'Trigger an exception',
+    'page callback' => 'system_test_trigger_exception',
+    'access callback' => TRUE,
+    'type' => MENU_CALLBACK,
+  );
+
+  $items['system-test/trigger-pdo-exception'] = array(
+    'title' => 'Trigger a PDO exception',
+    'page callback' => 'system_test_trigger_pdo_exception',
+    'access callback' => TRUE,
+    'type' => MENU_CALLBACK,
+  );
+
+  return $items;
+}
+
Index: modules/simpletest/tests/taxonomy_test.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/taxonomy_test.info,v
retrieving revision 1.3
diff -u -p -r1.3 taxonomy_test.info
--- modules/simpletest/tests/taxonomy_test.info	5 Apr 2009 12:21:12 -0000	1.3
+++ modules/simpletest/tests/taxonomy_test.info	20 May 2009 17:36:39 -0000
@@ -7,3 +7,4 @@ core = 7.x
 files[] = taxonomy_test.module
 hidden = TRUE
 dependencies[] = taxonomy
+files[] = taxonomy_test.registry.inc
Index: modules/simpletest/tests/xmlrpc_test.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/xmlrpc_test.info,v
retrieving revision 1.1
diff -u -p -r1.1 xmlrpc_test.info
--- modules/simpletest/tests/xmlrpc_test.info	9 Aug 2008 12:41:22 -0000	1.1
+++ modules/simpletest/tests/xmlrpc_test.info	20 May 2009 17:36:39 -0000
@@ -6,3 +6,4 @@ version = VERSION
 core = 7.x
 files[] = xmlrpc_test.module
 hidden = TRUE
+files[] = xmlrpc_test.registry.inc
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	20 May 2009 17:36:39 -0000
@@ -8,3 +8,4 @@ files[] = statistics.module
 files[] = statistics.admin.inc
 files[] = statistics.pages.inc
 files[] = statistics.install
+files[] = statistics.registry.inc
Index: modules/statistics/statistics.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/statistics/statistics.module,v
retrieving revision 1.303
diff -u -p -r1.303 statistics.module
--- modules/statistics/statistics.module	3 May 2009 10:11:35 -0000	1.303
+++ modules/statistics/statistics.module	20 May 2009 17:28:57 -0000
@@ -121,71 +121,6 @@ function statistics_node_view($node, $te
 }
 
 /**
- * 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/settings/statistics'] = array(
-    'title' => 'Statistics',
-    'description' => 'Control details about what and how your site logs access statistics.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('statistics_settings_form'),
-    'access arguments' => array('administer statistics'),
-  );
-  $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_cancel().
  */
 function statistics_user_cancel($edit, $account, $method) {
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	20 May 2009 17:28:57 -0000
@@ -0,0 +1,73 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for 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/settings/statistics'] = array(
+    'title' => 'Statistics',
+    'description' => 'Control details about what and how your site logs access statistics.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('statistics_settings_form'),
+    'access arguments' => array('administer statistics'),
+  );
+  $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	20 May 2009 17:36:39 -0000
@@ -5,3 +5,4 @@ package = Core
 version = VERSION
 core = 7.x
 files[] = syslog.module
+files[] = syslog.registry.inc
Index: modules/system/system.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.info,v
retrieving revision 1.12
diff -u -p -r1.12 system.info
--- modules/system/system.info	6 May 2009 10:37:28 -0000	1.12
+++ modules/system/system.info	20 May 2009 17:36:39 -0000
@@ -10,3 +10,4 @@ files[] = system.queue.inc
 files[] = image.gd.inc
 files[] = system.install
 required = TRUE
+files[] = system.registry.inc
Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.694
diff -u -p -r1.694 system.module
--- modules/system/system.module	16 May 2009 18:34:23 -0000	1.694
+++ modules/system/system.module	20 May 2009 17:28:57 -0000
@@ -115,54 +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),
-    ),
-    'system_themes_form' => array(
-      'arguments' => array('form' => NULL),
-    ),
-    'system_modules_fieldset' => array(
-      'arguments' => array('form' => NULL),
-    ),
-    'system_modules_incompatible' => array(
-      'arguments' => array('message' => NULL),
-    ),
-    'system_modules_uninstall' => array(
-      'arguments' => array('form' => NULL),
-    ),
-    'status_report' => array(
-      'arguments' => array('requirements' => NULL),
-    ),
-    'admin_page' => array(
-      'arguments' => array('blocks' => NULL),
-    ),
-    'admin_block' => array(
-      'arguments' => array('block' => NULL),
-    ),
-    'admin_block_content' => array(
-      'arguments' => array('content' => NULL),
-    ),
-    'system_admin_by_module' => array(
-      'arguments' => array('menu_items' => NULL),
-    ),
-    '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() {
@@ -430,331 +382,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/ahah'] = array(
-    'title' => 'AHAH callback',
-    'page callback' => 'form_ahah_callback',
-    '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,
-    'menu_name' => 'management',
-  );
-  $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'),
-  );
-  // 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'),
-    'access arguments' => array('administer site configuration'),
-  );
-  $items['admin/build/themes/select'] = array(
-    'title' => 'List',
-    'description' => 'Select the default theme for your site.',
-    '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/logging'] = array(
-    'title' => 'Logging and errors',
-    'description' => "Settings for logging and alerts modules. Various modules can route Drupal's system events to different destinations, such as syslog, database, email, etc.",
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('system_logging_settings'),
-    'access arguments' => array('administer site configuration'),
-  );
-  $items['admin/settings/logging/settings'] = array(
-    'title' => 'Settings',
-    'access arguments' => array('administer site configuration'),
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-    'weight' => -1,
-  );
-  $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 site description, 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/regional-settings'] = array(
-    'title' => 'Regional settings',
-    '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_regional_settings'),
-    'access arguments' => array('administer site configuration'),
-  );
-  $items['admin/settings/regional-settings/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/maintenance-mode'] = array(
-    'title' => 'Maintenance mode',
-    'description' => 'Take the site offline for maintenance or bring it back online.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('system_site_maintenance_mode'),
-    '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,
-  );
-
-  // 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	20 May 2009 17:28:57 -0000
@@ -0,0 +1,381 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for System module.
+ */
+
+/**
+ * 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/ahah'] = array(
+    'title' => 'AHAH callback',
+    'page callback' => 'form_ahah_callback',
+    '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,
+    'menu_name' => 'management',
+  );
+  $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'),
+  );
+  // 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'),
+    'access arguments' => array('administer site configuration'),
+  );
+  $items['admin/build/themes/select'] = array(
+    'title' => 'List',
+    'description' => 'Select the default theme for your site.',
+    '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/logging'] = array(
+    'title' => 'Logging and errors',
+    'description' => "Settings for logging and alerts modules. Various modules can route Drupal's system events to different destinations, such as syslog, database, email, etc.",
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('system_logging_settings'),
+    'access arguments' => array('administer site configuration'),
+  );
+  $items['admin/settings/logging/settings'] = array(
+    'title' => 'Settings',
+    'access arguments' => array('administer site configuration'),
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -1,
+  );
+  $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 site description, 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/regional-settings'] = array(
+    'title' => 'Regional settings',
+    '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_regional_settings'),
+    'access arguments' => array('administer site configuration'),
+  );
+  $items['admin/settings/regional-settings/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/maintenance-mode'] = array(
+    'title' => 'Maintenance mode',
+    'description' => 'Take the site offline for maintenance or bring it back online.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('system_site_maintenance_mode'),
+    '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,
+  );
+
+  // 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;
+}
+
+/**
+ * Implementation of hook_theme().
+ */
+function system_theme() {
+  return array_merge(drupal_common_theme(), array(
+    'system_theme_select_form' => array(
+      'arguments' => array('form' => NULL),
+    ),
+    'system_themes_form' => array(
+      'arguments' => array('form' => NULL),
+    ),
+    'system_modules_fieldset' => array(
+      'arguments' => array('form' => NULL),
+    ),
+    'system_modules_incompatible' => array(
+      'arguments' => array('message' => NULL),
+    ),
+    'system_modules_uninstall' => array(
+      'arguments' => array('form' => NULL),
+    ),
+    'status_report' => array(
+      'arguments' => array('requirements' => NULL),
+    ),
+    'admin_page' => array(
+      'arguments' => array('blocks' => NULL),
+    ),
+    'admin_block' => array(
+      'arguments' => array('block' => NULL),
+    ),
+    'admin_block_content' => array(
+      'arguments' => array('content' => NULL),
+    ),
+    'system_admin_by_module' => array(
+      'arguments' => array('menu_items' => NULL),
+    ),
+    '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(),
+  ));
+}
+
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	20 May 2009 17:36:39 -0000
@@ -8,3 +8,4 @@ files[] = taxonomy.module
 files[] = taxonomy.admin.inc
 files[] = taxonomy.pages.inc
 files[] = taxonomy.install
+files[] = taxonomy.registry.inc
Index: modules/taxonomy/taxonomy.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/taxonomy/taxonomy.module,v
retrieving revision 1.473
diff -u -p -r1.473 taxonomy.module
--- modules/taxonomy/taxonomy.module	19 May 2009 19:01:51 -0000	1.473
+++ modules/taxonomy/taxonomy.module	20 May 2009 17:28:57 -0000
@@ -19,23 +19,6 @@ function taxonomy_perm() {
 }
 
 /**
- * Implementation of hook_theme().
- */
-function taxonomy_theme() {
-  return array(
-    'taxonomy_term_select' => array(
-      'arguments' => array('element' => NULL),
-    ),
-    'taxonomy_overview_vocabularies' => array(
-      'arguments' => array('form' => array()),
-    ),
-    'taxonomy_overview_terms' => array(
-      'arguments' => array('form' => array()),
-    ),
-  );
-}
-
-/**
  * An implementation of hook_node_view().
  */
 function taxonomy_node_view($node) {
@@ -112,97 +95,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) {
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	20 May 2009 17:28:57 -0000
@@ -0,0 +1,116 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Taxonomy module.
+ */
+
+/**
+ * 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;
+}
+
+/**
+ * Implementation of hook_theme().
+ */
+function taxonomy_theme() {
+  return array(
+    'taxonomy_term_select' => array(
+      'arguments' => array('element' => NULL),
+    ),
+    'taxonomy_overview_vocabularies' => array(
+      'arguments' => array('form' => array()),
+    ),
+    'taxonomy_overview_terms' => array(
+      'arguments' => array('form' => array()),
+    ),
+  );
+}
+
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	20 May 2009 17:36:39 -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	20 May 2009 17:28:57 -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	20 May 2009 17:28:57 -0000
@@ -0,0 +1,45 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for 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	20 May 2009 17:36:39 -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.45
diff -u -p -r1.45 translation.module
--- modules/translation/translation.module	18 May 2009 09:45:01 -0000	1.45
+++ modules/translation/translation.module	20 May 2009 17:28:57 -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	20 May 2009 17:28:57 -0000
@@ -0,0 +1,25 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for 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	20 May 2009 17:36:39 -0000
@@ -7,3 +7,4 @@ core = 7.x
 files[] = trigger.module
 files[] = trigger.admin.inc
 files[] = trigger.install
+files[] = trigger.registry.inc
Index: modules/trigger/trigger.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/trigger/trigger.module,v
retrieving revision 1.33
diff -u -p -r1.33 trigger.module
--- modules/trigger/trigger.module	14 May 2009 08:23:15 -0000	1.33
+++ modules/trigger/trigger.module	20 May 2009 17:28:57 -0000
@@ -32,90 +32,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.
  */
 function trigger_access_check($module) {
@@ -143,17 +59,6 @@ function _trigger_get_hook_aids($hook, $
 }
 
 /**
- * Implementation of hook_theme().
- */
-function trigger_theme() {
-  return array(
-    'trigger_display' => array(
-      'arguments' => array('element'),
-    ),
-  );
-}
-
-/**
  * 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	20 May 2009 17:28:57 -0000
@@ -0,0 +1,103 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Trigger module.
+ */
+
+/**
+ * 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;
+}
+
+/**
+ * Implementation of hook_theme().
+ */
+function trigger_theme() {
+  return array(
+    'trigger_display' => array(
+      'arguments' => array('element'),
+    ),
+  );
+}
+
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	20 May 2009 17:36:39 -0000
@@ -10,3 +10,4 @@ files[] = update.fetch.inc
 files[] = update.report.inc
 files[] = update.settings.inc
 files[] = update.install
+files[] = update.registry.inc
Index: modules/update/update.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/update/update.module,v
retrieving revision 1.33
diff -u -p -r1.33 update.module
--- modules/update/update.module	13 May 2009 18:21:42 -0000	1.33
+++ modules/update/update.module	20 May 2009 17:28:57 -0000
@@ -112,53 +112,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	20 May 2009 17:28:57 -0000
@@ -0,0 +1,55 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Update module.
+ */
+
+/**
+ * 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),
+    ),
+  );
+}
+
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	20 May 2009 17:36:39 -0000
@@ -7,3 +7,4 @@ core = 7.x
 files[] = upload.module
 files[] = upload.admin.inc
 files[] = upload.install
+files[] = upload.registry.inc
Index: modules/upload/upload.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/upload/upload.module,v
retrieving revision 1.238
diff -u -p -r1.238 upload.module
--- modules/upload/upload.module	16 May 2009 15:23:16 -0000	1.238
+++ modules/upload/upload.module	20 May 2009 17:28:57 -0000
@@ -23,23 +23,6 @@ function upload_help($path, $arg) {
 }
 
 /**
- * Implementation of hook_theme().
- */
-function upload_theme() {
-  return array(
-    'upload_attachments' => array(
-      'arguments' => array('elements' => 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_node_links($node, $tease
 }
 
 /**
- * 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	20 May 2009 17:28:57 -0000
@@ -0,0 +1,45 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for Upload module.
+ */
+
+/**
+ * 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;
+}
+
+/**
+ * Implementation of hook_theme().
+ */
+function upload_theme() {
+  return array(
+    'upload_attachments' => array(
+      'arguments' => array('elements' => NULL),
+    ),
+    'upload_form_current' => array(
+      'arguments' => array('form' => NULL),
+    ),
+    'upload_form_new' => array(
+      'arguments' => array('form' => NULL),
+    ),
+  );
+}
+
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	20 May 2009 17:36:39 -0000
@@ -9,3 +9,4 @@ files[] = user.admin.inc
 files[] = user.pages.inc
 files[] = user.install
 required = TRUE
+files[] = user.registry.inc
Index: modules/user/user.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.module,v
retrieving revision 1.987
diff -u -p -r1.987 user.module
--- modules/user/user.module	16 May 2009 15:23:16 -0000	1.987
+++ modules/user/user.module	20 May 2009 17:17:17 -0000
@@ -31,51 +31,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('elements' => NULL),
-      'template' => 'user-profile',
-    ),
-    'user_profile_category' => array(
-      'arguments' => array('element' => NULL),
-      'template' => 'user-profile-category',
-    ),
-    'user_profile_item' => array(
-      'arguments' => array('element' => NULL),
-      'template' => 'user-profile-item',
-    ),
-    'user_list' => array(
-      'arguments' => array('users' => NULL, 'title' => NULL),
-    ),
-    'user_admin_perm' => array(
-      'arguments' => array('form' => NULL),
-    ),
-    'user_admin_new_role' => array(
-      'arguments' => array('form' => NULL),
-    ),
-    'user_admin_account' => array(
-      'arguments' => array('form' => NULL),
-    ),
-    'user_filter_form' => array(
-      'arguments' => array('form' => NULL),
-    ),
-    'user_filters' => array(
-      'arguments' => array('form' => NULL),
-    ),
-    'user_signature' => array(
-      'arguments' => array('signature' => NULL),
-    ),
-  );
-}
-
-/**
  * Implementation of hook_fieldable_info().
  */
 function user_fieldable_info() {
@@ -1262,193 +1217,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,
-    'menu_name' => 'user-menu',
-  );
-
-  // 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),
-    'weight' => -10,
-    'menu_name' => 'user-menu',
-  );
-
-  $items['user/%user/view'] = array(
-    'title' => 'View',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-    'weight' => -10,
-  );
-
-  $items['user/%user/cancel'] = array(
-    'title' => 'Cancel account',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('user_cancel_confirm_form', 1),
-    'access callback' => 'user_cancel_access',
-    'access arguments' => array(1),
-    'type' => MENU_CALLBACK,
-  );
-
-  $items['user/%user/cancel/confirm/%/%'] = array(
-    'title' => 'Confirm account cancellation',
-    'page callback' => 'user_cancel_confirm',
-    'page arguments' => array(1, 4, 5),
-    'access callback' => 'user_cancel_access',
-    'access arguments' => array(1),
-    '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,
-  );
-
-  $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	20 May 2009 17:17:17 -0000
@@ -0,0 +1,240 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Registry-type hooks for User module.
+ */
+
+/**
+ * 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,
+    'menu_name' => 'user-menu',
+  );
+
+  // 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),
+    'weight' => -10,
+    'menu_name' => 'user-menu',
+  );
+
+  $items['user/%user/view'] = array(
+    'title' => 'View',
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -10,
+  );
+
+  $items['user/%user/cancel'] = array(
+    'title' => 'Cancel account',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('user_cancel_confirm_form', 1),
+    'access callback' => 'user_cancel_access',
+    'access arguments' => array(1),
+    'type' => MENU_CALLBACK,
+  );
+
+  $items['user/%user/cancel/confirm/%/%'] = array(
+    'title' => 'Confirm account cancellation',
+    'page callback' => 'user_cancel_confirm',
+    'page arguments' => array(1, 4, 5),
+    'access callback' => 'user_cancel_access',
+    'access arguments' => array(1),
+    '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,
+  );
+
+  $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;
+}
+
+/**
+ * Implementation of hook_theme().
+ */
+function user_theme() {
+  return array(
+    'user_picture' => array(
+      'arguments' => array('account' => NULL),
+      'template' => 'user-picture',
+    ),
+    'user_profile' => array(
+      'arguments' => array('elements' => NULL),
+      'template' => 'user-profile',
+    ),
+    'user_profile_category' => array(
+      'arguments' => array('element' => NULL),
+      'template' => 'user-profile-category',
+    ),
+    'user_profile_item' => array(
+      'arguments' => array('element' => NULL),
+      'template' => 'user-profile-item',
+    ),
+    'user_list' => array(
+      'arguments' => array('users' => NULL, 'title' => NULL),
+    ),
+    'user_admin_perm' => array(
+      'arguments' => array('form' => NULL),
+    ),
+    'user_admin_new_role' => array(
+      'arguments' => array('form' => NULL),
+    ),
+    'user_admin_account' => array(
+      'arguments' => array('form' => NULL),
+    ),
+    'user_filter_form' => array(
+      'arguments' => array('form' => NULL),
+    ),
+    'user_filters' => array(
+      'arguments' => array('form' => NULL),
+    ),
+    'user_signature' => array(
+      'arguments' => array('signature' => NULL),
+    ),
+  );
+}
+
