Index: /trunk/bp-core/admin/bp-core-admin.php
===================================================================
--- /trunk/bp-core/admin/bp-core-admin.php	(revision 5405)
+++ /trunk/bp-core/admin/bp-core-admin.php	(revision 5406)
@@ -29,5 +29,5 @@
 	$tabs = array(
 		'0' => array(
-			'href' => bp_get_admin_url( add_query_arg( array( 'page' => 'bp-general-settings' ), 'admin.php' ) ),
+			'href' => bp_get_admin_url( add_query_arg( array( 'page' => 'bp-general-config' ), 'admin.php' ) ),
 			'name' => __( 'Components', 'buddypress' )
 		),
@@ -62,4 +62,25 @@
 	// Do other fun things
 	do_action( 'bp_admin_tabs' );
+}
+
+/**
+ * Generates markup for a fallback top-level BuddyPress menu page, if the site is running
+ * a legacy plugin which hasn't been updated. If the site is up to date, this page
+ * will never appear.
+ *
+ * @see bp_core_admin_backpat_menu()
+ * @since 1.6
+ * @todo Add convenience links into the markup once new positions are finalised.
+ */
+function bp_core_admin_backpat_page() {
+?>
+	<div class="wrap">
+		<?php screen_icon( 'buddypress'); ?>
+		<h2><?php _e( 'Why have all my BuddyPress menus disappeared?', 'buddypress' ); ?></h2>
+
+		<p><?php _e( "Don't worry! We've moved the BuddyPress options into more convenient and easier to find locations. You're seeing this page because you are running a legacy BuddyPress plugin which has not been updated.", 'buddypress' ); ?></p>
+		<p><?php printf( __( 'Components, Pages, Settings, and Forums, have been moved to <a href="%s">Settings &gt; BuddyPress</a>. Profile Fields has been moved into the <a href="%s">Users</a> menu.', 'buddpress' ), network_admin_url( 'options-general.php?page=bp-general-config' ), network_admin_url( 'users.php?page=bp-profile-setup' ) ); ?></p>
+	</div>
+<?php
 }
 
@@ -218,5 +239,5 @@
 		}
 
-		$base_url = bp_get_admin_url(  add_query_arg( array( 'page' => 'bp-general-settings', 'updated' => 'true' ), 'admin.php' ) );
+		$base_url = bp_get_admin_url(  add_query_arg( array( 'page' => 'bp-general-config', 'updated' => 'true' ), 'admin.php' ) );
 
 		wp_redirect( $base_url );
Index: /trunk/bp-core/admin/bp-core-update.php
===================================================================
--- /trunk/bp-core/admin/bp-core-update.php	(revision 5405)
+++ /trunk/bp-core/admin/bp-core-update.php	(revision 5406)
@@ -193,5 +193,5 @@
 
 				$step_count  = count( $this->steps ) - 1;
-				$wiz_or_set  = $this->current_step >= $step_count ? 'bp-general-settings' : 'bp-wizard';
+				$wiz_or_set  = $this->current_step >= $step_count ? 'bp-general-config' : 'bp-wizard';
 				$form_action = bp_core_update_do_network_admin() ? network_admin_url( add_query_arg( array( 'page' => $wiz_or_set ), 'admin.php' ) ) : admin_url( add_query_arg( array( 'page' => $wiz_or_set ), 'admin.php' ) );
 			?>
@@ -1134,5 +1134,5 @@
 
 			// Redirect to the BuddyPress dashboard
-			$redirect = bp_core_update_do_network_admin() ? add_query_arg( array( 'page' => 'bp-general-settings' ), network_admin_url( 'admin.php' ) ) : add_query_arg( array( 'page' => 'bp-general-settings' ), admin_url( 'admin.php' ) );
+			$redirect = bp_core_update_do_network_admin() ? add_query_arg( array( 'page' => 'bp-general-config' ), network_admin_url( 'admin.php' ) ) : add_query_arg( array( 'page' => 'bp-general-config' ), admin_url( 'admin.php' ) );
 
 			wp_redirect( $redirect );
@@ -1355,8 +1355,8 @@
 
 		/* Settings Icon */
