Index: bp-themes/bp-default/groups/groups-loop.php
===================================================================
--- bp-themes/bp-default/groups/groups-loop.php	(revision 2578)
+++ bp-themes/bp-default/groups/groups-loop.php	(working copy)
@@ -2,7 +2,7 @@
 
 <?php do_action( 'bp_before_groups_loop' ) ?>
 
-<?php if ( bp_has_groups( bp_ajax_querystring() ) ) : ?>
+<?php if ( bp_has_groups( bp_dtheme_ajax_querystring( 'groups' ) ) ) : ?>
 
 	<div class="pagination">
 
Index: bp-themes/bp-default/members/members-loop.php
===================================================================
--- bp-themes/bp-default/members/members-loop.php	(revision 2578)
+++ bp-themes/bp-default/members/members-loop.php	(working copy)
@@ -2,7 +2,7 @@
 
 <?php do_action( 'bp_before_members_loop' ) ?>
 
-<?php if ( bp_has_members( bp_ajax_querystring() ) ) : ?>
+<?php if ( bp_has_members( bp_dtheme_ajax_querystring( 'members' ) ) ) : ?>
 
 	<div class="pagination">
 
Index: bp-themes/bp-default/activity/activity-loop.php
===================================================================
--- bp-themes/bp-default/activity/activity-loop.php	(revision 2578)
+++ bp-themes/bp-default/activity/activity-loop.php	(working copy)
@@ -2,7 +2,7 @@
 
 <?php do_action( 'bp_before_activity_loop' ) ?>
 
-<?php if ( bp_has_activities( bp_ajax_querystring() ) ) : ?>
+<?php if ( bp_has_activities( bp_dtheme_ajax_querystring( 'activity' ) ) ) : ?>
 
 	<?php /* Show pagination if JS is not enabled, since the "Load More" link will do nothing */ ?>
 	<noscript>
Index: bp-themes/bp-default/blogs/blogs-loop.php
===================================================================
--- bp-themes/bp-default/blogs/blogs-loop.php	(revision 2578)
+++ bp-themes/bp-default/blogs/blogs-loop.php	(working copy)
@@ -2,7 +2,7 @@
 
 <?php do_action( 'bp_before_blogs_loop' ) ?>
 
-<?php if ( bp_has_blogs( bp_ajax_querystring() ) ) : ?>
+<?php if ( bp_has_blogs( bp_dtheme_ajax_querystring( 'blogs' ) ) ) : ?>
 
 	<div class="pagination">
 
Index: bp-themes/bp-default/_inc/ajax.php
===================================================================
--- bp-themes/bp-default/_inc/ajax.php	(revision 2578)
+++ bp-themes/bp-default/_inc/ajax.php	(working copy)
@@ -9,6 +9,127 @@
  * your own _inc/ajax.php file and add/remove AJAX functionality as you see fit.
  */
 
