Index: bp-activity.php
===================================================================
--- bp-activity.php	(revision 3725)
+++ bp-activity.php	(working copy)
@@ -6,13 +6,16 @@
 function bp_activity_setup_globals() {
 	global $bp, $current_blog;
 
-	if ( !defined( 'BP_ACTIVITY_SLUG' ) )
-		define ( 'BP_ACTIVITY_SLUG', $bp->pages->activity->slug );
+	// Define a slug, if necessary
+	if ( !defined( 'BP_ACTIVITY_SLUG' ) ) {
+		define( 'BP_ACTIVITY_SLUG', bp_core_component_slug_from_root_slug( $bp->pages->activity->slug ) ); 
+	}
 
 	// For internal identification
 	$bp->activity->id = 'activity';
 	$bp->activity->name = $bp->pages->activity->name;
 	$bp->activity->slug = BP_ACTIVITY_SLUG;
+	$bp->activity->root_slug = $bp->pages->activity->slug;
 
 	$bp->activity->table_name      = $bp->table_prefix . 'bp_activity';
 	$bp->activity->table_name_meta = $bp->table_prefix . 'bp_activity_meta';
@@ -37,16 +40,16 @@
 
 	$user_domain = ( isset( $bp->displayed_user->domain ) ) ? $bp->displayed_user->domain : $bp->loggedin_user->domain;
 	$user_login = ( isset( $bp->displayed_user->userdata->user_login ) ) ? $bp->displayed_user->userdata->user_login : $bp->loggedin_user->userdata->user_login;
-	$activity_link = $user_domain . $bp->activity->name . '/';
+	$activity_link = $user_domain . $bp->activity->slug . '/';
 
 	/* Add the subnav items to the activity nav item if we are using a theme that supports this */
 	bp_core_new_subnav_item( array( 'name' => __( 'Personal', 'buddypress' ), 'slug' => 'just-me', 'parent_url' => $activity_link, 'parent_slug' => $bp->activity->name, 'screen_function' => 'bp_activity_screen_my_activity', 'position' => 10 ) );
 
 	if ( bp_is_active( 'friends' ) )
-		bp_core_new_subnav_item( array( 'name' => __( 'Friends', 'buddypress' ), 'slug' => BP_FRIENDS_SLUG, 'parent_url' => $activity_link, 'parent_slug' => $bp->activity->name, 'screen_function' => 'bp_activity_screen_friends', 'position' => 20, 'item_css_id' => 'activity-friends' ) );
+		bp_core_new_subnav_item( array( 'name' => __( 'Friends', 'buddypress' ), 'slug' => BP_FRIENDS_SLUG, 'parent_url' => $activity_link, 'parent_slug' => $bp->activity->slug, 'screen_function' => 'bp_activity_screen_friends', 'position' => 20, 'item_css_id' => 'activity-friends' ) );
 
 	if ( bp_is_active( 'groups' ) )
-		bp_core_new_subnav_item( array( 'name' => __( 'Groups', 'buddypress' ), 'slug' => BP_GROUPS_SLUG, 'parent_url' => $activity_link, 'parent_slug' => $bp->activity->name, 'screen_function' => 'bp_activity_screen_groups', 'position' => 30, 'item_css_id' => 'activity-groups' ) );
+		bp_core_new_subnav_item( array( 'name' => __( 'Groups', 'buddypress' ), 'slug' => BP_GROUPS_SLUG, 'parent_url' => $activity_link, 'parent_slug' => $bp->activity->slug, 'screen_function' => 'bp_activity_screen_groups', 'position' => 30, 'item_css_id' => 'activity-groups' ) );
 
 	bp_core_new_subnav_item( array( 'name' => __( 'Favorites', 'buddypress' ), 'slug' => 'favorites', 'parent_url' => $activity_link, 'parent_slug' => $bp->activity->name, 'screen_function' => 'bp_activity_screen_favorites', 'position' => 40, 'item_css_id' => 'activity-favs' ) );
 	bp_core_new_subnav_item( array( 'name' => sprintf( __( '@%s Mentions', 'buddypress' ), $user_login ), 'slug' => 'mentions', 'parent_url' => $activity_link, 'parent_slug' => $bp->activity->name, 'screen_function' => 'bp_activity_screen_mentions', 'position' => 50, 'item_css_id' => 'activity-mentions' ) );
@@ -59,7 +62,7 @@
 			$bp->bp_options_title = $bp->displayed_user->fullname;
 		}
 	}
-
+	
 	do_action( 'bp_activity_setup_nav' );
 }
 add_action( 'bp_setup_nav', 'bp_activity_setup_nav' );
Index: bp-themes/bp-default/groups/index.php
===================================================================
--- bp-themes/bp-default/groups/index.php	(revision 3725)
+++ bp-themes/bp-default/groups/index.php	(working copy)
@@ -4,7 +4,7 @@
 		<div class="padder">
 
 		<form action="" method="post" id="groups-directory-form" class="dir-form">
-			<h3><?php _e( 'Groups Directory', 'buddypress' ) ?><?php if ( is_user_logged_in() ) : ?> &nbsp;<a class="button" href="<?php echo bp_get_root_domain() . '/' . BP_GROUPS_SLUG . '/create/' ?>"><?php _e( 'Create a Group', 'buddypress' ) ?></a><?php endif; ?></h3>
+			<h3><?php _e( 'Groups Directory', 'buddypress' ) ?><?php if ( is_user_logged_in() ) : ?> &nbsp;<a class="button" href="<?php echo bp_get_root_domain() . '/' . bp_get_root_slug() . '/create/' ?>"><?php _e( 'Create a Group', 'buddypress' ) ?></a><?php endif; ?></h3>
 
 			<?php do_action( 'bp_before_directory_groups_content' ) ?>
 
Index: bp-core/bp-core-templatetags.php
===================================================================
--- bp-core/bp-core-templatetags.php	(revision 3725)
+++ bp-core/bp-core-templatetags.php	(working copy)
@@ -162,7 +162,7 @@
 	}
 
 	// Make sure we return no members if we looking at friendship requests and there are none.
-	if ( empty( $include ) && $bp->friends->slug == $bp->current_component && 'requests' == $bp->current_action )
+	if ( empty( $include ) && bp_core_is_current_component( $bp->friends->slug ) && 'requests' == $bp->current_action )
 		return false;
 
 	$members_template = new BP_Core_Members_Template( $type, $page, $per_page, $max, $user_id, $search_terms, $include, (bool)$populate_extras, $exclude );