-		ul#adminmenu li.toplevel_page_bp-general-settings .wp-menu-image a img { display: none; }
-		ul#adminmenu li.toplevel_page_bp-general-settings .wp-menu-image a { background-image: url( <?php echo plugins_url( 'buddypress/bp-core/images/admin_menu_icon.png' ) ?> ) !important; background-position: -1px -32px; }
-		ul#adminmenu li.toplevel_page_bp-general-settings:hover .wp-menu-image a,
-		ul#adminmenu li.toplevel_page_bp-general-settings.wp-has-current-submenu .wp-menu-image a {
+		ul#adminmenu li.toplevel_page_bp-general-config .wp-menu-image a img { display: none; }
+		ul#adminmenu li.toplevel_page_bp-general-config .wp-menu-image a { background-image: url( <?php echo plugins_url( 'buddypress/bp-core/images/admin_menu_icon.png' ) ?> ) !important; background-position: -1px -32px; }
+		ul#adminmenu li.toplevel_page_bp-general-config:hover .wp-menu-image a,
+		ul#adminmenu li.toplevel_page_bp-general-config.wp-has-current-submenu .wp-menu-image a {
 			background-position: -1px 0;
 		}
Index: /trunk/bp-core/bp-core-cssjs.php
===================================================================
--- /trunk/bp-core/bp-core-cssjs.php	(revision 5405)
+++ /trunk/bp-core/bp-core-cssjs.php	(revision 5406)
@@ -23,7 +23,17 @@
 
 		/* Settings Icon */
-		ul#adminmenu li.toplevel_page_bp-general-settings .wp-menu-image a img { display: none; }
-		ul#adminmenu li.toplevel_page_bp-general-settings .wp-menu-image a { background-image: url( <?php echo plugins_url( 'buddypress/bp-core/images/admin_menu_icon.png' ) ?> ) !important; background-position: -1px -32px; }
+		ul#adminmenu li.toplevel_page_bp-general-config .wp-menu-image a img,
+		ul#adminmenu li.toplevel_page_bp-general-settings .wp-menu-image a img {
+			display: none;
+		}
+
+		ul#adminmenu li.toplevel_page_bp-general-config .wp-menu-image a,
+		ul#adminmenu li.toplevel_page_bp-general-settings .wp-menu-image a {
+			background-image: url( <?php echo plugins_url( 'buddypress/bp-core/images/admin_menu_icon.png' ) ?> ) !important; background-position: -1px -32px;
+		}
+
+		ul#adminmenu li.toplevel_page_bp-general-config:hover .wp-menu-image a,
 		ul#adminmenu li.toplevel_page_bp-general-settings:hover .wp-menu-image a,
+		ul#adminmenu li.toplevel_page_bp-general-config.wp-has-current-submenu .wp-menu-image a,
 		ul#adminmenu li.toplevel_page_bp-general-settings.wp-has-current-submenu .wp-menu-image a {
 			background-position: -1px 0;