+function bp_dtheme_ajax_querystring( $object = null ) {
+	global $bp;
+
+	/* Backwards and forwards compatibility */
+	if ( empty( $object ) ) {
+		// no object? just return it
+		return apply_filters( 'bp_dtheme_ajax_querystring', bp_ajax_querystring() );
+	}
+
+	/* Handle content filtering for the THEME */
+	$c_scope = 'bp-' . $object . '-scope';
+	$c_filter = 'bp-' . $object . '-filter';
+
+	$scope = ( !empty( $_COOKIE[$c_scope] ) ) ? $_COOKIE[$c_scope] : null;
+	$filter = ( !empty( $_COOKIE[$c_filter] ) && '-1' != $_COOKIE[$c_filter] ) ? $_COOKIE[$c_filter] : null;
+
+	$defaults = array(
+		'object' => $object,
+		'scope' => $scope,
+		'type' => $filter
+	);
+
+	// Do pre-filtering
+	$r = wp_parse_args( bp_ajax_querystring(), $defaults );
+	$pre_filtered_querystring = apply_filters( 'bp_dtheme_ajax_querystring_' . $object . '_filter', http_build_query($r) );
+
+	// Return after global filter applied
+	return apply_filters( 'bp_dtheme_ajax_querystring', $pre_filtered_querystring );
+}
+
+/* Personal filtering */
+function bp_dtheme_ajax_querystring_filter_personal( $query_string ) {
+	global $bp;
+
+	$r = wp_parse_args( $query_string );
+	extract($r);
+
+	if ( !empty( $bp->displayed_user->id ) || 'personal' == $scope ) {
+		$r['user_id'] = ( !empty( $bp->displayed_user->id ) ) ? $bp->displayed_user->id : $bp->loggedin_user->id;
+		return http_build_query($r);
+	} else {
+		return $query_string;
+	}
+}
+add_filter( 'bp_dtheme_ajax_querystring_groups_filter', 'bp_dtheme_ajax_querystring_filter_personal', 1 );
+add_filter( 'bp_dtheme_ajax_querystring_forums_filter', 'bp_dtheme_ajax_querystring_filter_personal', 1 );
+add_filter( 'bp_dtheme_ajax_querystring_members_filter', 'bp_dtheme_ajax_querystring_filter_personal', 1 );
+add_filter( 'bp_dtheme_ajax_querystring_blogs_filter', 'bp_dtheme_ajax_querystring_filter_personal', 1 );
+
+/* Activity filtering */
+function bp_dtheme_ajax_querystring_activity_filter_scope( $query_string ) {
+	global $bp;
+
+	$r = wp_parse_args( $query_string );
+	extract($r);
+
+	/* User filtering */
+	if ( !empty( $bp->displayed_user->id ) )
+		$user_id = $bp->displayed_user->id;
+
+	/* Action filtering */
+	if ( !empty( $filter ) && '-1' != $filter )
+		$r['action'] = $filter;
+
+	/* User activity scope filtering */
+	if ( !empty( $user_id ) || !empty( $scope ) ) {
+
+		$current_user_id = ( !empty( $bp->displayed_user->id ) ) ? $bp->displayed_user->id : $bp->loggedin_user->id;
+
+		if ( empty( $scope ) || 'just-me' == $scope )
+			$r['display_comments'] = 'stream';
+
+		switch ( $scope ) {
+			case BP_FRIENDS_SLUG:
+				if ( function_exists( 'friends_get_friend_user_ids' ) )
+					$r['user_id'] = implode( ',', (array)friends_get_friend_user_ids( $current_user_id ) );
+				break;
+			case BP_GROUPS_SLUG:
+				if ( function_exists( 'groups_get_user_groups' ) ) {
+					$groups = groups_get_user_groups( $current_user_id );
+					$r['object'] = $bp->groups->id;
+					$r['primary_id'] = implode( ',', (array)$groups['groups'] );
+					$r['show_hidden'] = ( $current_user_id == $bp->loggedin_user->id ) ? 1 : 0;
+					$r['user_id'] = false;
+				}
+				break;
+			case 'favorites':
+				$favs = bp_activity_get_user_favorites( $current_user_id );
+				$r['include'] = implode( ',', (array)$favs );
+				$r['show_hidden'] = ( $current_user_id == $bp->loggedin_user->id ) ? 1 : 0;
+				break;
+			case 'mentions':
+				$user_nicename = ( !empty( $bp->displayed_user->id ) ) ? $bp->displayed_user->userdata->user_nicename : $bp->loggedin_user->userdata->user_nicename;
+				$user_login = ( !empty( $bp->displayed_user->id ) ) ? $bp->displayed_user->userdata->user_login : $bp->loggedin_user->userdata->user_login;
+				$r['search_terms'] = '@' . bp_core_get_username( $current_user_id, $user_nicename, $user_login );
+				$r['show_hidden'] = ( $current_user_id == $bp->loggedin_user->id ) ? 1 : 0;
+				$r['display_comments'] = 'stream';
+				$r['user_id'] = false;
+				break;
+		}
+	}
+
+	/* Group filtering */
+	if ( !empty( $bp->groups->current_group ) ) {
+
+		$r['object'] = $bp->groups->id;
+		$r['primary_id'] = $bp->groups->current_group->id;
+
+		/* If we're viewing a non-private group and the user is a member, show the hidden activity for the group */
+		if ( 'public' != $bp->groups->current_group->status && groups_is_user_member( $bp->loggedin_user->id, $bp->groups->current_group->id ) )
+			$r['show_hidden'] = 1;
+	}
+
+	/* Support for permalinks on single item pages: /groups/my-group/activity/124/ */
+	if ( $bp->current_action == $bp->activity->slug )
+		$r['include'] = $bp->action_variables[0];
+
+	return http_build_query($r);
+}
+add_filter( 'bp_dtheme_ajax_querystring_activity_filter', 'bp_dtheme_ajax_querystring_activity_filter_scope', 1 );
+
 function bp_dtheme_object_filter() {
 	global $bp;
 
@@ -30,21 +151,19 @@
 		$search_terms = false;
 
 	/* Build the querystring */
-	if ( empty( $filter ) )
-		$filter = 'active';
+	$querystring_args =
+		array(
+			'object' => $object,
+			'scope' => $scope,
+			'filter' => empty( $filter ) ? 'active' : $filter,
+			'page' => empty( $page ) ? 1 : $page
+		);
 
-	$bp->ajax_querystring = 'type=' . $filter . '&page=' . $page;
-
 	if ( !empty( $search_terms ) )
-		$bp->ajax_querystring .= '&search_terms=' . $search_terms;
+		$querystring_args['search_terms'] = $search_terms;
 
-	if ( $scope == 'personal' || $bp->displayed_user->id ) {
-		$user_id = ( $bp->displayed_user->id ) ? $bp->displayed_user->id : $bp->loggedin_user->id;
-		$bp->ajax_querystring .= '&user_id=' . $user_id;
-	}
+	bp_set_ajax_querystring( apply_filters( 'bp_dtheme_ajax_querystring_content_filter', http_build_query($querystring_args), $extras ) );
 
-	$bp->ajax_querystring = apply_filters( 'bp_dtheme_ajax_querystring_content_filter', $bp->ajax_querystring, $extras );
-
 	locate_template( array( "$object/$object-loop.php" ), true );
 }
 add_action( 'wp_ajax_members_filter', 'bp_dtheme_object_filter' );