@@ -582,12 +582,16 @@
  */
 function bp_get_options_nav() {
 	global $bp;
-
-	if ( count( $bp->bp_options_nav[$bp->current_component] ) < 1 )
+	
+	// If we are looking at a member profile, then the we can use the current component as an
+	// index. Otherwise we need to use the component's root_slug
+	$component_index = !empty( $bp->displayed_user ) ? $bp->current_component : bp_get_root_slug( $bp->current_component );
+	
+	if ( count( $bp->bp_options_nav[$component_index] ) < 1 )
 		return false;
 
 	/* Loop through each navigation item */
-	foreach ( (array)$bp->bp_options_nav[$bp->current_component] as $subnav_item ) {
+	foreach ( (array)$bp->bp_options_nav[$component_index] as $subnav_item ) {
 		if ( !$subnav_item['user_has_access'] )
 			continue;
 
@@ -1556,6 +1560,59 @@
 		return apply_filters( 'bp_get_root_domain', $bp->root_domain );
 	}
 
+/**
+ * Echoes the output of bp_get_root_slug()
+ *
+ * @package BuddyPress Core
+ * @since 1.3
+ */
+function bp_root_slug() {
+	echo bp_get_root_slug();
+}
+	/**
+	 * Gets the root slug for a component slug
+	 *
+	 * In order to maintain backward compatibility, the following procedure is used:
+	 * 1) Use the short slug to get the canonical component name from the
+	 *    active component array
+	 * 2) Use the component name to get the root slug out of the appropriate part of the $bp
+	 *    global
+	 * 3) If nothing turns up, it probably means that $component is itself a root slug
+	 *
+	 * Example: If your groups directory is at /community/companies, this function first uses
+	 * the short slug 'companies' (ie the current component) to look up the canonical name
+	 * 'groups' in $bp->active_components. Then it uses 'groups' to get the root slug, from
+	 * $bp->groups->root_slug.
+	 *
+	 * @package BuddyPress Core
+	 * @since 1.3
+	 *
+	 * @global $bp The global BuddyPress settings variable created in bp_core_setup_globals()
+	 * @param string $component Optional. Defaults to the current component
+	 * @return string $root_slug The root slug
+	 */
+	function bp_get_root_slug( $component = false ) {
+		global $bp;
+		
+		$root_slug = '';
+		
+		if ( !$component ) {
+			$component = $bp->current_component;
+		}
+		
+		if ( !empty( $bp->active_components[$component] ) ) {
+			$component_name = $bp->active_components[$component];
+			
+			if ( !empty( $bp->{$component_name}->root_slug ) ) 
+				$root_slug = $bp->{$component_name}->root_slug;
+		}
+		
+		if ( empty( $root_slug ) )
+			$root_slug = $component;
+			
+		return apply_filters( 'bp_get_root_slug', $root_slug );
+	}
+
 /* Template is_() functions to determine the current page */
 
 /**
@@ -1662,7 +1719,7 @@
 function bp_is_profile_component() {
 	global $bp;
 
-	if ( BP_XPROFILE_SLUG == $bp->current_component )
+	if ( bp_core_is_current_component( BP_XPROFILE_SLUG ) )
 		return true;
 
 	return false;
@@ -1671,7 +1728,7 @@
 function bp_is_activity_component() {
 	global $bp;
 
-	if ( BP_ACTIVITY_SLUG == $bp->current_component )
+	if ( bp_core_is_current_component( BP_ACTIVITY_SLUG ) )
 		return true;
 
 	return false;
@@ -1680,7 +1737,7 @@
 function bp_is_blogs_component() {
 	global $bp;
 
-	if ( is_multisite() && BP_BLOGS_SLUG == $bp->current_component )
+	if ( is_multisite() && bp_core_is_current_component( BP_BLOGS_SLUG ) )
 		return true;
 
 	return false;
@@ -1689,7 +1746,7 @@
 function bp_is_messages_component() {
 	global $bp;
 
-	if ( BP_MESSAGES_SLUG == $bp->current_component )
+	if ( bp_core_is_current_component( BP_MESSAGES_SLUG ) )
 		return true;
 
 	return false;
@@ -1698,7 +1755,7 @@
 function bp_is_friends_component() {
 	global $bp;
 
-	if ( BP_FRIENDS_SLUG == $bp->current_component )
+	if ( bp_core_is_current_component( BP_FRIENDS_SLUG ) )
 		return true;
 
 	return false;
@@ -1707,7 +1764,7 @@
 function bp_is_groups_component() {
 	global $bp;
 
-	if ( BP_GROUPS_SLUG == $bp->current_component )
+	if ( bp_core_is_current_component( BP_GROUPS_SLUG ) )
 		return true;
 
 	return false;
@@ -1716,7 +1773,7 @@
 function bp_is_settings_component() {
 	global $bp;
 
-	if ( BP_SETTINGS_SLUG == $bp->current_component )
+	if ( bp_core_is_current_component( BP_SETTINGS_SLUG ) )
 		return true;
 
 	return false;
@@ -1734,7 +1791,7 @@
 function bp_is_user_activity() {
 	global $bp;
 
-	if ( $bp->activity->slug == $bp->current_component )
+	if ( bp_core_is_current_component( $bp->activity->slug ) )
 		return true;
 
 	return false;
@@ -1743,7 +1800,7 @@
 function bp_is_user_friends_activity() {
 	global $bp;
 
-	if ( $bp->activity->slug == $bp->current_component && 'my-friends' == $bp->current_action )
+	if ( bp_core_is_current_component( $bp->activity->slug ) && 'my-friends' == $bp->current_action )
 		return true;
 
 	return false;
@@ -1752,7 +1809,7 @@
 function bp_is_activity_permalink() {
 	global $bp;
 
-	if ( BP_ACTIVITY_SLUG == $bp->current_component && is_numeric( $bp->current_action ) )
+	if ( bp_core_is_current_component( BP_ACTIVITY_SLUG ) && is_numeric( $bp->current_action ) )
 		return true;
 
 	return false;
@@ -1761,7 +1818,7 @@
 function bp_is_user_profile() {
 	global $bp;
 
-	if ( defined( 'BP_XPROFILE_SLUG' ) && BP_XPROFILE_SLUG == $bp->current_component || isset( $bp->core->profile->slug ) && $bp->core->profile->slug == $bp->current_component )
+	if ( defined( 'BP_XPROFILE_SLUG' ) && bp_core_is_current_component( BP_XPROFILE_SLUG ) || isset( $bp->core->profile->slug ) && bp_core_is_current_component( $bp->core->profile->slug ) )
 		return true;
 
 	return false;
@@ -1770,7 +1827,7 @@
 function bp_is_profile_edit() {
 	global $bp;
 
-	if ( BP_XPROFILE_SLUG == $bp->current_component && 'edit' == $bp->current_action )
+	if ( bp_core_is_current_component( BP_XPROFILE_SLUG ) && 'edit' == $bp->current_action )
 		return true;
 
 	return false;
@@ -1779,7 +1836,7 @@
 function bp_is_change_avatar() {
 	global $bp;
 
-	if ( BP_XPROFILE_SLUG == $bp->current_component && 'change-avatar' == $bp->current_action )
+	if ( bp_core_is_current_component( BP_XPROFILE_SLUG ) && 'change-avatar' == $bp->current_action )
 		return true;
 
 	return false;
@@ -1787,8 +1844,8 @@
 
 function bp_is_user_groups() {
 	global $bp;
-
-	if ( $bp->groups->slug == $bp->current_component )
+	
+	if ( bp_core_is_current_component( BP_GROUPS_SLUG ) )
 		return true;
 
 	return false;
@@ -1796,8 +1853,8 @@
 
 function bp_is_group() {
 	global $bp;
-
-	if ( BP_GROUPS_SLUG == $bp->current_component && isset( $bp->groups->current_group ) && $bp->groups->current_group )
+	
+	if ( bp_core_is_current_component( BP_GROUPS_SLUG ) && isset( $bp->groups->current_group ) && $bp->groups->current_group )
 		return true;
 
 	return false;
@@ -1806,7 +1863,7 @@
 function bp_is_group_home() {
 	global $bp;
 
-	if ( BP_GROUPS_SLUG == $bp->current_component && $bp->is_single_item && ( !$bp->current_action || 'home' == $bp->current_action ) )
+	if ( bp_core_is_current_component( BP_GROUPS_SLUG ) && $bp->is_single_item && ( !$bp->current_action || 'home' == $bp->current_action ) )
 		return true;
 
 	return false;
@@ -1815,7 +1872,7 @@
 function bp_is_group_create() {
 	global $bp;
 
-	if ( BP_GROUPS_SLUG == $bp->current_component && 'create' == $bp->current_action )
+	if ( bp_core_is_current_component( BP_GROUPS_SLUG ) && 'create' == $bp->current_action )
 		return true;
 
 	return false;
@@ -1825,7 +1882,7 @@
 function bp_is_group_admin_page() {
 	global $bp;
 
-	if ( BP_GROUPS_SLUG == $bp->current_component && $bp->is_single_item && 'admin' == $bp->current_action )
+	if ( bp_core_is_current_component( BP_GROUPS_SLUG ) && $bp->is_single_item && 'admin' == $bp->current_action )
 		return true;
 
 	return false;
@@ -1834,7 +1891,7 @@
 function bp_is_group_forum() {
 	global $bp;
 
-	if ( BP_GROUPS_SLUG == $bp->current_component && $bp->is_single_item && 'forum' == $bp->current_action )
+	if ( bp_core_is_current_component( BP_GROUPS_SLUG ) && $bp->is_single_item && 'forum' == $bp->current_action )
 		return true;
 
 	return false;
@@ -1843,7 +1900,7 @@
 function bp_is_group_activity() {
 	global $bp;
 
-	if ( BP_GROUPS_SLUG == $bp->current_component && $bp->is_single_item && 'activity' == $bp->current_action )
+	if ( bp_core_is_current_component( BP_GROUPS_SLUG ) && $bp->is_single_item && 'activity' == $bp->current_action )
 		return true;
 
 	return false;
@@ -1852,7 +1909,7 @@
 function bp_is_group_forum_topic() {
 	global $bp;
 
-	if ( BP_GROUPS_SLUG == $bp->current_component && $bp->is_single_item && 'forum' == $bp->current_action && isset( $bp->action_variables[0] ) && 'topic' == $bp->action_variables[0] )
+	if ( bp_core_is_current_component( BP_GROUPS_SLUG ) && $bp->is_single_item && 'forum' == $bp->current_action && isset( $bp->action_variables[0] ) && 'topic' == $bp->action_variables[0] )
 		return true;
 
 	return false;
@@ -1861,7 +1918,7 @@
 function bp_is_group_forum_topic_edit() {
 	global $bp;
 
-	if ( BP_GROUPS_SLUG == $bp->current_component && $bp->is_single_item && 'forum' == $bp->current_action && isset( $bp->action_variables[0] ) && 'topic' == $bp->action_variables[0] && isset( $bp->action_variables[2] ) && 'edit' == $bp->action_variables[2] )
+	if ( bp_core_is_current_component( BP_GROUPS_SLUG ) && $bp->is_single_item && 'forum' == $bp->current_action && isset( $bp->action_variables[0] ) && 'topic' == $bp->action_variables[0] && isset( $bp->action_variables[2] ) && 'edit' == $bp->action_variables[2] )
 		return true;
 
 	return false;
@@ -1870,7 +1927,7 @@
 function bp_is_group_members() {
 	global $bp;
 
-	if ( BP_GROUPS_SLUG == $bp->current_component && $bp->is_single_item && 'members' == $bp->current_action )
+	if ( bp_core_is_current_component( BP_GROUPS_SLUG ) && $bp->is_single_item && 'members' == $bp->current_action )
 		return true;
 
 	return false;
@@ -1879,7 +1936,7 @@
 function bp_is_group_invites() {
 	global $bp;
 
-	if ( BP_GROUPS_SLUG == $bp->current_component && 'send-invites' == $bp->current_action )
+	if ( bp_core_is_current_component( BP_GROUPS_SLUG ) && 'send-invites' == $bp->current_action )
 		return true;
 
 	return false;
@@ -1888,7 +1945,7 @@
 function bp_is_group_membership_request() {
 	global $bp;
 
-	if ( BP_GROUPS_SLUG == $bp->current_component && 'request-membership' == $bp->current_action )
+	if ( bp_core_is_current_component( BP_GROUPS_SLUG ) && 'request-membership' == $bp->current_action )
 		return true;
 
 	return false;
@@ -1897,7 +1954,7 @@
 function bp_is_group_leave() {
 	global $bp;
 
-	if ( BP_GROUPS_SLUG == $bp->current_component && $bp->is_single_item && 'leave-group' == $bp->current_action )
+	if ( bp_core_is_current_component( BP_GROUPS_SLUG ) && $bp->is_single_item && 'leave-group' == $bp->current_action )
 		return true;
 
 	return false;
@@ -1906,7 +1963,7 @@
 function bp_is_group_single() {
 	global $bp;
 
-	if ( BP_GROUPS_SLUG == $bp->current_component && $bp->is_single_item )
+	if ( bp_core_is_current_component( BP_GROUPS_SLUG ) && $bp->is_single_item )
 		return true;
 
 	return false;
@@ -1915,7 +1972,7 @@
 function bp_is_user_blogs() {
 	global $bp;
 
-	if ( is_multisite() && BP_BLOGS_SLUG == $bp->current_component )
+	if ( is_multisite() && bp_core_is_current_component( BP_BLOGS_SLUG ) )
 		return true;
 
 	return false;
@@ -1924,7 +1981,7 @@
 function bp_is_user_recent_posts() {
 	global $bp;
 
-	if ( is_multisite() && BP_BLOGS_SLUG == $bp->current_component && 'recent-posts' == $bp->current_action )
+	if ( is_multisite() && bp_core_is_current_component( BP_BLOGS_SLUG ) && 'recent-posts' == $bp->current_action )
 		return true;
 
 	return false;
@@ -1933,7 +1990,7 @@
 function bp_is_user_recent_commments() {
 	global $bp;
 
-	if ( is_multisite() && BP_BLOGS_SLUG == $bp->current_component && 'recent-comments' == $bp->current_action )
+	if ( is_multisite() && bp_core_is_current_component( BP_BLOGS_SLUG ) && 'recent-comments' == $bp->current_action )
 		return true;
 
 	return false;
@@ -1942,7 +1999,7 @@
 function bp_is_create_blog() {
 	global $bp;
 
-	if ( is_multisite() && BP_BLOGS_SLUG == $bp->current_component && 'create' == $bp->current_action )
+	if ( is_multisite() && bp_core_is_current_component( BP_BLOGS_SLUG ) && 'create' == $bp->current_action )
 		return true;
 
 	return false;
@@ -1951,7 +2008,7 @@
 function bp_is_user_friends() {
 	global $bp;
 
-	if ( BP_FRIENDS_SLUG == $bp->current_component )
+	if ( bp_core_is_current_component( BP_FRIENDS_SLUG ) )
 		return true;
 
 	return false;
@@ -1960,7 +2017,7 @@
 function bp_is_friend_requests() {
 	global $bp;
 
-	if ( BP_FRIENDS_SLUG == $bp->current_component && 'requests' == $bp->current_action )
+	if ( bp_core_is_current_component( BP_FRIENDS_SLUG ) && 'requests' == $bp->current_action )
 		return true;
 
 	return false;
@@ -1969,7 +2026,7 @@
 function bp_is_user_messages() {
 	global $bp;
 
-	if ( BP_MESSAGES_SLUG == $bp->current_component )
+	if ( bp_core_is_current_component( BP_MESSAGES_SLUG ) )
 		return true;
 
 	return false;
@@ -1978,7 +2035,7 @@
 function bp_is_messages_inbox() {
 	global $bp;
 
-	if ( BP_MESSAGES_SLUG == $bp->current_component && ( !$bp->current_action || 'inbox' == $bp->current_action ) )
+	if ( bp_core_is_current_component( BP_MESSAGES_SLUG ) && ( !$bp->current_action || 'inbox' == $bp->current_action ) )
 		return true;
 
 	return false;
@@ -1987,7 +2044,7 @@
 function bp_is_messages_sentbox() {
 	global $bp;
 
-	if ( BP_MESSAGES_SLUG == $bp->current_component && 'sentbox' == $bp->current_action )
+	if ( bp_core_is_current_component( BP_MESSAGES_SLUG ) && 'sentbox' == $bp->current_action )
 		return true;
 
 	return false;
@@ -1997,7 +2054,7 @@
 function bp_is_notices() {
 	global $bp;
 
-	if ( BP_MESSAGES_SLUG == $bp->current_component && 'notices' == $bp->current_action )
+	if ( bp_core_is_current_component( BP_MESSAGES_SLUG ) && 'notices' == $bp->current_action )
 		return true;
 
 	return false;
@@ -2007,7 +2064,7 @@
 function bp_is_messages_compose_screen() {
 	global $bp;
 
-	if ( BP_MESSAGES_SLUG == $bp->current_component && 'compose' == $bp->current_action )
+	if ( bp_core_is_current_component( BP_MESSAGES_SLUG ) && 'compose' == $bp->current_action )
 		return true;
 
 	return false;
@@ -2025,7 +2082,7 @@
 function bp_is_activation_page() {
 	global $bp;
 
-	if ( BP_ACTIVATION_SLUG == $bp->current_component )
+	if ( bp_core_is_current_component( BP_ACTIVATION_SLUG ) )
 		return true;
 
 	return false;
@@ -2034,7 +2091,7 @@
 function bp_is_register_page() {
 	global $bp;
 
-	if ( BP_REGISTER_SLUG == $bp->current_component )
+	if ( bp_core_is_current_component( BP_REGISTER_SLUG ) )
 		return true;
 
 	return false;
Index: bp-activity/bp-activity-templatetags.php
===================================================================
--- bp-activity/bp-activity-templatetags.php	(revision 3725)
+++ bp-activity/bp-activity-templatetags.php	(working copy)
@@ -198,7 +198,7 @@
 		'show_hidden' => $show_hidden, // Show activity items that are hidden site-wide?
 
 		/* Scope - pre-built activity filters for a user (friends/groups/favorites/mentions) */
-		'scope' => $bp->current_action,
+		'scope' => $scope,
 
 		/* Filtering */
 		'user_id' => $user_id, // user_id to filter on
Index: bp-blogs.php
===================================================================
--- bp-blogs.php	(revision 3725)
+++ bp-blogs.php	(working copy)
@@ -9,15 +9,17 @@
 function bp_blogs_setup_globals() {
 	global $bp, $wpdb;
 
-	if ( !defined( 'BP_BLOGS_SLUG' ) && isset( $bp->pages->blogs->slug ) )
-		define ( 'BP_BLOGS_SLUG', $bp->pages->blogs->slug );
-	elseif( !defined( 'BP_BLOGS_SLUG' ) )
+	if ( !defined( 'BP_BLOGS_SLUG' ) && isset( $bp->pages->blogs->slug ) ) {
+		define ( 'BP_BLOGS_SLUG', bp_core_component_slug_from_root_slug( $bp->pages->blogs->slug ) );
+	} else if( !defined( 'BP_BLOGS_SLUG' ) ) {
 		define ( 'BP_BLOGS_SLUG', 'blogs' );
+	}
 
 	// For internal identification
 	$bp->blogs->id = 'blogs';
 
 	$bp->blogs->slug = BP_BLOGS_SLUG;
+	$bp->blogs->root_slug = $bp->pages->blogs->slug;
 
 	$bp->blogs->table_name          = $bp->table_prefix . 'bp_user_blogs';
 	$bp->blogs->table_name_blogmeta = $bp->table_prefix . 'bp_user_blogs_blogmeta';
Index: bp-forums.php
===================================================================
--- bp-forums.php	(revision 3725)
+++ bp-forums.php	(working copy)
@@ -20,13 +20,14 @@
 	global $bp;
         
         if ( !defined( 'BP_FORUMS_SLUG' ) )
-                define ( 'BP_FORUMS_SLUG', $bp->pages->forums->slug );
+                define ( 'BP_FORUMS_SLUG', bp_core_component_slug_from_root_slug( $bp->pages->forums->slug ) );
 
 	// For internal identification
 	$bp->forums->id = 'forums';
 
 	$bp->forums->image_base = BP_PLUGIN_URL . '/bp-forums/images';
 	$bp->forums->slug = BP_FORUMS_SLUG;
+	$bp->forums->root_slug = $bp->pages->forums->slug;
 
 	if ( isset( $bp->site_options['bb-config-location'] ) )
 		$bp->forums->bbconfig = $bp->site_options['bb-config-location'];
Index: bp-groups.php
===================================================================
--- bp-groups.php	(revision 3725)
+++ bp-groups.php	(working copy)
@@ -13,13 +13,15 @@
 function groups_setup_globals() {
 	global $bp;
 
+	// Define a slug, if necessary
 	if ( !defined( 'BP_GROUPS_SLUG' ) )
-		define ( 'BP_GROUPS_SLUG', $bp->pages->groups->slug );
+		define ( 'BP_GROUPS_SLUG', bp_core_component_slug_from_root_slug( $bp->pages->groups->slug ) );
 
 	/* For internal identification */
 	$bp->groups->id = 'groups';
 	$bp->groups->name = $bp->pages->groups->name;
 	$bp->groups->slug = BP_GROUPS_SLUG;
+	$bp->groups->root_slug = $bp->pages->groups->slug;
 
 	$bp->groups->table_name           = $bp->table_prefix . 'bp_groups';
 	$bp->groups->table_name_members   = $bp->table_prefix . 'bp_groups_members';
@@ -56,7 +58,7 @@
 function groups_setup_nav() {
 	global $bp;
 
-	if ( $bp->current_component == $bp->groups->slug && $group_id = BP_Groups_Group::group_exists($bp->current_action) ) {
+	if ( bp_core_is_current_component( $bp->groups->slug ) && $group_id = BP_Groups_Group::group_exists($bp->current_action) ) {
 
 		/* This is a single group page. */
 		$bp->is_single_item = true;
@@ -80,15 +82,15 @@
 	}
 
 	/* Add 'Groups' to the main navigation */
-	bp_core_new_nav_item( array( 'name' => sprintf( __( 'Groups <span>(%d)</span>', 'buddypress' ), groups_total_groups_for_user() ), 'slug' => $bp->groups->name, 'position' => 70, 'screen_function' => 'groups_screen_my_groups', 'default_subnav_slug' => 'my-groups', 'item_css_id' => $bp->groups->id ) );
+	bp_core_new_nav_item( array( 'name' => sprintf( __( 'Groups <span>(%d)</span>', 'buddypress' ), groups_total_groups_for_user() ), 'slug' => $bp->groups->slug, 'position' => 70, 'screen_function' => 'groups_screen_my_groups', 'default_subnav_slug' => 'my-groups', 'item_css_id' => $bp->groups->id ) );
 
-	$groups_link = $bp->loggedin_user->domain . $bp->groups->name . '/';
+	$groups_link = $bp->loggedin_user->domain . $bp->groups->slug . '/';
 
 	/* Add the subnav items to the groups nav item */
-	bp_core_new_subnav_item( array( 'name' => __( 'My Groups', 'buddypress' ), 'slug' => 'my-groups', 'parent_url' => $groups_link, 'parent_slug' => $bp->groups->name, 'screen_function' => 'groups_screen_my_groups', 'position' => 10, 'item_css_id' => 'groups-my-groups' ) );
-	bp_core_new_subnav_item( array( 'name' => __( 'Invites', 'buddypress' ), 'slug' => 'invites', 'parent_url' => $groups_link, 'parent_slug' => $bp->groups->name, 'screen_function' => 'groups_screen_group_invites', 'position' => 30, 'user_has_access' => bp_is_my_profile() ) );
+	bp_core_new_subnav_item( array( 'name' => __( 'My Groups', 'buddypress' ), 'slug' => 'my-groups', 'parent_url' => $groups_link, 'parent_slug' => $bp->groups->slug, 'screen_function' => 'groups_screen_my_groups', 'position' => 10, 'item_css_id' => 'groups-my-groups' ) );
+	bp_core_new_subnav_item( array( 'name' => __( 'Invites', 'buddypress' ), 'slug' => 'invites', 'parent_url' => $groups_link, 'parent_slug' => $bp->groups->slug, 'screen_function' => 'groups_screen_group_invites', 'position' => 30, 'user_has_access' => bp_is_my_profile() ) );
 
-	if ( $bp->current_component == $bp->groups->slug ) {
+	if ( bp_core_is_current_component( $bp->groups->slug ) ) {
 
 		if ( bp_is_my_profile() && !$bp->is_single_item ) {
 
@@ -114,7 +116,7 @@
 			if ( !$bp->bp_options_avatar = bp_core_fetch_avatar( array( 'item_id' => $bp->groups->current_group->id, 'object' => 'group', 'type' => 'thumb', 'avatar_dir' => 'group-avatars', 'alt' => __( 'Group Avatar', 'buddypress' ) ) ) )
 				$bp->bp_options_avatar = '<img src="' . esc_attr( $group->avatar_full ) . '" class="avatar" alt="' . esc_attr( $group->name ) . '" />';
 
-			$group_link = $bp->root_domain . '/' . $bp->groups->slug . '/' . $bp->groups->current_group->slug . '/';
+			$group_link = $bp->root_domain . '/' . $bp->groups->root_slug . '/' . $bp->groups->current_group->slug . '/';
 
 			// If this is a private or hidden group, does the user have access?
 			if ( 'private' == $bp->groups->current_group->status || 'hidden' == $bp->groups->current_group->status ) {
@@ -127,30 +129,30 @@
 			}
 
 			/* Reset the existing subnav items */
-			bp_core_reset_subnav_items($bp->groups->slug);
+			bp_core_reset_subnav_items($bp->groups->root_slug);
 
 			/* Add a new default subnav item for when the groups nav is selected. */
-			bp_core_new_nav_default( array( 'parent_slug' => $bp->groups->slug, 'screen_function' => 'groups_screen_group_home', 'subnav_slug' => 'home' ) );
+			bp_core_new_nav_default( array( 'parent_slug' => $bp->groups->root_slug, 'screen_function' => 'groups_screen_group_home', 'subnav_slug' => 'home' ) );
 
 			/* Add the "Home" subnav item, as this will always be present */
-			bp_core_new_subnav_item( array( 'name' => __( 'Home', 'buddypress' ), 'slug' => 'home', 'parent_url' => $group_link, 'parent_slug' => $bp->groups->slug, 'screen_function' => 'groups_screen_group_home', 'position' => 10, 'item_css_id' => 'home' ) );
+			bp_core_new_subnav_item( array( 'name' => __( 'Home', 'buddypress' ), 'slug' => 'home', 'parent_url' => $group_link, 'parent_slug' => $bp->groups->root_slug, 'screen_function' => 'groups_screen_group_home', 'position' => 10, 'item_css_id' => 'home' ) );
 
 			/* If the user is a group mod or more, then show the group admin nav item */
 			if ( $bp->is_item_mod || $bp->is_item_admin )
-				bp_core_new_subnav_item( array( 'name' => __( 'Admin', 'buddypress' ), 'slug' => 'admin', 'parent_url' => $group_link, 'parent_slug' => $bp->groups->slug, 'screen_function' => 'groups_screen_group_admin', 'position' => 20, 'user_has_access' => ( $bp->is_item_admin + (int)$bp->is_item_mod ), 'item_css_id' => 'admin' ) );
+				bp_core_new_subnav_item( array( 'name' => __( 'Admin', 'buddypress' ), 'slug' => 'admin', 'parent_url' => $group_link, 'parent_slug' => $bp->groups->root_slug, 'screen_function' => 'groups_screen_group_admin', 'position' => 20, 'user_has_access' => ( $bp->is_item_admin + (int)$bp->is_item_mod ), 'item_css_id' => 'admin' ) );
 
 			// If this is a private group, and the user is not a member, show a "Request Membership" nav item.
 			if ( !is_super_admin() && is_user_logged_in() && !$bp->groups->current_group->is_user_member && !groups_check_for_membership_request( $bp->loggedin_user->id, $bp->groups->current_group->id ) && $bp->groups->current_group->status == 'private' )
-				bp_core_new_subnav_item( array( 'name' => __( 'Request Membership', 'buddypress' ), 'slug' => 'request-membership', 'parent_url' => $group_link, 'parent_slug' => $bp->groups->slug, 'screen_function' => 'groups_screen_group_request_membership', 'position' => 30 ) );
+				bp_core_new_subnav_item( array( 'name' => __( 'Request Membership', 'buddypress' ), 'slug' => 'request-membership', 'parent_url' => $group_link, 'parent_slug' => $bp->groups->root_slug, 'screen_function' => 'groups_screen_group_request_membership', 'position' => 30 ) );
 
 			if ( $bp->groups->current_group->enable_forum && function_exists('bp_forums_setup') )
-				bp_core_new_subnav_item( array( 'name' => __( 'Forum', 'buddypress' ), 'slug' => 'forum', 'parent_url' => $group_link, 'parent_slug' => $bp->groups->slug, 'screen_function' => 'groups_screen_group_forum', 'position' => 40, 'user_has_access' => $bp->groups->current_group->user_has_access, 'item_css_id' => 'forums' ) );
+				bp_core_new_subnav_item( array( 'name' => __( 'Forum', 'buddypress' ), 'slug' => 'forum', 'parent_url' => $group_link, 'parent_slug' => $bp->groups->root_slug, 'screen_function' => 'groups_screen_group_forum', 'position' => 40, 'user_has_access' => $bp->groups->current_group->user_has_access, 'item_css_id' => 'forums' ) );
 
-			bp_core_new_subnav_item( array( 'name' => sprintf( __( 'Members (%s)', 'buddypress' ), number_format( $bp->groups->current_group->total_member_count ) ), 'slug' => 'members', 'parent_url' => $group_link, 'parent_slug' => $bp->groups->slug, 'screen_function' => 'groups_screen_group_members', 'position' => 60, 'user_has_access' => $bp->groups->current_group->user_has_access, 'item_css_id' => 'members'  ) );
+			bp_core_new_subnav_item( array( 'name' => sprintf( __( 'Members (%s)', 'buddypress' ), number_format( $bp->groups->current_group->total_member_count ) ), 'slug' => 'members', 'parent_url' => $group_link, 'parent_slug' => $bp->groups->root_slug, 'screen_function' => 'groups_screen_group_members', 'position' => 60, 'user_has_access' => $bp->groups->current_group->user_has_access, 'item_css_id' => 'members'  ) );
 
 			if ( is_user_logged_in() && groups_is_user_member( $bp->loggedin_user->id, $bp->groups->current_group->id ) ) {
 				if ( bp_is_active('friends') )
-					bp_core_new_subnav_item( array( 'name' => __( 'Send Invites', 'buddypress' ), 'slug' => 'send-invites', 'parent_url' => $group_link, 'parent_slug' => $bp->groups->slug, 'screen_function' => 'groups_screen_group_invite', 'item_css_id' => 'invite', 'position' => 70, 'user_has_access' => $bp->groups->current_group->user_has_access ) );
+					bp_core_new_subnav_item( array( 'name' => __( 'Send Invites', 'buddypress' ), 'slug' => 'send-invites', 'parent_url' => $group_link, 'parent_slug' => $bp->groups->root_slug, 'screen_function' => 'groups_screen_group_invite', 'item_css_id' => 'invite', 'position' => 70, 'user_has_access' => $bp->groups->current_group->user_has_access ) );
 			}
 		}
 	}
@@ -164,8 +166,8 @@
 
 function groups_directory_groups_setup() {
 	global $bp;
-
-	if ( $bp->current_component == $bp->groups->slug && empty( $bp->current_action ) && empty( $bp->current_item ) ) {
+	
+	if ( bp_core_is_current_component( $bp->groups->slug ) && empty( $bp->current_action ) && empty( $bp->current_item ) ) {
 		$bp->is_directory = true;
 
 		do_action( 'groups_directory_groups_setup' );
@@ -598,7 +600,7 @@
 function groups_screen_group_activity_permalink() {
 	global $bp;
 
-	if ( $bp->current_component != $bp->groups->slug || $bp->current_action != $bp->activity->slug || empty( $bp->action_variables[0] ) )
+	if ( !bp_core_is_current_component( $bp->groups->slug ) || $bp->current_action != $bp->activity->slug || empty( $bp->action_variables[0] ) )
 		return false;
 
 	$bp->is_single_item = true;
@@ -610,7 +612,7 @@
 function groups_screen_group_admin() {
 	global $bp;
 
-	if ( $bp->current_component != BP_GROUPS_SLUG || 'admin' != $bp->current_action )
+	if ( !bp_core_is_current_component( BP_GROUPS_SLUG ) || 'admin' != $bp->current_action )
 		return false;
 
 	if ( !empty( $bp->action_variables[0] ) )
@@ -622,7 +624,7 @@
 function groups_screen_group_admin_edit_details() {
 	global $bp;
 
-	if ( $bp->current_component == $bp->groups->slug && 'edit-details' == $bp->action_variables[0] ) {
+	if ( bp_core_is_current_component( $bp->groups->slug ) && 'edit-details' == $bp->action_variables[0] ) {
 
 		if ( $bp->is_item_admin || $bp->is_item_mod  ) {
 
@@ -654,7 +656,7 @@
 function groups_screen_group_admin_settings() {
 	global $bp;
 
-	if ( $bp->current_component == $bp->groups->slug && 'group-settings' == $bp->action_variables[0] ) {
+	if ( bp_core_is_current_component( $bp->groups->slug ) && 'group-settings' == $bp->action_variables[0] ) {
 
 		if ( !$bp->is_item_admin )
 			return false;
@@ -691,7 +693,7 @@
 function groups_screen_group_admin_avatar() {
 	global $bp;
 
-	if ( $bp->current_component == $bp->groups->slug && 'group-avatar' == $bp->action_variables[0] ) {
+	if ( bp_core_is_current_component( $bp->groups->slug ) && 'group-avatar' == $bp->action_variables[0] ) {
 
 		if ( !$bp->is_item_admin )
 			return false;
@@ -749,7 +751,7 @@
 function groups_screen_group_admin_manage_members() {
 	global $bp;
 
-	if ( $bp->current_component == $bp->groups->slug && 'manage-members' == $bp->action_variables[0] ) {
+	if ( bp_core_is_current_component( $bp->groups->slug ) && 'manage-members' == $bp->action_variables[0] ) {
 
 		if ( !$bp->is_item_admin )
 			return false;
@@ -855,7 +857,7 @@
 function groups_screen_group_admin_requests() {
 	global $bp;
 
-	if ( $bp->current_component == $bp->groups->slug && 'membership-requests' == $bp->action_variables[0] ) {
+	if ( bp_core_is_current_component( $bp->groups->slug ) && 'membership-requests' == $bp->action_variables[0] ) {
 
 		/* Ask for a login if the user is coming here via an email notification */
 		if ( !is_user_logged_in() )
@@ -913,7 +915,7 @@
 function groups_screen_group_admin_delete_group() {
 	global $bp;
 
-	if ( $bp->current_component == $bp->groups->slug && 'delete-group' == $bp->action_variables[0] ) {
+	if ( bp_core_is_current_component( $bp->groups->slug ) && 'delete-group' == $bp->action_variables[0] ) {
 
 		if ( !$bp->is_item_admin && !is_super_admin() )
 			return false;
@@ -1021,7 +1023,7 @@
 	global $bp;
 
 	/* If we're not at domain.org/groups/create/ then return false */
-	if ( $bp->current_component != $bp->groups->slug || 'create' != $bp->current_action )
+	if ( !bp_core_is_current_component( $bp->groups->slug ) || 'create' != $bp->current_action )
 		return false;
 
 	if ( !is_user_logged_in() )
@@ -1040,13 +1042,13 @@
 		setcookie( 'bp_completed_create_steps', false, time() - 1000, COOKIEPATH );
 
 		$reset_steps = true;
-		bp_core_redirect( $bp->root_domain . '/' . $bp->groups->slug . '/create/step/' . array_shift( array_keys( $bp->groups->group_creation_steps ) ) . '/' );
+		bp_core_redirect( $bp->root_domain . '/' . $bp->groups->root_slug . '/create/step/' . array_shift( array_keys( $bp->groups->group_creation_steps ) ) . '/' );
 	}
 
 	/* If this is a creation step that is not recognized, just redirect them back to the first screen */
 	if ( $bp->action_variables[1] && !$bp->groups->group_creation_steps[$bp->action_variables[1]] ) {
 		bp_core_add_message( __('There was an error saving group details. Please try again.', 'buddypress'), 'error' );
-		bp_core_redirect( $bp->root_domain . '/' . $bp->groups->slug . '/create/' );
+		bp_core_redirect( $bp->root_domain . '/' . $bp->groups->root_slug . '/create/' );
 	}
 
 	/* Fetch the currently completed steps variable */
@@ -1068,14 +1070,14 @@
 		if ( 'group-details' == $bp->groups->current_create_step ) {
 			if ( empty( $_POST['group-name'] ) || empty( $_POST['group-desc'] ) || !strlen( trim( $_POST['group-name'] ) ) || !strlen( trim( $_POST['group-desc'] ) ) ) {
 				bp_core_add_message( __( 'Please fill in all of the required fields', 'buddypress' ), 'error' );
-				bp_core_redirect( $bp->root_domain . '/' . $bp->groups->slug . '/create/step/' . $bp->groups->current_create_step . '/' );
+				bp_core_redirect( $bp->root_domain . '/' . $bp->groups->root_slug . '/create/step/' . $bp->groups->current_create_step . '/' );
 			}
 
 			$new_group_id = isset( $bp->groups->new_group_id ) ? $bp->groups->new_group_id : 0;
 
 			if ( !$bp->groups->new_group_id = groups_create_group( array( 'group_id' => $new_group_id, 'name' => $_POST['group-name'], 'description' => $_POST['group-desc'], 'slug' => groups_check_slug( sanitize_title( esc_attr( $_POST['group-name'] ) ) ), 'date_created' => bp_core_current_time(), 'status' => 'public' ) ) ) {
 				bp_core_add_message( __( 'There was an error saving group details, please try again.', 'buddypress' ), 'error' );
-				bp_core_redirect( $bp->root_domain . '/' . $bp->groups->slug . '/create/step/' . $bp->groups->current_create_step . '/' );
+				bp_core_redirect( $bp->root_domain . '/' . $bp->groups->root_slug . '/create/step/' . $bp->groups->current_create_step . '/' );
 			}
 
 			groups_update_groupmeta( $bp->groups->new_group_id, 'total_member_count', 1 );
@@ -1102,7 +1104,7 @@
 
 			if ( !$bp->groups->new_group_id = groups_create_group( array( 'group_id' => $bp->groups->new_group_id, 'status' => $group_status, 'enable_forum' => $group_enable_forum ) ) ) {
 				bp_core_add_message( __( 'There was an error saving group details, please try again.', 'buddypress' ), 'error' );
-				bp_core_redirect( $bp->root_domain . '/' . $bp->groups->slug . '/create/step/' . $bp->groups->current_create_step . '/' );
+				bp_core_redirect( $bp->root_domain . '/' . $bp->groups->root_slug . '/create/step/' . $bp->groups->current_create_step . '/' );
 			}
 		}
 
@@ -1158,7 +1160,7 @@
 				}
 			}
 
-			bp_core_redirect( $bp->root_domain . '/' . $bp->groups->slug . '/create/step/' . $next_step . '/' );
+			bp_core_redirect( $bp->root_domain . '/' . $bp->groups->root_slug . '/create/step/' . $next_step . '/' );
 		}
 	}
 
@@ -1194,7 +1196,7 @@
 function groups_action_join_group() {
 	global $bp;
 
-	if ( !$bp->is_single_item || $bp->current_component != $bp->groups->slug || $bp->current_action != 'join' )
+	if ( !$bp->is_single_item || !bp_core_is_current_component( $bp->groups->slug ) || $bp->current_action != 'join' )
 		return false;
 
 	// Nonce check
@@ -1229,7 +1231,7 @@
 function groups_action_leave_group() {
 	global $bp;
 
-	if ( !$bp->is_single_item || $bp->current_component != $bp->groups->slug || $bp->current_action != 'leave-group' )
+	if ( !$bp->is_single_item || !bp_core_is_current_component( $bp->groups->slug ) || $bp->current_action != 'leave-group' )
 		return false;
 
 	// Nonce check
@@ -1254,7 +1256,7 @@
 function groups_action_sort_creation_steps() {
 	global $bp;
 
-	if ( $bp->current_component != BP_GROUPS_SLUG && $bp->current_action != 'create' )
+	if ( !bp_core_is_current_component( BP_GROUPS_SLUG ) && $bp->current_action != 'create' )
 		return false;
 
 	if ( !is_array( $bp->groups->group_creation_steps ) )
@@ -1278,7 +1280,7 @@
 function groups_action_redirect_to_random_group() {
 	global $bp, $wpdb;
 
-	if ( $bp->current_component == $bp->groups->slug && isset( $_GET['random-group'] ) ) {
+	if ( bp_core_is_current_component( $bp->groups->slug ) && isset( $_GET['random-group'] ) ) {
 		$group = groups_get_groups( array( 'type' => 'random', 'per_page' => 1 ) );
 
 		bp_core_redirect( $bp->root_domain . '/' . $bp->groups->slug . '/' . $group['groups'][0]->slug . '/' );
@@ -1289,7 +1291,7 @@
 function groups_action_group_feed() {
 	global $bp, $wp_query;
 
-	if ( !bp_is_active( 'activity' ) || $bp->current_component != $bp->groups->slug || !isset( $bp->groups->current_group ) || $bp->current_action != 'feed' )
+	if ( !bp_is_active( 'activity' ) || !bp_core_is_current_component( $bp->groups->slug ) || !isset( $bp->groups->current_group ) || $bp->current_action != 'feed' )
 		return false;
 
 	$wp_query->is_404 = false;
Index: bp-core.php
===================================================================
--- bp-core.php	(revision 3725)
+++ bp-core.php	(working copy)
@@ -284,6 +284,32 @@
 	return apply_filters( 'bp_core_get_page_names', $pages );
 }
 
+/** 
+ * Creates a default component slug from a WP page root_slug 
+ * 
+ * Since 1.3, BP components get their root_slug (the slug used immediately following the root 
+ * domain) from the slug of a corresponding WP page. E.g. if your BP installation at example.com 
+ * has its members page at example.com/community/people, $bp->members->root_slug will be 
+ * 'community/people'. By default, this function creates a shorter version of the root_slug for 
+ * use elsewhere in the URL, by returning the content after the final '/' in the root_slug 
+ * ('people' in the example above). 
+ * 
+ * Filter on 'bp_core_component_slug_from_root_slug' to override this method in general, or define a 
+ * specific component slug constant (e.g. BP_MEMBERS_SLUG) to override specific component slugs. 
+ *  
+ * @package BuddyPress Core 
+ * @since 1.3 
+ * 
+ * @param str $root_slug The root slug, which comes from $bp->pages->[component]->slug 
+ * @return str $slug The short slug for use in the middle of URLs 
+ */ 
+function bp_core_component_slug_from_root_slug( $root_slug ) { 
+	$slug_chunks = explode( '/', $root_slug ); 
+ 	$slug = array_pop( $slug_chunks ); 
+ 	
+ 	return apply_filters( 'bp_core_component_slug_from_root_slug', $slug, $root_slug ); 
+ } 
+
 /**
  * bp_core_admin_menu_init()
  *
@@ -332,6 +358,61 @@
 }
 add_action( is_multisite() ? 'network_admin_menu' : 'admin_menu', 'bp_core_add_admin_menu', 9 );
 
+/** 
+ * Checks to see whether the current page belongs to the specified component 
+ * 
+ * This function is designed to be generous, accepting several different kinds of value for 
+ * the $component parameter. It checks $component_name against: 
+ *      - the component's root_slug, which matches the page slug in $bp->pages 
+ *      - the component's regular slug 
+ *      - the component's id, or 'canonical' name 
+ * 
+ * @package BuddyPress Core 
+ * @since 1.3 
+ * @return bool Returns true if the component matches, or else false. 
+ */ 
+function bp_core_is_current_component( $component ) { 
+	global $bp; 
+ 	
+ 	$is_current_component = false; 
+ 	
+ 	if ( !empty( $bp->current_component ) ) {
+ 		if ( $bp->current_component == $component ) {
+ 		
+ 			// First, check to see whether $component_name and the current
+ 			// component are a simple match
+ 			$is_current_component = true;
+ 		
+ 		} else if ( $key = array_search( $component, $bp->active_components ) ) {
+ 		
+ 			// Next, check to see whether $component is a canonical, non-translatable 
+ 			// component name. If so, we can return its corresponding slug from $bp->
+ 			// active_components.
+ 			
+ 			if ( $key === $bp->current_component )
+ 				$is_current_component = true;
+ 		
+ 		} else {
+ 		
+ 			// If we haven't found a match yet, check against the root_slugs created
+ 			// by $bp->pages
+ 			foreach ( $bp->active_components as $key => $id ) {
+ 				// If the $component parameter does not match the current_component,
+ 				// then move along, these are not the droids you are looking for
+ 				if ( $bp->{$id}->root_slug != $bp->current_component )
+ 					continue;
+ 				
+ 				if ( $key == $component ) {
+ 					$is_current_component = true;
+ 					break;
+ 				}
+ 			}
+ 		}
+ 	}
+	         
+ 	return apply_filters( 'bp_core_is_current_component', $is_current_component, $component_name ); 
+} 
+
 /**
  * bp_core_is_root_component()
  *
@@ -343,9 +424,9 @@
  */
 function bp_core_is_root_component( $component_name ) {
 	global $bp;
-
-	foreach ( (array) $bp->pages as $key => $page ) {
-		if ( $key == $component_name || $page->slug == $component_name )
+	
+	foreach ( (array) $bp->active_components as $key => $slug ) {
+		if ( $key == $component_name || $slug == $component_name )
 			return true;
 	}
 
@@ -865,7 +946,7 @@
 		'user_has_access' => $user_has_access,
 		'screen_function' => &$screen_function
 	);
-
+	
 	if ( ( $bp->current_action == $slug && $bp->current_component == $parent_slug ) && $user_has_access ) {
 		if ( !is_object( $screen_function[0] ) )
 			add_action( 'wp', $screen_function, 3 );
Index: bp-groups/bp-groups-templatetags.php
===================================================================
--- bp-groups/bp-groups-templatetags.php	(revision 3725)
+++ bp-groups/bp-groups-templatetags.php	(working copy)
@@ -350,7 +350,7 @@
 		if ( !$group )
 			$group =& $groups_template->group;
 
-		return apply_filters( 'bp_get_group_permalink', $bp->root_domain . '/' . $bp->groups->slug . '/' . $group->slug . '/' );
+		return apply_filters( 'bp_get_group_permalink', $bp->root_domain . '/' . $bp->groups->root_slug . '/' . $group->slug . '/' );
 	}
 
 function bp_group_admin_permalink() {
@@ -362,7 +362,7 @@
 		if ( !$group )
 			$group =& $groups_template->group;
 
-		return apply_filters( 'bp_get_group_admin_permalink', $bp->root_domain . '/' . $bp->groups->slug . '/' . $group->slug . '/admin' );
+		return apply_filters( 'bp_get_group_admin_permalink', $bp->root_domain . '/' . $bp->groups->root_slug . '/' . $group->slug . '/admin' );
 	}
 
 function bp_group_slug() {
@@ -547,7 +547,7 @@
 function bp_group_is_activity_permalink() {
 	global $bp;
 
-	if ( !$bp->is_single_item || $bp->current_component != $bp->groups->slug || $bp->current_action != $bp->activity->slug )
+	if ( !$bp->is_single_item || !bp_core_is_current_component( $bp->groups->slug ) || $bp->current_action != $bp->activity->slug )
 		return false;
 
 	return true;
@@ -929,24 +929,24 @@
 	$current_tab = $bp->action_variables[0];
 ?>
 	<?php if ( $bp->is_item_admin || $bp->is_item_mod ) { ?>
-		<li<?php if ( 'edit-details' == $current_tab || empty( $current_tab ) ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->root_domain . '/' . $bp->groups->slug ?>/<?php echo $group->slug ?>/admin/edit-details"><?php _e('Edit Details', 'buddypress') ?></a></li>
+		<li<?php if ( 'edit-details' == $current_tab || empty( $current_tab ) ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->root_domain . '/' . $bp->groups->root_slug ?>/<?php echo $group->slug ?>/admin/edit-details"><?php _e('Edit Details', 'buddypress') ?></a></li>
 	<?php } ?>
 
 	<?php
 		if ( !$bp->is_item_admin )
 			return false;
 	?>
-	<li<?php if ( 'group-settings' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->root_domain . '/' . $bp->groups->slug ?>/<?php echo $group->slug ?>/admin/group-settings"><?php _e('Group Settings', 'buddypress') ?></a></li>
-	<li<?php if ( 'group-avatar' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->root_domain . '/' . $bp->groups->slug ?>/<?php echo $group->slug ?>/admin/group-avatar"><?php _e('Group Avatar', 'buddypress') ?></a></li>
-	<li<?php if ( 'manage-members' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->root_domain . '/' . $bp->groups->slug ?>/<?php echo $group->slug ?>/admin/manage-members"><?php _e('Manage Members', 'buddypress') ?></a></li>
+	<li<?php if ( 'group-settings' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->root_domain . '/' . $bp->groups->root_slug ?>/<?php echo $group->slug ?>/admin/group-settings"><?php _e('Group Settings', 'buddypress') ?></a></li>
+	<li<?php if ( 'group-avatar' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->root_domain . '/' . $bp->groups->root_slug ?>/<?php echo $group->slug ?>/admin/group-avatar"><?php _e('Group Avatar', 'buddypress') ?></a></li>
+	<li<?php if ( 'manage-members' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->root_domain . '/' . $bp->groups->root_slug ?>/<?php echo $group->slug ?>/admin/manage-members"><?php _e('Manage Members', 'buddypress') ?></a></li>
 
 	<?php if ( $groups_template->group->status == 'private' ) : ?>
-		<li<?php if ( 'membership-requests' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->root_domain . '/' . $bp->groups->slug ?>/<?php echo $group->slug ?>/admin/membership-requests"><?php _e('Membership Requests', 'buddypress') ?></a></li>
+		<li<?php if ( 'membership-requests' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->root_domain . '/' . $bp->groups->root_slug ?>/<?php echo $group->slug ?>/admin/membership-requests"><?php _e('Membership Requests', 'buddypress') ?></a></li>
 	<?php endif; ?>
 
 	<?php do_action( 'groups_admin_tabs', $current_tab, $group->slug ) ?>
 
-	<li<?php if ( 'delete-group' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->root_domain . '/' . $bp->groups->slug ?>/<?php echo $group->slug ?>/admin/delete-group"><?php _e('Delete Group', 'buddypress') ?></a></li>
+	<li<?php if ( 'delete-group' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->root_domain . '/' . $bp->groups->root_slug ?>/<?php echo $group->slug ?>/admin/delete-group"><?php _e('Delete Group', 'buddypress') ?></a></li>
 <?php
 }
 
@@ -1619,7 +1619,7 @@
 	foreach ( (array)$bp->groups->group_creation_steps as $slug => $step ) {
 		$is_enabled = bp_are_previous_group_creation_steps_complete( $slug ); ?>
 
-		<li<?php if ( $bp->groups->current_create_step == $slug ) : ?> class="current"<?php endif; ?>><?php if ( $is_enabled ) : ?><a href="<?php echo $bp->root_domain . '/' . $bp->groups->slug ?>/create/step/<?php echo $slug ?>/"><?php else: ?><span><?php endif; ?><?php echo $counter ?>. <?php echo $step['name'] ?><?php if ( $is_enabled ) : ?></a><?php else: ?></span><?php endif ?></li><?php
+		<li<?php if ( $bp->groups->current_create_step == $slug ) : ?> class="current"<?php endif; ?>><?php if ( $is_enabled ) : ?><a href="<?php echo $bp->root_domain . '/' . $bp->groups->root_slug ?>/create/step/<?php echo $slug ?>/"><?php else: ?><span><?php endif; ?><?php echo $counter ?>. <?php echo $step['name'] ?><?php if ( $is_enabled ) : ?></a><?php else: ?></span><?php endif ?></li><?php
 		$counter++;
 	}
 
@@ -1643,14 +1643,14 @@
 		if ( empty( $bp->action_variables[1] ) )
 			$bp->action_variables[1] = array_shift( array_keys( $bp->groups->group_creation_steps ) );
 
-		return apply_filters( 'bp_get_group_creation_form_action', $bp->root_domain . '/' . $bp->groups->slug . '/create/step/' . $bp->action_variables[1] );
+		return apply_filters( 'bp_get_group_creation_form_action', $bp->root_domain . '/' . $bp->groups->root_slug . '/create/step/' . $bp->action_variables[1] );
 	}
 
 function bp_is_group_creation_step( $step_slug ) {
 	global $bp;
 
 	/* Make sure we are in the groups component */
-	if ( $bp->current_component != BP_GROUPS_SLUG || 'create' != $bp->current_action )
+	if ( !bp_core_is_current_component( BP_GROUPS_SLUG ) || 'create' != $bp->current_action )
 		return false;
 
 	/* If this the first step, we can just accept and return true */
@@ -1929,7 +1929,7 @@
 function bp_is_group_admin_screen( $slug ) {
 	global $bp;
 
-	if ( $bp->current_component != BP_GROUPS_SLUG || 'admin' != $bp->current_action )
+	if ( !bp_core_is_current_component( BP_GROUPS_SLUG ) || 'admin' != $bp->current_action )
 		return false;
 
 	if ( $bp->action_variables[0] == $slug )