Index: /trunk/bp-core/bp-core-functions.php
===================================================================
--- /trunk/bp-core/bp-core-functions.php	(revision 5405)
+++ /trunk/bp-core/bp-core-functions.php	(revision 5406)
@@ -285,31 +285,107 @@
 
 /**
- * Adds the "BuddyPress" admin submenu item to the Site Admin tab.
- *
- * @package BuddyPress Core
- * @global object $bp Global BuddyPress settings object
- * @uses bp_current_user_can() returns true if the current user is a site admin, false if not
- * @uses add_submenu_page() WP function to add a submenu item
+ * In BP 1.6, the top-level admin menu was removed. For backpat, this function
+ * keeps the top-level menu if a plugin has registered a menu into the old
+ * 'bp-general-settings' menu.
+ *
+ * The old "bp-general-settings" page was renamed "bp-general-config".
+ *
+ * @global array $_parent_pages
+ * @global array $_registered_pages
+ * @global array $submenu
+ * @since 1.6
+ */
+function bp_core_admin_backpat_menu() {
+	global $_parent_pages, $_registered_pages, $submenu;
+
+	if ( ! is_super_admin() )
+		return;
+
+	// Don't do anything if a BP upgrade is in progress, or if the bp-wizard is in progress.
+	if ( defined( 'BP_IS_UPGRADE' ) && BP_IS_UPGRADE || empty( $submenu['bp-general-settings'] ) )
+		return;
+
+	/**
+	 * By default, only the core "Help" submenu is added under the top-level BuddyPress menu.
+	 * This means that if no third-party plugins have registered their admin pages into the
+	 * 'bp-general-settings' menu, it will only contain one item. Kill it.
+	 */
+	if ( 1 == count( $submenu['bp-general-settings'] ) ) {
+		// This removes the top-level menu
+		remove_submenu_page( 'bp-general-settings', 'bp-general-settings' );
+		remove_menu_page( 'bp-general-settings' );
+
+		// These stop people accessing the URL directly
+		unset( $_parent_pages['bp-general-settings'] );
+		unset( $_registered_pages['toplevel_page_bp-general-settings'] );
+	}
+}
+add_action( bp_core_admin_hook(), 'bp_core_admin_backpat_menu', 999 );
+
+/**
+ * Registers BuddyPress' admin menus.
+ *
+ * @since 1.0
  */
 function bp_core_add_admin_menu() {
-	if ( !bp_current_user_can( 'bp_moderate' ) )
-		return false;
-
-	// Don't add this version of the admin menu if a BP upgrade is in progress
- 	// See bp_core_update_add_admin_menu()
+	if ( ! bp_current_user_can( 'bp_moderate' ) )
+		return;
+
+	/**
+	 * Don't add this version of the admin menu if a BP upgrade is in progress.
+	 * See bp_core_update_add_admin_menu().
+	 */
 	if ( defined( 'BP_IS_UPGRADE' ) && BP_IS_UPGRADE )
- 		return false;
+ 		return;
 
 	$hooks = array();
 
-	// Add the administration tab under the "Site Admin" tab for site administrators
-	$hooks[] = add_menu_page( __( 'BuddyPress', 'buddypress' ), __( 'BuddyPress', 'buddypress' ), 'manage_options', 'bp-general-settings', 'bp_core_admin_component_setup', '' );
-	$hooks[] = add_submenu_page( 'bp-general-settings', __( 'Components', 'buddypress' ), __( 'Components', 'buddypress' ), 'manage_options', 'bp-general-settings', 'bp_core_admin_component_setup'  );
-	$hooks[] = add_submenu_page( 'bp-general-settings', __( 'Pages',      'buddypress' ), __( 'Pages',      'buddypress' ), 'manage_options', 'bp-page-settings',    'bp_core_admin_page_setup'       );
-	$hooks[] = add_submenu_page( 'bp-general-settings', __( 'Settings',   'buddypress' ), __( 'Settings',   'buddypress' ), 'manage_options', 'bp-settings',         'bp_core_admin_settings'         );
-
-	// Add a hook for css/js
-	foreach( $hooks as $hook )
+	// Changed in BP 1.6 . See bp_core_admin_backpat_menu()
+	$hooks[] = add_menu_page( __( 'BuddyPress', 'buddypress' ), __( 'BuddyPress', 'buddypress' ), 'manage_options', 'bp-general-settings', 'bp_core_admin_backpat_menu', '' );
+	$hooks[] = add_submenu_page( 'bp-general-settings', __( 'BuddyPress Help', 'buddypress' ), __( 'Help', 'buddypress' ), 'manage_options', 'bp-general-settings', 'bp_core_admin_backpat_page' );
+
+	// Add the option pages
+	$hooks[] = add_options_page( __( 'BuddyPress Components', 'buddypress' ), __( 'BuddyPress', 'buddypress' ), 'manage_options', 'bp-general-config', 'bp_core_admin_component_setup' );
+	$hooks[] = add_options_page( __( 'BuddyPress Pages', 'buddypress' ),      __( 'BuddyPress Pages', 'buddypress' ),      'manage_options', 'bp-page-settings',  'bp_core_admin_page_setup'      );
+	$hooks[] = add_options_page( __( 'BuddyPress Settings', 'buddypress' ),   __( 'BuddyPress Settings', 'buddypress' ),   'manage_options', 'bp-settings',       'bp_core_admin_settings'        );
+
+	foreach( $hooks as $hook ) {
+		// Add a hook for common BP admin CSS/JS scripts
 		add_action( "admin_print_styles-$hook", 'bp_core_add_admin_menu_styles' );
+
+		// Fudge the highlighted subnav item when on a BuddyPress admin page
+		add_action( "admin_head-$hook", 'bp_core_modify_admin_menu_highlight' );
+	}
+}
+
+/**
+ * Tweak the Settings subnav menu to show only one BuddyPress menu item (Settings > BuddyPress).
+ *
+ * @since 1.6
+ */
+function bp_core_modify_admin_menu() {
+	remove_submenu_page( 'options-general.php', 'bb-forums-setup' );
+	remove_submenu_page( 'options-general.php', 'bp-page-settings' );
+	remove_submenu_page( 'options-general.php', 'bp-settings' );
+}
+add_action( "admin_head", 'bp_core_modify_admin_menu', 999 );
+
+/**
+ * This tells WP to highlight the Settings > BuddyPress menu item,
+ * regardless of which actual BuddyPress admin screen we are on.
+ *
+ * The conditional prevents the behaviour when the user is viewing the
+ * backpat "Help" page, the Activity page, or any third-party plugins.
+ *
+ * @global string $plugin_page
+ * @global array $submenu
+ * @since 1.6
+ */
+function bp_core_modify_admin_menu_highlight() {
+	global $plugin_page, $submenu_file;
+
+	// This tweaks the Settings subnav menu to show only one BuddyPress menu item
+	if ( ! in_array( $plugin_page, array( 'bp-activity', 'bp-general-settings', ) ) )
+		$submenu_file = 'bp-general-config';
 }
 