@@ -180,10 +299,19 @@
 function bp_dtheme_activity_loop( $scope = false, $filter = false, $per_page = 20, $page = 1 ) {
 	global $bp;
 
-	/* If we are on a profile page we only want to show that users activity */
-	if ( $bp->displayed_user->id ) {
-		$query_string = 'user_id=' . $bp->displayed_user->id;
-	} else {
+	/* Build the querystring */
+	$querystring_args =
+		array(
+			'object' => 'activity',
+			'scope' => $scope,
+			'filter' => $filter,
+			'per_page' => $per_page,
+			'page' => $page,
+		);
+
+	/* If we are NOT on a profile page we need to determine the feed url */
+	if ( !$bp->displayed_user->id ) {
+
 		if ( !empty( $bp->groups->current_group ) )
 			$scope = 'all';
 
@@ -191,68 +319,24 @@
 
 		switch ( $scope ) {
 			case BP_FRIENDS_SLUG:
-				$friend_ids = implode( ',', friends_get_friend_user_ids( $bp->loggedin_user->id ) );
-				$query_string = 'user_id=' . $friend_ids;
 				$feed_url = $bp->loggedin_user->domain . BP_ACTIVITY_SLUG . '/' . BP_FRIENDS_SLUG . '/feed/';
 				break;
 			case BP_GROUPS_SLUG:
-				$groups = groups_get_user_groups( $bp->loggedin_user->id );
-				$group_ids = implode( ',', $groups['groups'] );
-				$query_string = 'object=groups&primary_id=' . $group_ids . '&show_hidden=1';
 				$feed_url = $bp->loggedin_user->domain . BP_ACTIVITY_SLUG . '/' . BP_GROUPS_SLUG . '/feed/';
 				break;
 			case 'favorites':
-				$favs = bp_activity_get_user_favorites( $bp->loggedin_user->id );
-
-				if ( empty( $favs ) )
-					$favorite_ids = false;
-
-				$favorite_ids = implode( ',', (array)$favs );
-				$query_string = 'include=' . $favorite_ids;
 				$feed_url = $bp->loggedin_user->domain  . BP_ACTIVITY_SLUG . '/favorites/feed/';
 				break;
 			case 'mentions':
-				$query_string = 'show_hidden=1&search_terms=@' . bp_core_get_username( $bp->loggedin_user->id, $bp->loggedin_user->userdata->user_nicename, $bp->loggedin_user->userdata->user_login );
 				$feed_url = $bp->loggedin_user->domain . BP_ACTIVITY_SLUG . '/mentions/feed/';
-
 				/* Reset the number of new @ mentions for the user */
 				delete_usermeta( $bp->loggedin_user->id, 'bp_new_mention_count' );
 				break;
 		}
 	}
 
-	/* Build the filter */
-	if ( $filter && $filter != '-1' )
-		$query_string .= '&action=' . $filter;
-
-	/* If we are viewing a group then filter the activity just for this group */
-	if ( !empty( $bp->groups->current_group ) ) {
-		$query_string .= '&object=' . $bp->groups->id . '&primary_id=' . $bp->groups->current_group->id;
-
-		/* If we're viewing a non-private group and the user is a member, show the hidden activity for the group */
-		if ( 'public' != $bp->groups->current_group->status && groups_is_user_member( $bp->loggedin_user->id, $bp->groups->current_group->id ) )
-			$query_string .= '&show_hidden=1';
-	}
-
-	/* Add the per_page param */
-	$query_string .= '&per_page=' . $per_page;
-
-	/* Add the comments param */
-	if ( $bp->displayed_user->id || 'mentions' == $scope )
-		$query_string .= '&display_comments=stream';
-	else
-		$query_string .= '&display_comments=threaded';
-
-	/* Add the new page param */
-	$args = explode( '&', trim( $query_string ) );
-	foreach( (array)$args as $arg ) {
-		if ( false === strpos( $arg, 'page' ) )
-			$new_args[] = $arg;
-	}
-	$query_string = implode( '&', $new_args ) . '&page=' . $page;
-
-	$bp->ajax_querystring = apply_filters( 'bp_dtheme_ajax_querystring_activity_filter', $query_string, $scope );
-	$result['query_string'] = $bp->ajax_querystring;
+	bp_set_ajax_querystring( apply_filters( 'bp_dtheme_ajax_querystring_activity_filter', http_build_query($querystring_args), $scope ) );
+	$result['query_string'] = bp_ajax_querystring();
 	$result['feed_url'] = apply_filters( 'bp_dtheme_ajax_feed_url', $feed_url );
 
 	/* Buffer the loop in the template to a var for JS to spit out. */
Index: bp-themes/bp-default/forums/forums-loop.php
===================================================================
--- bp-themes/bp-default/forums/forums-loop.php	(revision 2578)
+++ bp-themes/bp-default/forums/forums-loop.php	(working copy)
@@ -1,4 +1,4 @@
-<?php if ( bp_has_forum_topics( bp_ajax_querystring() ) ) : ?>
+<?php if ( bp_has_forum_topics( bp_dtheme_ajax_querystring( 'forums' ) ) ) : ?>
 
 	<div class="pagination">
 
Index: bp-core/bp-core-templatetags.php
===================================================================
--- bp-core/bp-core-templatetags.php	(revision 2578)
+++ bp-core/bp-core-templatetags.php	(working copy)
@@ -117,36 +117,16 @@
 function bp_has_members( $args = '' ) {
 	global $bp, $members_template;
 
-	/***
-	 * Set the defaults based on the current page. Any of these will be overridden
-	 * if arguments are directly passed into the loop. Custom plugins should always
-	 * pass their parameters directly to the loop.
-	 */
-	$type = 'active';
-	$user_id = false;
-	$page = 1;
-
-	/* User filtering */
-	if ( !empty( $bp->displayed_user->id ) || 'personal' == $_COOKIE['bp-members-scope'] )
-		$user_id = ( !empty( $bp->displayed_user->id ) ) ? $bp->displayed_user->id : $bp->loggedin_user->id;
-
-	/* Action filtering */
-	if ( !empty( $_COOKIE['bp-members-filter'] ) && '-1' != $_COOKIE['bp-members-filter'] )
-		$type = $_COOKIE['bp-members-filter'];
-
-	if ( !empty( $_COOKIE['bp-members-page'] ) && '-1' != $_COOKIE['bp-members-page'] )
-		$page = $_COOKIE['bp-members-page'];
-
 	// type: active ( default ) | random | newest | popular | online | alphabetical
 	$defaults = array(
-		'type' => $type,
-		'page' => $page,
+		'type' => 'active',
+		'page' => 1,
 		'per_page' => 20,
 		'max' => false,
 
 		'include' => false, // Pass a user_id or comma separated list of user_ids to only show these users
 
-		'user_id' => $user_id, // Pass a user_id to only show friends of this user
+		'user_id' => false, // Pass a user_id to only show friends of this user
 		'search_terms' => false, // Pass search_terms to filter users by their profile data
 
 		'populate_extras' => true // Fetch usermeta? Friend count, last active etc.
@@ -1399,6 +1379,12 @@
 	return apply_filters( 'bp_ajax_querystring', $bp->ajax_querystring );
 }
 
+function bp_set_ajax_querystring( $string ) {
+	global $bp;
+
+	$bp->ajax_querystring = apply_filters( 'bp_set_ajax_querystring', $string );
+}
+
 /* Template is_() functions to determine the current page */
 
 function bp_is_active( $component ) {
Index: bp-activity/bp-activity-templatetags.php
===================================================================
--- bp-activity/bp-activity-templatetags.php	(revision 2578)
+++ bp-activity/bp-activity-templatetags.php	(working copy)
@@ -116,98 +116,25 @@
 function bp_has_activities( $args = '' ) {
 	global $bp, $activities_template;
 
-	/***
-	 * Set the defaults based on the current page. Any of these will be overridden
-	 * if arguments are directly passed into the loop. Custom plugins should always
-	 * pass their parameters directly to the loop.
-	 */
-	$user_id = false;
-	$include = false;
-	$show_hidden = false;
-	$search_terms = false;
-	$object = false;
-	$action = false;
-	$primary_id = false;
-	$display_comments = 'threaded';
-
-	/* User filtering */
-	if ( !empty( $bp->displayed_user->id ) )
-		$user_id = $bp->displayed_user->id;
-
-	/* Action filtering */
-	if ( !empty( $_COOKIE['bp-activity-filter'] ) && '-1' != $_COOKIE['bp-activity-filter'] )
-		$action = $_COOKIE['bp-activity-filter'];
-
-	/* User activity scope filtering */
-	if ( !empty( $user_id ) || !empty( $_COOKIE['bp-activity-scope'] ) ) {
-		$scope = ( !empty( $bp->current_action ) ) ? $bp->current_action : $_COOKIE['bp-activity-scope'];
-		$current_user_id = ( !empty( $bp->displayed_user->id ) ) ? $bp->displayed_user->id : $bp->loggedin_user->id;
-
-		if ( empty( $scope ) || 'just-me' == $scope )
-			$display_comments = 'stream';
-
-		switch ( $scope ) {
-			case 'friends':
-				if ( function_exists( 'friends_get_friend_user_ids' ) )
-					$user_id = implode( ',', (array)friends_get_friend_user_ids( $current_user_id ) );
-				break;
-			case 'groups':
-				if ( function_exists( 'groups_get_user_groups' ) ) {
-					$groups = groups_get_user_groups( $current_user_id );
-					$object = $bp->groups->id;
-					$primary_id = implode( ',', (array)$groups['groups'] );
-					$show_hidden = ( $current_user_id == $bp->loggedin_user->id ) ? 1 : 0;
-					$user_id = false;
-				}
-				break;
-			case 'favorites':
-				$favs = bp_activity_get_user_favorites( $current_user_id );
-				$include = implode( ',', (array)$favs );
-				$show_hidden = ( $current_user_id == $bp->loggedin_user->id ) ? 1 : 0;
-				break;
-			case 'mentions':
-				$user_nicename = ( !empty( $bp->displayed_user->id ) ) ? $bp->displayed_user->userdata->user_nicename : $bp->loggedin_user->userdata->user_nicename;
-				$user_login = ( !empty( $bp->displayed_user->id ) ) ? $bp->displayed_user->userdata->user_login : $bp->loggedin_user->userdata->user_login;
-				$search_terms = '@' . bp_core_get_username( $current_user_id, $user_nicename, $user_login );
-				$show_hidden = ( $current_user_id == $bp->loggedin_user->id ) ? 1 : 0;
-				$display_comments = 'stream';
-				$user_id = false;
-				break;
-		}
-	}
-
-	/* Group filtering */
-	if ( !empty( $bp->groups->current_group ) ) {
-		$object = $bp->groups->id;
-		$primary_id = $bp->groups->current_group->id;
-
-		if ( 'public' != $bp->groups->current_group->status && groups_is_user_member( $bp->loggedin_user->id, $bp->groups->current_group->id ) )
-			$show_hidden = true;
-	}
-
-	/* Support for permalinks on single item pages: /groups/my-group/activity/124/ */
-	if ( $bp->current_action == $bp->activity->slug )
-		$include = $bp->action_variables[0];
-
 	/* Note: any params used for filtering can be a single value, or multiple values comma separated. */
 	$defaults = array(
-		'display_comments' => $display_comments, // false for none, stream/threaded - show comments in the stream or threaded under items
-		'include' => $include, // pass an activity_id or string of ID's comma separated
+		'display_comments' => 'threaded', // false for none, stream/threaded - show comments in the stream or threaded under items
+		'include' => false, // pass an activity_id or string of ID's comma separated
 		'sort' => 'DESC', // sort DESC or ASC
 		'page' => 1, // which page to load
 		'per_page' => 25, // number of items per page
 		'max' => false, // max number to return
-		'show_hidden' => $show_hidden, // Show activity items that are hidden site-wide?
+		'show_hidden' => false, // Show activity items that are hidden site-wide?
 
 		/* Filtering */
-		'user_id' => $user_id, // user_id to filter on
-		'object' => $object, // object to filter on e.g. groups, profile, status, friends
-		'action' => $action, // action to filter on e.g. activity_update, new_forum_post, profile_updated
-		'primary_id' => $primary_id, // object ID to filter on e.g. a group_id or forum_id or blog_id etc.
+		'user_id' => false, // user_id to filter on
+		'object' => false, // object to filter on e.g. groups, profile, status, friends
+		'action' => false, // action to filter on e.g. activity_update, new_forum_post, profile_updated
+		'primary_id' => false, // object ID to filter on e.g. a group_id or forum_id or blog_id etc.
 		'secondary_id' => false, // secondary object ID to filter on e.g. a post_id
 
 		/* Searching */
-		'search_terms' => $search_terms // specify terms to search on
+		'search_terms' => false // specify terms to search on
 	);
 
 	$r = wp_parse_args( $args, $defaults );
Index: bp-blogs/bp-blogs-templatetags.php
===================================================================
--- bp-blogs/bp-blogs-templatetags.php	(revision 2578)
+++ bp-blogs/bp-blogs-templatetags.php	(working copy)
@@ -109,33 +109,13 @@
 function bp_has_blogs( $args = '' ) {
 	global $bp, $blogs_template;
 
-	/***
-	 * Set the defaults based on the current page. Any of these will be overridden
-	 * if arguments are directly passed into the loop. Custom plugins should always
-	 * pass their parameters directly to the loop.
-	 */
-	$type = 'active';
-	$user_id = false;
-	$page = 1;
-
-	/* User filtering */
-	if ( !empty( $bp->displayed_user->id ) || 'personal' == $_COOKIE['bp-blogs-scope'] )
-		$user_id = ( !empty( $bp->displayed_user->id ) ) ? $bp->displayed_user->id : $bp->loggedin_user->id;
-
-	/* Action filtering */
-	if ( !empty( $_COOKIE['bp-blogs-filter'] ) && '-1' != $_COOKIE['bp-blogs-filter'] )
-		$type = $_COOKIE['bp-blogs-filter'];
-
-	if ( !empty( $_COOKIE['bp-blogs-page'] ) && '-1' != $_COOKIE['bp-blogs-page'] )
-		$page = $_COOKIE['bp-blogs-page'];
-
 	$defaults = array(
-		'type' => $type,
-		'page' => $page,
+		'type' => 'active',
+		'page' => 1,
 		'per_page' => 20,
 		'max' => false,
 
-		'user_id' => $user_id, // Pass a user_id to limit to only blogs this user has higher than subscriber access to
+		'user_id' => false, // Pass a user_id to limit to only blogs this user has higher than subscriber access to
 		'search_terms' => false // Pass search terms to filter on the blog title or description.
 	);
 
Index: bp-forums/bp-forums-templatetags.php
===================================================================
--- bp-forums/bp-forums-templatetags.php	(revision 2578)
+++ bp-forums/bp-forums-templatetags.php	(working copy)
@@ -155,31 +155,11 @@
 function bp_has_forum_topics( $args = '' ) {
 	global $forum_template, $bp;
 
-	/***
-	 * Set the defaults based on the current page. Any of these will be overridden
-	 * if arguments are directly passed into the loop. Custom plugins should always
-	 * pass their parameters directly to the loop.
-	 */
-	$type = 'newest';
-	$user_id = false;
-	$page = 1;
-
-	/* User filtering */
-	if ( !empty( $bp->displayed_user->id ) || 'personal' == $_COOKIE['bp-forums-scope'] )
-		$user_id = ( !empty( $bp->displayed_user->id ) ) ? $bp->displayed_user->id : $bp->loggedin_user->id;
-
-	/* Action filtering */
-	if ( !empty( $_COOKIE['bp-forums-filter'] ) && '-1' != $_COOKIE['bp-forums-filter'] )
-		$type = $_COOKIE['bp-forums-filter'];
-
-	if ( !empty( $_COOKIE['bp-forums-page'] ) && '-1' != $_COOKIE['bp-forums-page'] )
-		$page = $_COOKIE['bp-forums-page'];
-
 	$defaults = array(
-		'type' => $type,
+		'type' => 'newest',
 		'forum_id' => false,
-		'user_id' => $user_id,
-		'page' => $page,
+		'user_id' => false,
+		'page' => 1,
 		'per_page' => 20,
 		'max' => false,
 		'no_stickies' => false,
Index: bp-groups/bp-groups-templatetags.php
===================================================================
--- bp-groups/bp-groups-templatetags.php	(revision 2578)
+++ bp-groups/bp-groups-templatetags.php	(working copy)
@@ -170,33 +170,13 @@
 function bp_has_groups( $args = '' ) {
 	global $groups_template, $bp;
 
-	/***
-	 * Set the defaults based on the current page. Any of these will be overridden
-	 * if arguments are directly passed into the loop. Custom plugins should always
-	 * pass their parameters directly to the loop.
-	 */
-	$type = 'active';
-	$user_id = false;
-	$page = 1;
-
-	/* User filtering */
-	if ( !empty( $bp->displayed_user->id ) || 'personal' == $_COOKIE['bp-groups-scope'] )
-		$user_id = ( !empty( $bp->displayed_user->id ) ) ? $bp->displayed_user->id : $bp->loggedin_user->id;
-
-	/* Action filtering */
-	if ( !empty( $_COOKIE['bp-groups-filter'] ) && '-1' != $_COOKIE['bp-groups-filter'] )
-		$type = $_COOKIE['bp-groups-filter'];
-
-	if ( !empty( $_COOKIE['bp-groups-page'] ) && '-1' != $_COOKIE['bp-groups-page'] )
-		$page = $_COOKIE['bp-groups-page'];
-
 	$defaults = array(
-		'type' => $type,
-		'page' => $page,
+		'type' => 'active',
+		'page' => 1,
 		'per_page' => 20,
 		'max' => false,
 
-		'user_id' => $user_id, // Pass a user ID to limit to groups this user has joined
+		'user_id' => false, // Pass a user ID to limit to groups this user has joined
 		'slug' => false, // Pass a group slug to only return that group
 		'search_terms' => false // Pass search terms to return only matching groups
 	);
