diff --git bp-core/bp-core-avatars.php bp-core/bp-core-avatars.php
index 8de1b6e..93ace69 100644
--- bp-core/bp-core-avatars.php
+++ bp-core/bp-core-avatars.php
@@ -150,7 +150,7 @@ function bp_core_fetch_avatar( $args = '' ) {
 	if ( 'user' == $object )
 		$item_name = bp_core_get_user_displayname( $item_id );
 	elseif ( 'group' == $object )
-		$item_name = bp_get_group_name( new BP_Groups_Group( $item_id ) );
+		$item_name = bp_get_group_name( groups_get_group( array( 'group_id' => $item_id ) ) );
 	elseif ( 'blog' == $object )
 		$item_name = get_blog_option( $item_id, 'blogname' );
 
diff --git bp-groups/bp-groups-actions.php bp-groups/bp-groups-actions.php
index e645abf..8b58b9e 100644
--- bp-groups/bp-groups-actions.php
+++ bp-groups/bp-groups-actions.php
@@ -54,7 +54,7 @@ function groups_action_create_group() {
 	// Set the ID of the new group, if it has already been created in a previous step
 	if ( isset( $_COOKIE['bp_new_group_id'] ) ) {
 		$bp->groups->new_group_id = $_COOKIE['bp_new_group_id'];
-		$bp->groups->current_group = new BP_Groups_Group( $bp->groups->new_group_id );
+		$bp->groups->current_group = groups_get_group( array( 'group_id' => $bp->groups->new_group_id ) );
 	}
 
 	// If the save, upload or skip button is hit, lets calculate what we need to save
diff --git bp-groups/bp-groups-activity.php bp-groups/bp-groups-activity.php
index 6e72392..f73b41d 100644
--- bp-groups/bp-groups-activity.php
+++ bp-groups/bp-groups-activity.php
@@ -83,7 +83,7 @@ function groups_format_notifications( $action, $item_id, $secondary_item_id, $to
 			$group_id = $secondary_item_id;
 			$requesting_user_id = $item_id;
 
-			$group = new BP_Groups_Group( $group_id );
+			$group = groups_get_group( array( 'group_id' => $group_id ) );
 			$group_link = bp_get_group_permalink( $group );
 
 			// Set up the string and the filter
@@ -123,7 +123,7 @@ function groups_format_notifications( $action, $item_id, $secondary_item_id, $to
 		case 'membership_request_accepted':
 			$group_id = $item_id;
 
-			$group = new BP_Groups_Group( $group_id );
+			$group = groups_get_group( array( 'group_id' => $group_id ) );
 			$group_link = bp_get_group_permalink( $group );
 
 			if ( (int)$total_items > 1 ) {
@@ -159,7 +159,7 @@ function groups_format_notifications( $action, $item_id, $secondary_item_id, $to
 		case 'membership_request_rejected':
 			$group_id = $item_id;
 
-			$group = new BP_Groups_Group( $group_id );
+			$group = groups_get_group( array( 'group_id' => $group_id ) );
 			$group_link = bp_get_group_permalink( $group );
 
 			if ( (int)$total_items > 1 ) {
@@ -195,7 +195,7 @@ function groups_format_notifications( $action, $item_id, $secondary_item_id, $to
 		case 'member_promoted_to_admin':
 			$group_id = $item_id;
 
-			$group = new BP_Groups_Group( $group_id );
+			$group = groups_get_group( array( 'group_id' => $group_id ) );
 			$group_link = bp_get_group_permalink( $group );
 
 			if ( (int)$total_items > 1 ) {
@@ -231,7 +231,7 @@ function groups_format_notifications( $action, $item_id, $secondary_item_id, $to
 		case 'member_promoted_to_mod':
 			$group_id = $item_id;
 
-			$group = new BP_Groups_Group( $group_id );
+			$group = groups_get_group( array( 'group_id' => $group_id ) );
 			$group_link = bp_get_group_permalink( $group );
 
 			if ( (int)$total_items > 1 ) {
@@ -266,7 +266,7 @@ function groups_format_notifications( $action, $item_id, $secondary_item_id, $to
 
 		case 'group_invite':
 			$group_id = $item_id;
-			$group = new BP_Groups_Group( $group_id );
+			$group = groups_get_group( array( 'group_id' => $group_id ) );
 			$group_link = bp_get_group_permalink( $group );
 
 			$notification_link = bp_loggedin_user_domain() . bp_get_groups_slug() . '/invites/?n=1';
diff --git bp-groups/bp-groups-classes.php bp-groups/bp-groups-classes.php
index 2e1bb4d..f69ccb0 100644
--- bp-groups/bp-groups-classes.php
+++ bp-groups/bp-groups-classes.php
@@ -119,6 +119,8 @@ Class BP_Groups_Group {
 			$this->id = $wpdb->insert_id;
 
 		do_action_ref_array( 'groups_group_after_save', array( &$this ) );
+		
+		wp_cache_delete( 'bp_groups_group_' . $this->id, 'bp' );
 
 		return true;
 	}
@@ -141,6 +143,8 @@ Class BP_Groups_Group {
 
 		do_action_ref_array( 'bp_groups_delete_group', array( &$this ) );
 
+		wp_cache_delete( 'bp_groups_group_' . $this->id, 'bp' );
+
 		// Finally remove the group entry from the DB
 		if ( !$wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->groups->table_name} WHERE id = %d", $this->id ) ) )
 			return false;
diff --git bp-groups/bp-groups-forums.php bp-groups/bp-groups-forums.php
index f8598aa..016f2b9 100644
--- bp-groups/bp-groups-forums.php
+++ bp-groups/bp-groups-forums.php
@@ -33,7 +33,7 @@ function groups_new_group_forum( $group_id = 0, $group_name = '', $group_desc =
  */
 function groups_update_group_forum( $group_id ) {
 
-	$group = new BP_Groups_Group( $group_id );
+	$group = groups_get_group( array( 'group_id' => $group_id ) );
 
 	/**
 	 * Bail in the following three situations:
diff --git bp-groups/bp-groups-functions.php bp-groups/bp-groups-functions.php
index 9d7b34a..245774e 100644
--- bp-groups/bp-groups-functions.php
+++ bp-groups/bp-groups-functions.php
@@ -31,8 +31,15 @@ function groups_get_group( $args = '' ) {
 
 	$args = wp_parse_args( $args, $defaults );
 	extract( $args, EXTR_SKIP );
+	
+	$cache_key = 'bp_groups_group_' . $group_id . ( $load_users ? '_load_users' : '_noload_users' );
+	
+	if ( !$group = wp_cache_get( $cache_key, 'bp' ) ) {
+		$group = new BP_Groups_Group( $group_id, true, $load_users );
+		wp_cache_set( $cache_key, $group, 'bp' );
+	}
 
-	return apply_filters( 'groups_get_group', new BP_Groups_Group( $group_id, true, $load_users ) );
+	return apply_filters( 'groups_get_group', $group );
 }
 
 /*** Group Creation, Editing & Deletion *****************************************/
@@ -55,7 +62,7 @@ function groups_create_group( $args = '' ) {
 	 */
 
 	if ( isset( $group_id ) && $group_id )
-		$group = new BP_Groups_Group( $group_id );
+		$group = groups_get_group( array( 'group_id' => $group_id ) );
 	else
 		$group = new BP_Groups_Group;
 
@@ -117,7 +124,7 @@ function groups_edit_base_group_details( $group_id, $group_name, $group_desc, $n
 	if ( empty( $group_name ) || empty( $group_desc ) )
 		return false;
 
-	$group              = new BP_Groups_Group( $group_id );
+	$group              = groups_get_group( array( 'group_id' => $group_id ) );
 	$group->name        = $group_name;
 	$group->description = $group_desc;
 
@@ -136,7 +143,7 @@ function groups_edit_base_group_details( $group_id, $group_name, $group_desc, $n
 function groups_edit_group_settings( $group_id, $enable_forum, $status, $invite_status = false ) {
 	global $bp;
 
-	$group = new BP_Groups_Group( $group_id );
+	$group = groups_get_group( array( 'group_id' => $group_id ) );
 	$group->enable_forum = $enable_forum;
 
 	/***
@@ -184,7 +191,7 @@ function groups_delete_group( $group_id ) {
 		return false;
 
 	// Get the group object
-	$group = new BP_Groups_Group( $group_id );
+	$group = groups_get_group( array( 'group_id' => $group_id ) );
 	if ( !$group->delete() )
 		return false;
 
@@ -237,7 +244,7 @@ function groups_check_slug( $slug ) {
 }
 
 function groups_get_slug( $group_id ) {
-	$group = new BP_Groups_Group( $group_id );
+	$group = groups_get_group( array( 'group_id' => $group_id ) );
 	return $group->slug;
 }
 
@@ -315,7 +322,7 @@ function groups_join_group( $group_id, $user_id = 0 ) {
 		return false;
 
 	if ( !isset( $bp->groups->current_group ) || !$bp->groups->current_group || $group_id != $bp->groups->current_group->id )
-		$group = new BP_Groups_Group( $group_id );
+		$group = groups_get_group( array( 'group_id' => $group_id ) );
 	else
 		$group = $bp->groups->current_group;
 
@@ -503,7 +510,7 @@ function groups_post_update( $args = '' ) {
 	if ( empty( $content ) || !strlen( trim( $content ) ) || empty( $user_id ) || empty( $group_id ) )
 		return false;
 
-	$bp->groups->current_group = new BP_Groups_Group( $group_id );
+	$bp->groups->current_group = groups_get_group( array( 'group_id' => $group_id ) );
 
 	// Be sure the user is a member of the group before posting.
 	if ( !bp_current_user_can( 'bp_moderate' ) && !groups_is_user_member( $user_id, $group_id ) )
@@ -637,7 +644,7 @@ function groups_send_invites( $user_id, $group_id ) {
 
 	// Send friend invites.
 	$invited_users = groups_get_invites_for_group( $user_id, $group_id );
-	$group = new BP_Groups_Group( $group_id );
+	$group = groups_get_group( array( 'group_id' => $group_id ) );
 
 	for ( $i = 0, $count = count( $invited_users ); $i < $count; ++$i ) {
 		$member = new BP_Groups_Member( $invited_users[$i], $group_id );
@@ -803,7 +810,7 @@ function groups_accept_membership_request( $membership_id, $user_id = 0, $group_
 	groups_update_groupmeta( $membership->group_id, 'total_member_count', (int) groups_get_groupmeta( $membership->group_id, 'total_member_count') + 1 );
 
 	// Record this in activity streams
-	$group = new BP_Groups_Group( $membership->group_id );
+	$group = groups_get_group( array( 'group_id' => $membership->group_id ) );
 
 	groups_record_activity( array(
 		'action'  => apply_filters_ref_array( 'groups_activity_membership_accepted_action', array( sprintf( __( '%1$s joined the group %2$s', 'buddypress'), bp_core_get_userlink( $membership->user_id ), '<a href="' . bp_get_group_permalink( $group ) . '">' . esc_attr( $group->name ) . '</a>' ), $membership->user_id, &$group ) ),
diff --git bp-groups/bp-groups-notifications.php bp-groups/bp-groups-notifications.php
index 75ef3e8..6e40f9f 100644
--- bp-groups/bp-groups-notifications.php
+++ bp-groups/bp-groups-notifications.php
@@ -5,7 +5,7 @@ if ( !defined( 'ABSPATH' ) ) exit;
 function groups_notification_group_updated( $group_id ) {
 	global $bp;
 
-	$group    = new BP_Groups_Group( $group_id );
+	$group    = groups_get_group( array( 'group_id' => $group_id ) );
 	$sitename = wp_specialchars_decode( get_blog_option( bp_get_root_blog_id(), 'blogname' ), ENT_QUOTES );
 	$subject  = '[' . $sitename . '] ' . __( 'Group Details Updated', 'buddypress' );
 
@@ -54,7 +54,7 @@ function groups_notification_new_membership_request( $requesting_user_id, $admin
 		return false;
 
 	$requesting_user_name = bp_core_get_user_displayname( $requesting_user_id );
-	$group = new BP_Groups_Group( $group_id );
+	$group = groups_get_group( array( 'group_id' => $group_id ) );
 
 	$ud = bp_core_get_core_userdata($admin_id);
 	$requesting_ud = bp_core_get_core_userdata($requesting_user_id);
@@ -106,7 +106,7 @@ function groups_notification_membership_request_completed( $requesting_user_id,
 	if ( 'no' == bp_get_user_meta( $requesting_user_id, 'notification_membership_request_completed', true ) )
 		return false;
 
-	$group = new BP_Groups_Group( $group_id );
+	$group = groups_get_group( array( 'group_id' => $group_id ) );
 
 	$ud = bp_core_get_core_userdata($requesting_user_id);
 
@@ -168,7 +168,7 @@ function groups_notification_promoted_member( $user_id, $group_id ) {
 	if ( 'no' == bp_get_user_meta( $user_id, 'notification_groups_admin_promotion', true ) )
 		return false;
 
-	$group         = new BP_Groups_Group( $group_id );
+	$group         = groups_get_group( array( 'group_id' => $group_id ) );
 	$ud            = bp_core_get_core_userdata($user_id);
 	$group_link    = bp_get_group_permalink( $group );
 	$settings_slug = function_exists( 'bp_get_settings_slug' ) ? bp_get_settings_slug() : 'settings';
diff --git bp-groups/bp-groups-screens.php bp-groups/bp-groups-screens.php
index 031c142..edd3e4c 100644
--- bp-groups/bp-groups-screens.php
+++ bp-groups/bp-groups-screens.php
@@ -51,7 +51,7 @@ function groups_screen_group_invites() {
 			bp_core_add_message( __('Group invite accepted', 'buddypress') );
 
 			// Record this in activity streams
-			$group = new BP_Groups_Group( $group_id );
+			$group = groups_get_group( array( 'group_id' => $group_id ) );
 
 			groups_record_activity( array(
 				'action'  => apply_filters_ref_array( 'groups_activity_accepted_invite_action', array( sprintf( __( '%1$s joined the group %2$s', 'buddypress'), bp_core_get_userlink( bp_loggedin_user_id() ), '<a href="' . bp_get_group_permalink( $group ) . '">' . esc_attr( $group->name ) . '</a>' ), bp_loggedin_user_id(), &$group ) ),
diff --git bp-groups/bp-groups-template.php bp-groups/bp-groups-template.php
index 0c583f4..c306c7d 100644
--- bp-groups/bp-groups-template.php
+++ bp-groups/bp-groups-template.php
@@ -216,7 +216,7 @@ class BP_Groups_Template {
 		$this->group = $this->next_group();
 
 		if ( $this->single_group )
-			$this->group = new BP_Groups_Group( $this->group->group_id );
+			$this->group = groups_get_group( array( 'group_id' => $this->group->group_id ) );
 
 		if ( 0 == $this->current_group ) // loop has just started
 			do_action('group_loop_start');
diff --git bp-themes/bp-default/_inc/ajax.php bp-themes/bp-default/_inc/ajax.php
index db27644..35b25ad 100644
--- bp-themes/bp-default/_inc/ajax.php
+++ bp-themes/bp-default/_inc/ajax.php
@@ -515,7 +515,7 @@ function bp_dtheme_ajax_joinleave_group() {
 	if ( groups_is_user_banned( bp_loggedin_user_id(), $_POST['gid'] ) )
 		return false;
 
-	if ( !$group = new BP_Groups_Group( $_POST['gid'], false, false ) )
+	if ( !$group = groups_get_group( array( 'group_id' => $_POST['gid'] ) ) )
 		return false;
 
 	if ( !groups_is_user_member( bp_loggedin_user_id(), $group->id ) ) {