Index: /trunk/bp-forums/bp-forums-admin.php
===================================================================
--- /trunk/bp-forums/bp-forums-admin.php	(revision 5405)
+++ /trunk/bp-forums/bp-forums-admin.php	(revision 5406)
@@ -6,10 +6,15 @@
 	global $bp;
 
-	if ( !bp_current_user_can( 'bp_moderate' ) )
-		return false;
-
-	// Add the administration tab under the "Site Admin" tab for site administrators
-	$hook = add_submenu_page( 'bp-general-settings', __( 'Forums', 'buddypress' ), __( 'Forums', 'buddypress' ), 'manage_options', 'bb-forums-setup', "bp_forums_bbpress_admin" );
+	if ( ! bp_current_user_can( 'bp_moderate' ) )
+		return;
+
+	// Add the option pages
+	$hook = add_options_page( __( 'BuddyPress Forums', 'buddypress' ), __( 'BuddyPress Forums', 'buddypress' ), 'manage_options', 'bb-forums-setup', 'bp_forums_bbpress_admin' );
+
+	// Add a hook for common BP admin CSS/JS scripts
 	add_action( "admin_print_styles-$hook", 'bp_core_add_admin_menu_styles' );
+
+	// Fudge the highlighted subnav item when on a BuddyPress admin page
+	add_action( "admin_head-$hook", 'bp_core_modify_admin_menu_highlight' );
 }
 add_action( bp_core_admin_hook(), 'bp_forums_add_admin_menu' );
Index: /trunk/bp-xprofile/bp-xprofile-admin.php
===================================================================
--- /trunk/bp-xprofile/bp-xprofile-admin.php	(revision 5405)
+++ /trunk/bp-xprofile/bp-xprofile-admin.php	(revision 5406)
@@ -23,5 +23,5 @@
 		return false;
 
-	$hook = add_submenu_page( 'bp-general-settings', __( 'Profile Fields', 'buddypress' ), __( 'Profile Fields', 'buddypress' ), 'manage_options', 'bp-profile-setup', 'xprofile_admin' );
+	$hook = add_users_page( __( 'Profile Fields', 'buddypress' ), __( 'Profile Fields', 'buddypress' ), 'manage_options', 'bp-profile-setup', 'xprofile_admin' );
 
 	add_action( "admin_print_styles-$hook", 'bp_core_add_admin_menu_styles' );
@@ -72,5 +72,5 @@
 		<h2>
 
-			<?php _e( 'Extended Profile Fields', 'buddypress'); ?>
+			<?php _e( 'Profile Fields', 'buddypress'); ?>
 
 			<a id="add_group" class="button add-new-h2" href="admin.php?page=bp-profile-setup&amp;mode=add_group"><?php _e( 'Add New Group', 'buddypress' ); ?></a>
