diff --git src/bp-activity/bp-activity-filters.php src/bp-activity/bp-activity-filters.php
index 3367e75f2..453485e30 100644
--- src/bp-activity/bp-activity-filters.php
+++ src/bp-activity/bp-activity-filters.php
@@ -108,6 +108,9 @@ add_filter( 'bp_get_total_mention_count_for_user',  'bp_core_number_format' );
 
 add_filter( 'bp_activity_get_embed_excerpt', 'bp_activity_embed_excerpt_onclick_location_filter', 9 );
 
+add_filter( 'bp_get_activity_content_body', 'bp_activity_generate_content_body', 50, 2 );
+add_filter( 'bp_activity_get_embed_excerpt', 'bp_activity_generate_embed_excerpt', 50, 2 );
+
 // Personal data export.
 add_filter( 'wp_privacy_personal_data_exporters', 'bp_activity_register_personal_data_exporter' );
 
@@ -841,3 +844,404 @@ function bp_activity_register_personal_data_exporter( $exporters ) {
 
 	return $exporters;
 }
+
+/**
+ * Generate a content body for specific activity types.
+ *
+ * @since 10.0.0
+ *
+ * @param string               $content  The content of the activity.
+ * @param BP_Activity_Activity $activity The activity object.
+ * @return string                        The content of the activity.
+ */
+function bp_activity_generate_content_body( $content = '', $activity = null ) {
+	
+	/*
+	 * New Avatar Activity Type
+	 */
+	if ( isset( $activity->type ) && 'new_avatar' === $activity->type ) {
+		$historical_avatar = '';		
+		
+		$user_url       	= bp_core_get_user_domain( $activity->user_id );
+		$user_displayname 	= bp_core_get_user_displayname( $activity->user_id );
+		$user_mentionname 	= bp_activity_get_user_mentionname( $activity->user_id );		
+		$action_button_text = esc_html__( 'View Profile', 'buddypress');
+		$user_cover_image 	= bp_attachments_get_attachment(
+									'url',
+									array(
+										'object_dir' => 'members',
+										'item_id'    => $activity->user_id,
+									)
+								);
+		$args   = array( 'r' => $user_mentionname );
+		$url    = add_query_arg( $args, bp_get_activity_directory_permalink() );
+		$user_mentionname_url = wp_nonce_url( $url );
+
+		if ( isset( $activity->historical_avatar ) && $activity->historical_avatar ) {
+			$historical_avatar = str_replace('\history','/history',$activity->historical_avatar);
+		} else {
+			$avatars = bp_avatar_get_version_src( $activity->user_id, $activity->date_recorded );
+
+			if ( $avatars && 1 === count( $avatars ) ) {
+				$avatar            = reset( $avatars );
+				$historical_avatar = trailingslashit( $avatar->parent_dir_url ) . $avatar->name;
+			}
+		}
+
+		if ( $historical_avatar ) {
+			$content = '<div class="bp-member-activity-preview">';
+			$content .= '<a href="' . esc_url( $user_url ) . '">
+							<div class="bp-member-preview-cover">';
+			if ( $user_cover_image != '') {
+				$content .= '<img src="' . esc_url( $user_cover_image ) . '" alt="cover-image"/>';
+			}
+			$content .= '</div></a>';
+			$content .= '<div class="bp-member-short-description">';
+			$content .= '<div class="bp-member-avatar-content">';
+			$content .= '<img src="' . esc_url( $historical_avatar ) . '" class="profile-photo aligncenter">';
+			$content .= '</div>';
+			$content .= '<p class="bp-member-short-description-title">
+							<a href="' .esc_url( $user_url ) .'">' . esc_html( $user_displayname ) . '</a>
+						</p>';
+			$content .= '<p class="bp-member-nickname">
+							<a href="' .esc_url( $user_mentionname_url ) . '">@' . esc_html( $user_mentionname ) . '</a>
+						</p>';
+						
+			$content .= sprintf(
+					'<div class="bp-profile-button">
+						<a href="%1$s" class="button large primary button-primary" role="button">%2$s</a>
+					</div>',
+					esc_url( $user_url ),
+					$action_button_text
+				);
+			$content .= '</div>';
+			$content .= '</div>';
+			
+		}
+	}
+	
+	 /*
+	  * Friendship Created Activity Type
+	  */
+	 
+	 if ( isset( $activity->type ) && 'friendship_created' === $activity->type ) {		 		
+		
+		$user_url       	= bp_core_get_user_domain( $activity->secondary_item_id );
+		$user_displayname 	= bp_core_get_user_displayname( $activity->secondary_item_id );
+		$user_mentionname 	= bp_activity_get_user_mentionname( $activity->secondary_item_id );		
+		$action_button_text = esc_html__( 'View Profile', 'buddypress');
+		$user_cover_image 	= bp_attachments_get_attachment(
+									'url',
+									array(
+										'object_dir' => 'members',
+										'item_id'    => $activity->secondary_item_id,
+									)
+								);
+		$args   = array( 'r' => $user_mentionname );
+		$url    = add_query_arg( $args, bp_get_activity_directory_permalink() );
+		$user_mentionname_url = wp_nonce_url( $url );
+		
+		$avatar_url = bp_core_fetch_avatar(
+									array(
+										'item_id' => $activity->secondary_item_id,
+										'type'    => 'full',
+										'width'   => 150,
+										'height'  => 150,
+										'class'   => 'avatar',
+										'id'      => false,
+										'alt'     => sprintf( __( 'Profile picture of %s', 'buddypress' ), esc_html( $user_displayname ) ),
+										'html'	  => false
+									)
+								);
+		
+
+		if ( $avatar_url ) {
+			$content = '<div class="bp-member-activity-preview">';
+			$content .= '<a href="' . esc_url( $user_url ) . '">
+							<div class="bp-member-preview-cover">';
+			if ( $user_cover_image != '') {
+				$content .= '<img src="' . esc_url( $user_cover_image ) . '" alt="' . esc_attr__( "cover-image" ) . '"/>';
+			}
+			$content .= '</div></a>';
+			$content .= '<div class="bp-member-short-description">';
+			$content .= '<div class="bp-member-avatar-content">';
+			$content .= '<img src="' . esc_url( $avatar_url ) . '" class="profile-photo aligncenter">';
+			$content .= '</div>';
+			$content .= '<p class="bp-member-short-description-title">
+							<a href="' .esc_url( $user_url ) .'">' . esc_html( $user_displayname ) . '</a>
+						</p>';
+			$content .= '<p class="bp-member-nickname">
+							<a href="' .esc_url( $user_mentionname_url ) . '">@' . esc_html( $user_mentionname ) . '</a>
+						</p>';
+						
+			$content .= sprintf(
+					'<div class="bp-profile-button">
+						<a href="%1$s" class="button large primary button-primary" role="button">%2$s</a>
+					</div>',
+					esc_url( $user_url ),
+					$action_button_text
+				);
+			$content .= '</div>';
+			$content .= '</div>';
+			
+		}
+	}
+	
+	/*
+	  * Joined Group Activity Type
+	  */
+	 
+	 if ( isset( $activity->type ) && 'joined_group' === $activity->type ) {	
+	 
+		$group     			= groups_get_group( array( 'group_id' => $activity->item_id ) );
+		$group_name 			= $group->name;
+		$group_url       	= bp_get_group_permalink( $group );
+		$group_cover_image 	= bp_get_group_cover_url( $group );		
+		$action_button_text = esc_html__( 'Visit Group', 'buddypress');
+		
+		$group_avatar_url 	= bp_core_fetch_avatar(
+								array(
+									'item_id'    => $group->id,
+									'avatar_dir' => 'group-avatars',
+									'object'     => 'group',
+									'type'       => 'full',
+									'html'       => false,									
+									'width'      => 150,
+									'height'     => 150,
+								)
+							);
+		
+		if ( $group_avatar_url ) {
+			$content = '<div class="bp-group-activity-preview">';
+			$content .= '<a href="' . esc_url( $group_url ) . '">
+							<div class="bp-group-preview-cover">';
+			if ( $group_cover_image != '') {
+				$content .= '<img src="' . esc_url( $group_cover_image ) . '" alt="cover-image"/>';
+			}
+			$content .= '</div></a>';
+			$content .= '<div class="bp-group-short-description">';
+			$content .= '<div class="bp-group-avatar-content">';
+			$content .= '<img src="' . esc_url( $group_avatar_url ) . '" class="group-photo aligncenter" width="150" height="150">';
+			$content .= '</div>';
+			$content .= '<p class="bp-group-short-description-title">
+							<a href="' .esc_url( $group_url ) .'">' . esc_html( $group_name ) . '</a>
+						</p>';			
+						
+			$content .= sprintf(
+					'<div class="bp-profile-button">
+						<a href="%1$s" class="button large primary button-primary" role="button">%2$s</a>
+					</div>',
+					esc_url( $group_url ),
+					$action_button_text
+				);
+			$content .= '</div>';
+			$content .= '</div>';
+			
+		}
+	 
+	 }
+
+	return $content;
+}
+
+
+
+
+/**
+ * Generate a embed content body for specific activity types.
+ *
+ * @since 10.0.0
+ *
+ * @param string               $content  The content of the activity. 
+ * @return string                        The content of the activity.
+ */
+function bp_activity_generate_embed_excerpt( $content = '' ) {
+	
+	$activity = $GLOBALS['activities_template']->activity;
+	
+	/*
+	 * New Avatar Activity Type
+	 */
+	if ( isset( $activity->type ) && 'new_avatar' === $activity->type ) {
+		$historical_avatar = '';		
+		
+		$user_url       	= bp_core_get_user_domain( $activity->user_id );
+		$user_displayname 	= bp_core_get_user_displayname( $activity->user_id );
+		$user_mentionname 	= bp_activity_get_user_mentionname( $activity->user_id );		
+		$action_button_text = esc_html__( 'View Profile', 'buddypress');
+		$user_cover_image 	= bp_attachments_get_attachment(
+									'url',
+									array(
+										'object_dir' => 'members',
+										'item_id'    => $activity->user_id,
+									)
+								);
+		$args   = array( 'r' => $user_mentionname );
+		$url    = add_query_arg( $args, bp_get_activity_directory_permalink() );
+		$user_mentionname_url = wp_nonce_url( $url );
+
+		if ( isset( $activity->historical_avatar ) && $activity->historical_avatar ) {
+			$historical_avatar = str_replace('\history','/history',$activity->historical_avatar);
+		} else {
+			$avatars = bp_avatar_get_version_src( $activity->user_id, $activity->date_recorded );
+
+			if ( $avatars && 1 === count( $avatars ) ) {
+				$avatar            = reset( $avatars );				
+				$historical_avatar = trailingslashit( str_replace('\history', '/history', $avatar->parent_dir_url ) )  . $avatar->name;
+			}
+		}
+
+		if ( $historical_avatar ) {
+			$content = '<div class="bp-member-activity-preview">';
+			$content .= '<a href="' . esc_url( $user_url ) . '">
+							<div class="bp-member-preview-cover">';
+			if ( $user_cover_image != '') {
+				$content .= '<img src="' . esc_url( $user_cover_image ) . '" alt="cover-image"/>';
+			}
+			$content .= '</div></a>';
+			$content .= '<div class="bp-member-short-description">';
+			$content .= '<div class="bp-member-avatar-content">';
+			$content .= '<img src="' . esc_url( $historical_avatar ) . '" class="profile-photo aligncenter">';
+			$content .= '</div>';
+			$content .= '<p class="bp-member-short-description-title">
+							<a href="' .esc_url( $user_url ) .'">' . esc_html( $user_displayname ) . '</a>
+						</p>';
+			$content .= '<p class="bp-member-nickname">
+							<a href="' .esc_url( $user_mentionname_url ) . '">@' . esc_html( $user_mentionname ) . '</a>
+						</p>';
+						
+			$content .= sprintf(
+					'<div class="bp-profile-button">
+						<a href="%1$s" class="button large primary button-primary" role="button">%2$s</a>
+					</div>',
+					esc_url( $user_url ),
+					$action_button_text
+				);
+			$content .= '</div>';
+			$content .= '</div>';
+			
+		}
+	}
+	
+	 /*
+	  * Friendship Created Activity Type
+	  */
+	 
+	 if ( isset( $activity->type ) && 'friendship_created' === $activity->type ) {		 		
+		
+		$user_url       	= bp_core_get_user_domain( $activity->secondary_item_id );
+		$user_displayname 	= bp_core_get_user_displayname( $activity->secondary_item_id );
+		$user_mentionname 	= bp_activity_get_user_mentionname( $activity->secondary_item_id );		
+		$action_button_text = esc_html__( 'View Profile', 'buddypress');
+		$user_cover_image 	= bp_attachments_get_attachment(
+									'url',
+									array(
+										'object_dir' => 'members',
+										'item_id'    => $activity->secondary_item_id,
+									)
+								);
+		$args   = array( 'r' => $user_mentionname );
+		$url    = add_query_arg( $args, bp_get_activity_directory_permalink() );
+		$user_mentionname_url = wp_nonce_url( $url );
+		
+		$avatar_url = bp_core_fetch_avatar(
+						array(
+							'item_id' => $activity->secondary_item_id,
+							'type'    => 'full',
+							'width'   => 150,
+							'height'  => 150,
+							'class'   => 'avatar',
+							'id'      => false,
+							'alt'     => sprintf( __( 'Profile picture of %s', 'buddypress' ), esc_html( $user_displayname ) ),
+							'html'	  => false
+						)
+					);
+		
+
+		if ( $avatar_url ) {
+			$content = '<div class="bp-member-activity-preview">';
+			$content .= '<a href="' . esc_url( $user_url ) . '">
+							<div class="bp-member-preview-cover">';
+			if ( $user_cover_image != '') {
+				$content .= '<img src="' . esc_url( $user_cover_image ) . '" alt="cover-image"/>';
+			}
+			$content .= '</div></a>';
+			$content .= '<div class="bp-member-short-description">';
+			$content .= '<div class="bp-member-avatar-content">';
+			$content .= '<img src="' . esc_url( $avatar_url ) . '" class="profile-photo aligncenter">';
+			$content .= '</div>';
+			$content .= '<p class="bp-member-short-description-title">
+							<a href="' .esc_url( $user_url ) .'">' . esc_html( $user_displayname ) . '</a>
+						</p>';
+			$content .= '<p class="bp-member-nickname">
+							<a href="' .esc_url( $user_mentionname_url ) . '">@' . esc_html( $user_mentionname ) . '</a>
+						</p>';
+						
+			$content .= sprintf(
+					'<div class="bp-profile-button">
+						<a href="%1$s" class="button large primary button-primary" role="button">%2$s</a>
+					</div>',
+					esc_url( $user_url ),
+					$action_button_text
+				);
+			$content .= '</div>';
+			$content .= '</div>';
+			
+		}
+	}
+	
+	/*
+	  * Joined Group Activity Type
+	  */
+	 
+	 if ( isset( $activity->type ) && 'joined_group' === $activity->type ) {	
+	 
+		$group     			= groups_get_group( array( 'group_id' => $activity->item_id ) );
+		$group_name 			= $group->name;
+		$group_url       	= bp_get_group_permalink( $group );
+		$group_cover_image 	= bp_get_group_cover_url( $group );		
+		$action_button_text = esc_html__( 'Visit Group', 'buddypress');
+		
+		$group_avatar_url 	= bp_core_fetch_avatar(
+								array(
+									'item_id'    => $group->id,
+									'avatar_dir' => 'group-avatars',
+									'object'     => 'group',
+									'type'       => 'full',
+									'html'       => false,									
+									'width'      => 150,
+									'height'     => 150,
+								)
+							);
+		
+		if ( $group_avatar_url ) {
+			$content = '<div class="bp-group-activity-preview">';
+			$content .= '<a href="' . esc_url( $group_url ) . '">
+							<div class="bp-group-preview-cover">';
+			if ( $group_cover_image != '') {
+				$content .= '<img src="' . esc_url( $group_cover_image ) . '" alt="cover-image"/>';
+			}
+			$content .= '</div></a>';
+			$content .= '<div class="bp-group-short-description">';
+			$content .= '<div class="bp-group-avatar-content">';
+			$content .= '<img src="' . esc_url( $group_avatar_url ) . '" class="group-photo aligncenter" width="150" height="150">';
+			$content .= '</div>';
+			$content .= '<p class="bp-group-short-description-title">
+							<a href="' .esc_url( $group_url ) .'">' . esc_html( $group_name ) . '</a>
+						</p>';			
+						
+			$content .= sprintf(
+					'<div class="bp-profile-button">
+						<a href="%1$s" class="button large primary button-primary" role="button">%2$s</a>
+					</div>',
+					esc_url( $group_url ),
+					$action_button_text
+				);
+			$content .= '</div>';
+			$content .= '</div>';
+			
+		}
+	 
+	 }
+	return $content;	
+}
diff --git src/bp-activity/bp-activity-template.php src/bp-activity/bp-activity-template.php
index 16ee47d86..f2ecca6fa 100644
--- src/bp-activity/bp-activity-template.php
+++ src/bp-activity/bp-activity-template.php
@@ -1430,11 +1430,43 @@ function bp_activity_content_body() {
 function bp_activity_has_content() {
 	global $activities_template;
 
-	if ( ! empty( $activities_template->activity->content ) ) {
-		return true;
-	}
+	$has_content = ! empty( $activities_template->activity->content );
+	if ( ! $has_content ) {
+		if ( 'new_avatar' === bp_get_activity_type() ) {
+			
+			$avatars = bp_avatar_get_version_src( bp_get_activity_user_id(), bp_get_activity_date_recorded() );
+
+			if ( $avatars && 1 === count( $avatars ) ) {
+				$avatar            = reset( $avatars );
+				$historical_avatar = trailingslashit( $avatar->parent_dir_url ) . $avatar->name;
+
+				// Add historical avatar to the current activity.
+				$activities_template->activity->historical_avatar = $historical_avatar;
+
+				// Update the corresponding entry into the activities template global.
+				$activity_id    = $activities_template->activity->id;
+				$activity_index = 0;
+				while ( (int) $activities_template->activities[ $activity_index ]->id !== (int) $activity_id ) {
+					$activity_index++;
+				}
 
-	return false;
+				$activities_template->activities[ $activity_index ]->historical_avatar = $historical_avatar;
+
+				// Force the content to be displayed.
+				$has_content = true;
+			}
+		}
+		
+		if ( 'friendship_created' === bp_get_activity_type() ) {			
+			$has_content = true;
+		}
+		
+		if ( 'joined_group' === bp_get_activity_type() ) {			
+			$has_content = true;
+		}
+	}
+		
+	return $has_content;
 }
 
 /**
diff --git src/bp-core/bp-core-attachments.php src/bp-core/bp-core-attachments.php
index e99ed0c14..a74069de5 100644
--- src/bp-core/bp-core-attachments.php
+++ src/bp-core/bp-core-attachments.php
@@ -409,24 +409,28 @@ function bp_attachments_create_item_type( $type = 'avatar', $args = array() ) {
 
 	// It's an avatar, we need to crop it.
 	if ( 'avatar' === $type ) {
-		$created = bp_core_avatar_handle_crop( array(
-			'object'        => $r['object'],
-			'avatar_dir'    => trim( dirname( $attachment_data['subdir'] ), '/' ),
-			'item_id'       => (int) $r['item_id'],
-			'original_file' => trailingslashit( $attachment_data['subdir'] ) . $image_file_name,
-			'crop_w'        => $r['crop_w'],
-			'crop_h'        => $r['crop_h'],
-			'crop_x'        => $r['crop_x'],
-			'crop_y'        => $r['crop_y']
-		) );
+		$created = bp_core_avatar_handle_crop(
+			array(
+				'object'        => $r['object'],
+				'avatar_dir'    => trim( dirname( $attachment_data['subdir'] ), '/' ),
+				'item_id'       => (int) $r['item_id'],
+				'original_file' => trailingslashit( $attachment_data['subdir'] ) . $image_file_name,
+				'crop_w'        => $r['crop_w'],
+				'crop_h'        => $r['crop_h'],
+				'crop_x'        => $r['crop_x'],
+				'crop_y'        => $r['crop_y']
+			)
+		);
 
 	// It's a cover image we need to fit it to feature's dimensions.
 	} elseif ( 'cover_image' === $type ) {
-		$cover_image = bp_attachments_cover_image_generate_file( array(
-			'file'            => $image_file_path,
-			'component'       => $r['component'],
-			'cover_image_dir' => $attachment_data['path']
-		) );
+		$cover_image = bp_attachments_cover_image_generate_file(
+			array(
+				'file'            => $image_file_path,
+				'component'       => $r['component'],
+				'cover_image_dir' => $attachment_data['path']
+			)
+		);
 
 		$created = ! empty( $cover_image['cover_file'] );
 	}
@@ -1597,3 +1601,89 @@ function bp_attachments_cover_image_ajax_delete() {
 	}
 }
 add_action( 'wp_ajax_bp_cover_image_delete', 'bp_attachments_cover_image_ajax_delete' );
+
+/**
+ * List the files of a directory.
+ *
+ * @since 10.0.0
+ *
+ * @param string $directory_path Absolute path of a directory.
+ * @return array The list of the files inside the directory.
+ */
+function bp_attachments_list_directory_files( $directory_path = '' ) {
+	if ( ! is_dir( $directory_path ) ) {
+		return array();
+	}
+
+	$files    = array();
+	$iterator = new FilesystemIterator( $directory_path, FilesystemIterator::SKIP_DOTS );
+
+	foreach ( $iterator as $file ) {
+		$_file = new stdClass();
+
+		$_file->name               = $file->getfilename();
+		$_file->path               = $file->getPathname();
+		$_file->size               = $file->getSize();
+		$_file->type               = $file->getType();
+		$_file->mime_type          = mime_content_type( $_file->path );
+		$_file->last_modified      = $file->getMTime();
+		$_file->latest_access_date = $file->getATime();
+		$_file->id                 = pathinfo( $_file->name, PATHINFO_FILENAME );
+		$files[ $_file->id ]       = $_file;
+	}
+
+	return $files;
+}
+
+/**
+ * List the files of a directory recursively and eventually find a file using its ID.
+ *
+ * @since 10.0.0
+ *
+ * @param string $directory_path Absolute path of a directory.
+ * @param string $find           The file ID to find into the directory or its children.
+ * @return array The list of the files.
+ */
+function bp_attachments_list_directory_files_recursively( $directory_path = '', $find = '' ) {
+	if ( ! is_dir( $directory_path ) ) {
+		return array();
+	}
+
+	$files     = array();
+	$directory = new RecursiveDirectoryIterator( $directory_path, FilesystemIterator::SKIP_DOTS );
+	$iterator  = new RecursiveIteratorIterator( $directory, RecursiveIteratorIterator::CHILD_FIRST );
+	$bp_upload = bp_upload_dir();
+
+	foreach ( $iterator as $file ) {
+		$_file = new stdClass();
+
+		$_file->name               = $file->getfilename();
+		$_file->path               = $file->getPathname();
+		$_file->size               = $file->getSize();
+		$_file->type               = $file->getType();
+		$_file->mime_type          = mime_content_type( $_file->path );
+		$_file->last_modified      = $file->getMTime();
+		$_file->latest_access_date = $file->getATime();
+		$_file->parent_dir_path    = dirname( $_file->path );
+		$_file->parent_dir_url     = str_replace( $bp_upload['basedir'], $bp_upload['baseurl'], $_file->parent_dir_path );
+		$_file->id                 = pathinfo( $_file->name, PATHINFO_FILENAME );
+
+		// Ensure URL is https if SSL is set/forced.
+		if ( is_ssl() ) {
+			$_file->parent_dir_url = str_replace( 'http://', 'https://', $_file->parent_dir_url );
+		}
+
+		$file_id = $_file->id;
+		if ( $_file->parent_dir_path !== $directory_path ) {
+			$file_id = trailingslashit( str_replace( trailingslashit( $directory_path ), '', $_file->parent_dir_path ) ) . $file_id;
+		}
+
+		$files[ $file_id ] = $_file;
+	}
+
+	if ( $find ) {
+		return wp_filter_object_list( $files, array( 'id' => $find ) );
+	}
+
+	return $files;
+}
diff --git src/bp-core/bp-core-avatars.php src/bp-core/bp-core-avatars.php
index 301c6bfdc..7336c6d3b 100644
--- src/bp-core/bp-core-avatars.php
+++ src/bp-core/bp-core-avatars.php
@@ -1176,12 +1176,14 @@ add_action( 'wp_ajax_bp_avatar_upload', 'bp_avatar_ajax_upload' );
  * Handle avatar webcam capture.
  *
  * @since 2.3.0
+ * @since 10.0.0 Adds the `$return` param to eventually return the crop result.
  *
  * @param string $data    Base64 encoded image.
  * @param int    $item_id Item to associate.
- * @return bool True on success, false on failure.
+ * @param string $return  Whether to get the crop `array` or a `boolean`. Defaults to `boolean`.
+ * @return array|bool True on success, false on failure.
  */
-function bp_avatar_handle_capture( $data = '', $item_id = 0 ) {
+function bp_avatar_handle_capture( $data = '', $item_id = 0, $return = 'boolean' ) {
 	if ( empty( $data ) || empty( $item_id ) ) {
 		return false;
 	}
@@ -1237,6 +1239,10 @@ function bp_avatar_handle_capture( $data = '', $item_id = 0 ) {
 		// Crop to default values.
 		$crop_args = array( 'item_id' => $item_id, 'original_file' => $avatar_to_crop, 'crop_x' => 0, 'crop_y' => 0 );
 
+		if ( 'array' === $return ) {
+			return bp_core_avatar_handle_crop( $crop_args, 'array' );
+		}
+
 		return bp_core_avatar_handle_crop( $crop_args );
 	} else {
 		return false;
@@ -1247,6 +1253,7 @@ function bp_avatar_handle_capture( $data = '', $item_id = 0 ) {
  * Crop an uploaded avatar.
  *
  * @since 1.1.0
+ * @since 10.0.0 Adds the `$return` param to eventually return the crop result.
  *
  * @param array|string $args {
  *     Array of function parameters.
@@ -1265,9 +1272,10 @@ function bp_avatar_handle_capture( $data = '', $item_id = 0 ) {
  *     @type int         $crop_x        The horizontal starting point of the crop. Default: 0.
  *     @type int         $crop_y        The vertical starting point of the crop. Default: 0.
  * }
- * @return bool True on success, false on failure.
+ * @param string       $return Whether to get the crop `array` or a `boolean`. Defaults to `boolean`.
+ * @return array|bool True or the crop result on success, false on failure.
  */
-function bp_core_avatar_handle_crop( $args = '' ) {
+function bp_core_avatar_handle_crop( $args = '', $return = 'boolean' ) {
 
 	$r = bp_parse_args(
 		$args,
@@ -1306,6 +1314,10 @@ function bp_core_avatar_handle_crop( $args = '' ) {
 		return false;
 	}
 
+	if ( 'array' === $return ) {
+		return $cropped;
+	}
+
 	return true;
 }
 
@@ -1352,19 +1364,25 @@ function bp_avatar_ajax_set() {
 			$webcam_avatar = base64_decode( $webcam_avatar );
 		}
 
-		if ( ! bp_avatar_handle_capture( $webcam_avatar, $avatar_data['item_id'] ) ) {
+		$cropped_webcam_avatar = bp_avatar_handle_capture( $webcam_avatar, $avatar_data['item_id'], 'array' );
+
+		if ( ! $cropped_webcam_avatar ) {
 			wp_send_json_error( array(
 				'feedback_code' => 1
 			) );
 
 		} else {
 			$return = array(
-				'avatar' => esc_url( bp_core_fetch_avatar( array(
-					'object'  => $avatar_data['object'],
-					'item_id' => $avatar_data['item_id'],
-					'html'    => false,
-					'type'    => 'full',
-				) ) ),
+				'avatar' => esc_url(
+					bp_core_fetch_avatar(
+						array(
+							'object'  => $avatar_data['object'],
+							'item_id' => $avatar_data['item_id'],
+							'html'    => false,
+							'type'    => 'full',
+						)
+					)
+				),
 				'feedback_code' => 2,
 				'item_id'       => $avatar_data['item_id'],
 			);
@@ -1376,12 +1394,14 @@ function bp_avatar_ajax_set() {
 			 * Fires if the new avatar was successfully captured.
 			 *
 			 * @since 6.0.0
+			 * @since 10.0.0 Adds a new param: an array containing the full, thumb avatar and the timestamp.
 			 *
-			 * @param string $item_id     Inform about the user id the avatar was set for.
-			 * @param string $type        Inform about the way the avatar was set ('camera').
-			 * @param array  $avatar_data Array of parameters passed to the avatar handler.
+			 * @param string $item_id               Inform about the user id the avatar was set for.
+			 * @param string $type                  Inform about the way the avatar was set ('camera').
+			 * @param array  $avatar_data           Array of parameters passed to the crop handler.
+			 * @param array  $cropped_webcam_avatar Array containing the full, thumb avatar and the timestamp.
 			 */
-			do_action( 'bp_members_avatar_uploaded', (int) $avatar_data['item_id'], $avatar_data['type'], $avatar_data );
+			do_action( 'bp_members_avatar_uploaded', (int) $avatar_data['item_id'], $avatar_data['type'], $avatar_data, $cropped_webcam_avatar );
 
 			wp_send_json_success( $return );
 		}
@@ -1413,14 +1433,20 @@ function bp_avatar_ajax_set() {
 	);
 
 	// Handle crop.
-	if ( bp_core_avatar_handle_crop( $r ) ) {
+	$cropped_avatar = bp_core_avatar_handle_crop( $r, 'array' );
+
+	if ( $cropped_avatar ) {
 		$return = array(
-			'avatar' => esc_url( bp_core_fetch_avatar( array(
-				'object'  => $avatar_data['object'],
-				'item_id' => $avatar_data['item_id'],
-				'html'    => false,
-				'type'    => 'full',
-			) ) ),
+			'avatar' => esc_url(
+				bp_core_fetch_avatar(
+					array(
+						'object'  => $avatar_data['object'],
+						'item_id' => $avatar_data['item_id'],
+						'html'    => false,
+						'type'    => 'full',
+					)
+				)
+			),
 			'feedback_code' => 2,
 			'item_id'       => $avatar_data['item_id'],
 		);
@@ -1430,10 +1456,10 @@ function bp_avatar_ajax_set() {
 			do_action_deprecated( 'xprofile_avatar_uploaded', array( (int) $avatar_data['item_id'], $avatar_data['type'], $r ), '6.0.0', 'bp_members_avatar_uploaded' );
 
 			/** This action is documented in bp-core/bp-core-avatars.php */
-			do_action( 'bp_members_avatar_uploaded', (int) $avatar_data['item_id'], $avatar_data['type'], $r );
+			do_action( 'bp_members_avatar_uploaded', (int) $avatar_data['item_id'], $avatar_data['type'], $r, $cropped_avatar );
 		} elseif ( 'group' === $avatar_data['object'] ) {
 			/** This action is documented in bp-groups/bp-groups-screens.php */
-			do_action( 'groups_avatar_uploaded', (int) $avatar_data['item_id'], $avatar_data['type'], $r );
+			do_action( 'groups_avatar_uploaded', (int) $avatar_data['item_id'], $avatar_data['type'], $r, $cropped_avatar );
 		}
 
 		wp_send_json_success( $return );
@@ -2122,3 +2148,33 @@ function bp_avatar_template_check() {
 		bp_attachments_get_template_part( 'avatars/index' );
 	}
 }
+
+/**
+ * Get a specific version of an avatar from its history
+ *
+ * @since 10.0.0
+ *
+ * @param int        $user_id   The user ID we need the avatar version for.
+ * @param int|string $timestamp An integer Unix timestamp or a date string of the format 'Y-m-d h:i:s'.
+ * @param string     $type      The type of avatar we need. Possible values are `thumb` and `full`.
+ * @return array                A list of matching results, an empty array if no avatars were found.
+ */
+function bp_avatar_get_version_src( $user_id = 0, $timestamp = '', $type = 'full' ) {
+	if ( ! $user_id || ! $timestamp ) {
+		return array();
+	}
+
+	if ( ! is_numeric( $timestamp ) ) {
+		$timestamp = strtotime( $timestamp );
+	}
+
+	$avatar_id = $timestamp . '-bpfull';
+	if ( 'full' !== $type ) {
+		$avatar_id = $timestamp . '-bpthumb';
+	}
+
+	// The user avatar directory we are looking into to get the avatar url.
+	$user_avatar_dir = trailingslashit( bp_core_avatar_upload_path() ) . 'avatars/' . $user_id;
+
+	return bp_attachments_list_directory_files_recursively( $user_avatar_dir, $avatar_id );
+}
diff --git src/bp-core/classes/class-bp-attachment-avatar.php src/bp-core/classes/class-bp-attachment-avatar.php
index d95ad4c4c..f13188bdd 100644
--- src/bp-core/classes/class-bp-attachment-avatar.php
+++ src/bp-core/classes/class-bp-attachment-avatar.php
@@ -199,7 +199,7 @@ class BP_Attachment_Avatar extends BP_Attachment {
 	 * @see  BP_Attachment::crop for the list of parameters
 	 *
 	 * @param array $args Array of arguments for the cropping.
-	 * @return array The cropped avatars (full and thumb).
+	 * @return array The cropped avatars (full, thumb and the timestamp).
 	 */
 	public function crop( $args = array() ) {
 		// Bail if the original file is missing.
@@ -255,10 +255,36 @@ class BP_Attachment_Avatar extends BP_Attachment {
 
 		/**
 		 * Check that the new avatar doesn't have the same name as the
-		 * old one before deleting
+		 * old one before moving the previous one into history.
 		 */
 		if ( ! empty( $existing_avatar ) && $existing_avatar !== $this->url . $relative_path ) {
-			bp_core_delete_existing_avatar( array( 'object' => $args['object'], 'item_id' => $args['item_id'], 'avatar_path' => $avatar_folder_dir ) );
+			// Add a new revision for the existing avatar.
+			$avatars = bp_attachments_list_directory_files( $avatar_folder_dir );
+
+			if ( $avatars ) {
+				foreach ( $avatars as $avatar_file ) {
+					if ( ! isset( $avatar_file->name, $avatar_file->id, $avatar_file->path ) ) {
+						continue;
+					}
+
+					$is_full  = preg_match( "/-bpfull/", $avatar_file->name );
+					$is_thumb = preg_match( "/-bpthumb/", $avatar_file->name );
+
+					if ( $is_full || $is_thumb ) {
+						$revision = $this->add_revision(
+							'avatar',
+							array(
+								'file_abspath' => $avatar_file->path,
+								'file_id'      => $avatar_file->id,
+							)
+						);
+
+						if ( is_wp_error( $revision ) ) {
+							error_log( $revision->get_error_message() );
+						}
+					}
+				}
+			}
 		}
 
 		// Make sure we at least have minimal data for cropping.
@@ -272,11 +298,16 @@ class BP_Attachment_Avatar extends BP_Attachment {
 
 		// Get the file extension.
 		$data = @getimagesize( $absolute_path );
-		$ext  = $data['mime'] == 'image/png' ? 'png' : 'jpg';
+		$ext  = $data['mime'] === 'image/png' ? 'png' : 'jpg';
 
 		$args['original_file'] = $absolute_path;
 		$args['src_abs']       = false;
-		$avatar_types = array( 'full' => '', 'thumb' => '' );
+
+		$avatar_types = array(
+			'full'  => '',
+			'thumb' => '',
+		);
+		$timestamp   = bp_core_current_time( false, 'timestamp' );
 
 		foreach ( $avatar_types as $key_type => $type ) {
 			if ( 'thumb' === $key_type ) {
@@ -287,7 +318,7 @@ class BP_Attachment_Avatar extends BP_Attachment {
 				$args['dst_h'] = bp_core_avatar_full_height();
 			}
 
-			$filename         = wp_unique_filename( $avatar_folder_dir, uniqid() . "-bp{$key_type}.{$ext}" );
+			$filename         = wp_unique_filename( $avatar_folder_dir, $timestamp . "-bp{$key_type}.{$ext}" );
 			$args['dst_file'] = $avatar_folder_dir . '/' . $filename;
 
 			$avatar_types[ $key_type ] = parent::crop( $args );
@@ -296,8 +327,13 @@ class BP_Attachment_Avatar extends BP_Attachment {
 		// Remove the original.
 		@unlink( $absolute_path );
 
-		// Return the full and thumb cropped avatars.
-		return $avatar_types;
+		// Return the full, thumb cropped avatars and the timestamp.
+		return array_merge(
+			$avatar_types,
+			array(
+				'timestamp' => $timestamp,
+			)
+		);
 	}
 
 	/**
diff --git src/bp-core/classes/class-bp-attachment.php src/bp-core/classes/class-bp-attachment.php
index 9362a6c12..248c44946 100644
--- src/bp-core/classes/class-bp-attachment.php
+++ src/bp-core/classes/class-bp-attachment.php
@@ -559,6 +559,75 @@ abstract class BP_Attachment {
 		return $script_data;
 	}
 
+	/**
+	 * Adds a new revision of a file.
+	 *
+	 * @since 10.0.0
+	 *
+	 * @param string $attachment_type The attachement type (eg: avatar).
+	 * @param array $args {
+	 *     @type string $file_abspath The source file (absolute path) for the attachment.
+	 *     @type string $file_id      Optional. The file ID to use as a suffix for the revision directory.
+	 * }
+	 * @return object|WP_Error An object informing about the URL an Path to a revision file, a WP_Error object on failure.
+	 */
+	public function add_revision( $attachment_type, $args = array() ) {
+		$r = bp_parse_args(
+			$args,
+			array(
+				'file_abspath' => '',
+				'file_id'      => '',
+			),
+			'attachment_' . $attachment_type . '_add_revision'
+		);
+
+		if ( ! $r['file_abspath'] ) {
+			return new WP_Error( 'missing_parameter', __( 'The absolute path to your file is missing.', 'buddypress' ) );
+
+			// Make sure it's coming from an uploaded file.
+		} elseif ( false === strpos( $r['file_abspath'], $this->upload_path ) ) {
+			return new WP_Error( 'forbidden_path', __( 'The absolute path to your file is not allowed.', 'buddypress' ) );
+
+		} else {
+			$filepath = $r['file_abspath'];
+		}
+
+		$dirname  = trailingslashit( dirname( $filepath ) );
+		$filename = sanitize_file_name( wp_basename( $filepath ) );
+
+		if ( ! $r['file_id'] ) {
+			$r['file_id'] = $filename;
+		}
+
+		$file_id = wp_hash( $r['file_id'] );
+
+		// Set the revision name & dir.
+		$revision_name = '';
+		$revision_dir  = $dirname . '._revisions_' . $file_id;
+
+		// Avatars and Cover Images are specific attachments.
+		if ( 'avatar' === $attachment_type || 'cover_image' === $attachment_type ) {
+			$revision_dir  = $dirname . 'history';
+		}
+
+		// Create the revision directory if it doesn't exist yet.
+		if ( ! is_dir( $revision_dir ) ) {
+			mkdir( $revision_dir );
+		}
+
+		$revision_name = wp_unique_filename( $revision_dir, $filename );
+		$revision_path = trailingslashit( $revision_dir ) . $revision_name;
+
+		if ( ! rename( $filepath, $revision_path ) ) {
+			return new WP_Error( 'missing_parameter', __( 'An unexpected error occured while adding the revision.', 'buddypress' ) );
+		}
+
+		return (object) array(
+			'url'  => str_replace( trailingslashit( $this->upload_path ), trailingslashit( $this->url ), $revision_path ),
+			'path' => $revision_path,
+		);
+	}
+
 	/**
 	 * Get full data for an image
 	 *
diff --git src/bp-groups/actions/create.php src/bp-groups/actions/create.php
index 132429bd1..54e2cc589 100644
--- src/bp-groups/actions/create.php
+++ src/bp-groups/actions/create.php
@@ -270,19 +270,23 @@ function groups_action_create_group() {
 				'crop_h'        => $_POST['h']
 			);
 
-			if ( ! bp_core_avatar_handle_crop( $args ) ) {
+			$cropped_avatar = bp_core_avatar_handle_crop( $args, 'array' );
+
+			if ( ! $cropped_avatar ) {
 				bp_core_add_message( __( 'There was an error saving the group profile photo, please try uploading again.', 'buddypress' ), 'error' );
 			} else {
 				/**
 				 * Fires after a group avatar is uploaded.
 				 *
 				 * @since 2.8.0
+				 * @since 10.0.0 Adds a new param: an array containing the full, thumb avatar and the timestamp.
 				 *
-				 * @param int    $group_id ID of the group.
-				 * @param string $type     Avatar type. 'crop' or 'full'.
-				 * @param array  $args     Array of parameters passed to the avatar handler.
+				 * @param int    $group_id       ID of the group.
+				 * @param string $type           Avatar type. 'crop' or 'camera'.
+				 * @param array  $args           Array of parameters passed to the crop handler.
+				 * @param array  $cropped_avatar Array containing the full, thumb avatar and the timestamp.
 				 */
-				do_action( 'groups_avatar_uploaded', bp_get_current_group_id(), 'crop', $args );
+				do_action( 'groups_avatar_uploaded', bp_get_current_group_id(), 'crop', $args, $cropped_avatar );
 
 				bp_core_add_message( __( 'The group profile photo was uploaded successfully.', 'buddypress' ) );
 			}
diff --git src/bp-groups/screens/single/admin/group-avatar.php src/bp-groups/screens/single/admin/group-avatar.php
index 3e2927a1e..57fc59451 100644
--- src/bp-groups/screens/single/admin/group-avatar.php
+++ src/bp-groups/screens/single/admin/group-avatar.php
@@ -74,19 +74,23 @@ function groups_screen_group_admin_avatar() {
 			'crop_h'        => $_POST['h']
 		);
 
-		if ( !bp_core_avatar_handle_crop( $args ) ) {
+		$cropped_avatar = bp_core_avatar_handle_crop( $args, 'array' );
+
+		if ( ! $cropped_avatar ) {
 			bp_core_add_message( __( 'There was a problem cropping the group profile photo.', 'buddypress' ), 'error' );
 		} else {
 			/**
 			 * Fires after a group avatar is uploaded.
 			 *
 			 * @since 2.8.0
+			 * @since 10.0.0 Adds a new param: an array containing the full, thumb avatar and the timestamp.
 			 *
-			 * @param int    $group_id ID of the group.
-			 * @param string $type     Avatar type. 'crop' or 'full'.
-			 * @param array  $args     Array of parameters passed to the avatar handler.
+			 * @param int    $group_id       ID of the group.
+			 * @param string $type           Avatar type. 'crop' or 'camera'.
+			 * @param array  $args           Array of parameters passed to the avatar handler.
+			 * @param array  $cropped_avatar Array containing the full, thumb avatar and the timestamp.
 			 */
-			do_action( 'groups_avatar_uploaded', bp_get_current_group_id(), 'crop', $args );
+			do_action( 'groups_avatar_uploaded', bp_get_current_group_id(), 'crop', $args, $cropped_avatar );
 			bp_core_add_message( __( 'The new group profile photo was uploaded successfully.', 'buddypress' ) );
 		}
 	}
@@ -109,4 +113,4 @@ function groups_screen_group_admin_avatar() {
 	 */
 	bp_core_load_template( apply_filters( 'groups_template_group_admin_avatar', 'groups/single/home' ) );
 }
-add_action( 'bp_screens', 'groups_screen_group_admin_avatar' );
\ No newline at end of file
+add_action( 'bp_screens', 'groups_screen_group_admin_avatar' );
diff --git src/bp-members/bp-members-activity.php src/bp-members/bp-members-activity.php
index 890ff2317..1645c1542 100644
--- src/bp-members/bp-members-activity.php
+++ src/bp-members/bp-members-activity.php
@@ -166,10 +166,14 @@ add_action( 'bp_core_activated_user', 'bp_core_new_user_activity' );
  * Adds an activity stream item when a user has uploaded a new avatar.
  *
  * @since 8.0.0
+ * @since 10.0.0 Adds the `$type`, `$crop_data` and `$cropped_avatar` parameters.
  *
- * @param int $user_id The user id the avatar was set for.
+ * @param int    $user_id        The user id the avatar was set for.
+ * @param string $type           The way the avatar was set ('camera' or `crop`).
+ * @param array  $crop_data      Array of parameters passed to the crop handler.
+ * @param array  $cropped_avatar Array containing the full, thumb avatar and the timestamp.
  */
-function bp_members_new_avatar_activity( $user_id = 0 ) {
+function bp_members_new_avatar_activity( $user_id = 0, $type = '', $crop_data = array(), $cropped_avatar = array() ) {
 
 	// Bail if activity component is not active.
 	if ( ! bp_is_active( 'activity' ) ) {
@@ -230,13 +234,19 @@ function bp_members_new_avatar_activity( $user_id = 0 ) {
 		}
 	}
 
+	$recorded_time = '';
+	if ( isset( $cropped_avatar['timestamp'] ) && $cropped_avatar['timestamp'] ) {
+		$recorded_time = date( 'Y-m-d H:i:s', $cropped_avatar['timestamp'] );
+	}
+
 	// Add the activity.
-	bp_activity_add(
+	$activity_id = bp_activity_add(
 		array(
-			'user_id'   => $user_id,
-			'component' => $bp->members->id,
-			'type'      => 'new_avatar',
+			'user_id'       => $user_id,
+			'component'     => $bp->members->id,
+			'type'          => 'new_avatar',
+			'recorded_time' => $recorded_time,
 		)
 	);
 }
-add_action( 'bp_members_avatar_uploaded', 'bp_members_new_avatar_activity' );
+add_action( 'bp_members_avatar_uploaded', 'bp_members_new_avatar_activity', 10, 4 );
diff --git src/bp-members/screens/change-avatar.php src/bp-members/screens/change-avatar.php
index 5c4bcf440..6a421ec77 100644
--- src/bp-members/screens/change-avatar.php
+++ src/bp-members/screens/change-avatar.php
@@ -61,7 +61,10 @@ function bp_members_screen_change_avatar() {
 			'crop_h'        => $_POST['h']
 		);
 
-		if ( ! bp_core_avatar_handle_crop( $args ) ) {
+		// Handle crop.
+		$cropped_avatar = bp_core_avatar_handle_crop( $r, 'array' );
+
+		if ( ! $cropped_avatar ) {
 			bp_core_add_message( __( 'There was a problem cropping your profile photo.', 'buddypress' ), 'error' );
 		} else {
 
@@ -72,11 +75,14 @@ function bp_members_screen_change_avatar() {
 			 * Fires right before the redirect, after processing a new avatar.
 			 *
 			 * @since 6.0.0
+			 * @since 10.0.0 Adds a new param: an array containing the full, thumb avatar and the timestamp.
 			 *
-			 * @param string $item_id Inform about the user id the avatar was set for.
-			 * @param string $value   Inform about the way the avatar was set ('crop').
+			 * @param string $item_id        Inform about the user id the avatar was set for.
+			 * @param string $type           Inform about the way the avatar was set ('camera').
+			 * @param array  $args           Array of parameters passed to the crop handler.
+			 * @param array  $cropped_avatar Array containing the full, thumb avatar and the timestamp.
 			 */
-			do_action( 'bp_members_avatar_uploaded', (int) $args['item_id'], 'crop' );
+			do_action( 'bp_members_avatar_uploaded', (int) $args['item_id'], 'crop', $args, $cropped_avatar );
 
 			bp_core_add_message( __( 'Your new profile photo was uploaded successfully.', 'buddypress' ) );
 			bp_core_redirect( bp_displayed_user_domain() );
diff --git src/bp-templates/bp-legacy/css/buddypress-rtl.css src/bp-templates/bp-legacy/css/buddypress-rtl.css
index d99591d63..f08797e2d 100644
--- src/bp-templates/bp-legacy/css/buddypress-rtl.css
+++ src/bp-templates/bp-legacy/css/buddypress-rtl.css
@@ -30,6 +30,7 @@ Hello, this is the BuddyPress Legacy stylesheet.
 	4.1 - Smartphones Landscape
 	4.2 - Smartphones Portrait
 	4.3 - Smartphones - smaller screen sizes
+5.0 - Activity Types.
 --------------------------------------------------------------*/
 
 /*--------------------------------------------------------------
@@ -2281,3 +2282,75 @@ body.register #buddypress div.page ul {
 		margin: 10px 0 20px;
 	}
 }
+
+/*--------------------------------------------------------------
+5.0 - Activity Types
+--------------------------------------------------------------*/
+.bp-member-preview-cover,
+.bp-group-preview-cover {
+	position: relative;
+	min-height: 150px;
+	background: #c5c5c5;
+}
+
+.bp-member-preview-cover img,
+.bp-group-preview-cover img {
+	background: #c5c5c5;
+	object-fit: cover;
+	border: 0;
+	display: block;
+	margin: 0;
+	padding: 0;
+	width: 100%;
+	z-index: 1;
+	height: 150px;
+}
+
+.bp-member-avatar-content,
+.bp-group-avatar-content {
+    float: right;
+	width: 200px;
+	margin-top: -75px;
+	position: relative;
+	z-index: 2;
+}
+
+.bp-member-avatar-content img.profile-photo,
+.bp-group-avatar-content img.group-photo {
+	border: solid 2px #fff;
+	background: rgba(255, 255, 255, 0.8);
+	margin-right: 20px;
+}
+
+.bp-member-short-description-title a,
+.bp-group-short-description-title a {
+	font-weight: 600;
+}
+
+@media screen and (max-width: 46.8em) {
+	.bp-member-short-description,
+	.bp-group-short-description {
+		text-align: center;
+	}
+	.bp-member-avatar-content,
+	.bp-group-avatar-content {
+        float: none;
+		width: 100%;
+        margin-right: auto;
+		margin-left: auto;
+		margin-bottom: 15px;
+	}
+	.bp-member-avatar-content img.profile-photo,
+	.bp-group-avatar-content img.group-photo {
+		margin: auto;
+	}
+	.bp-profile-button {
+		margin-top: 15px;
+	}
+}
+
+@media screen and (min-width: 46.8em) {
+	.bp-profile-button {
+		text-align: left;
+	}
+}
diff --git src/bp-templates/bp-legacy/css/buddypress.css src/bp-templates/bp-legacy/css/buddypress.css
index be7270d71..adaf3146a 100644
--- src/bp-templates/bp-legacy/css/buddypress.css
+++ src/bp-templates/bp-legacy/css/buddypress.css
@@ -30,6 +30,7 @@ Hello, this is the BuddyPress Legacy stylesheet.
 	4.1 - Smartphones Landscape
 	4.2 - Smartphones Portrait
 	4.3 - Smartphones - smaller screen sizes
+5.0 - Activity Types.
 --------------------------------------------------------------*/
 
 /*--------------------------------------------------------------
@@ -2281,3 +2282,75 @@ body.register #buddypress div.page ul {
 		margin: 10px 0 20px;
 	}
 }
+
+/*--------------------------------------------------------------
+5.0 - Activity Types
+--------------------------------------------------------------*/
+.bp-member-preview-cover,
+.bp-group-preview-cover {
+	position: relative;
+	min-height: 150px;
+	background: #c5c5c5;
+}
+
+.bp-member-preview-cover img,
+.bp-group-preview-cover img {
+	background: #c5c5c5;
+	object-fit: cover;
+	border: 0;
+	display: block;
+	margin: 0;
+	padding: 0;
+	width: 100%;
+	z-index: 1;
+	height: 150px;
+}
+
+.bp-member-avatar-content,
+.bp-group-avatar-content {
+    float: left;
+	width: 200px;
+	margin-top: -75px;
+	position: relative;
+	z-index: 2;
+}
+
+.bp-member-avatar-content img.profile-photo,
+.bp-group-avatar-content img.group-photo {
+	border: solid 2px #fff;
+	background: rgba(255, 255, 255, 0.8);
+	margin-left: 20px;
+}
+
+.bp-member-short-description-title a,
+.bp-group-short-description-title a {
+	font-weight: 600;
+}
+
+@media screen and (max-width: 46.8em) {
+	.bp-member-short-description,
+	.bp-group-short-description {
+		text-align: center;
+	}
+	.bp-member-avatar-content,
+	.bp-group-avatar-content {
+        float: none;
+		width: 100%;
+        margin-left: auto;
+		margin-right: auto;
+		margin-bottom: 15px;
+	}
+	.bp-member-avatar-content img.profile-photo,
+	.bp-group-avatar-content img.group-photo {
+		margin: auto;
+	}
+	.bp-profile-button {
+		margin-top: 15px;
+	}
+}
+
+@media screen and (min-width: 46.8em) {
+	.bp-profile-button {
+		text-align: right;
+	}
+}
diff --git src/bp-templates/bp-legacy/css/embeds-activity-rtl.css src/bp-templates/bp-legacy/css/embeds-activity-rtl.css
index ac6fda0ee..ed6f56efa 100644
--- src/bp-templates/bp-legacy/css/embeds-activity-rtl.css
+++ src/bp-templates/bp-legacy/css/embeds-activity-rtl.css
@@ -154,3 +154,83 @@ a.play-btn:hover {
 		width: 35px;
 	}
 }
+
+/**
+*-------------------------------------------------------------------------------
+* Activity Types
+*-------------------------------------------------------------------------------
+*/
+.bp-member-preview-cover,
+.bp-group-preview-cover {
+	position: relative;
+	min-height: 150px;
+	background: #c5c5c5;
+}
+
+.bp-member-activity-preview a,
+.bp-group-activity-preview a {
+    display: block;
+    max-width: 100%;
+}
+
+.bp-member-preview-cover img,
+.bp-group-preview-cover img {
+	background: #c5c5c5;
+	object-fit: cover;
+	border: 0;
+	display: block;
+	margin: 0;
+	padding: 0;
+	width: 100%;
+	z-index: 1;
+	height: 150px;
+}
+
+.bp-member-avatar-content,
+.bp-group-avatar-content {
+    float: right;
+	width: 200px;
+	margin-top: -75px;
+	position: relative;
+	z-index: 2;
+}
+
+.bp-member-avatar-content img.profile-photo,
+.bp-group-avatar-content img.group-photo {
+	border: solid 2px #fff;
+	background: rgba(255, 255, 255, 0.8);
+	margin-right: 20px;
+}
+
+.bp-member-short-description-title a,
+.bp-group-short-description-title a {
+	font-weight: 600;
+}
+
+@media screen and (max-width: 46.8em) {
+	.bp-member-short-description,
+	.bp-group-short-description {
+		text-align: center;
+	}
+	.bp-member-avatar-content,
+	.bp-group-avatar-content {
+        float: none;
+		width: 100%;
+        margin-right: auto;
+		margin-left: auto;
+		margin-bottom: 15px;
+	}
+	.bp-member-avatar-content img.profile-photo,
+	.bp-group-avatar-content img.group-photo {
+		margin: auto;
+	}
+	.bp-profile-button {
+		margin-top: 15px;
+	}
+}
+
+@media screen and (min-width: 46.8em) {
+	.bp-profile-button {
+		text-align: left;
+	}
+}
diff --git src/bp-templates/bp-legacy/css/embeds-activity.css src/bp-templates/bp-legacy/css/embeds-activity.css
index 9e0b465d9..ce0aa99c9 100644
--- src/bp-templates/bp-legacy/css/embeds-activity.css
+++ src/bp-templates/bp-legacy/css/embeds-activity.css
@@ -154,3 +154,83 @@ a.play-btn:hover {
 		width: 35px;
 	}
 }
+
+/**
+*-------------------------------------------------------------------------------
+* Activity Types
+*-------------------------------------------------------------------------------
+*/
+.bp-member-preview-cover,
+.bp-group-preview-cover {
+	position: relative;
+	min-height: 150px;
+	background: #c5c5c5;
+}
+
+.bp-member-activity-preview a,
+.bp-group-activity-preview a {
+    display: block;
+    max-width: 100%;
+}
+
+.bp-member-preview-cover img,
+.bp-group-preview-cover img {
+	background: #c5c5c5;
+	object-fit: cover;
+	border: 0;
+	display: block;
+	margin: 0;
+	padding: 0;
+	width: 100%;
+	z-index: 1;
+	height: 150px;
+}
+
+.bp-member-avatar-content,
+.bp-group-avatar-content {
+    float: left;
+	width: 200px;
+	margin-top: -75px;
+	position: relative;
+	z-index: 2;
+}
+
+.bp-member-avatar-content img.profile-photo,
+.bp-group-avatar-content img.group-photo {
+	border: solid 2px #fff;
+	background: rgba(255, 255, 255, 0.8);
+	margin-left: 20px;
+}
+
+.bp-member-short-description-title a,
+.bp-group-short-description-title a {
+	font-weight: 600;
+}
+
+@media screen and (max-width: 46.8em) {
+	.bp-member-short-description,
+	.bp-group-short-description {
+		text-align: center;
+	}
+	.bp-member-avatar-content,
+	.bp-group-avatar-content {
+        float: none;
+		width: 100%;
+        margin-left: auto;
+		margin-right: auto;
+		margin-bottom: 15px;
+	}
+	.bp-member-avatar-content img.profile-photo,
+	.bp-group-avatar-content img.group-photo {
+		margin: auto;
+	}
+	.bp-profile-button {
+		margin-top: 15px;
+	}
+}
+
+@media screen and (min-width: 46.8em) {
+	.bp-profile-button {
+		text-align: right;
+	}
+}
diff --git src/bp-templates/bp-nouveau/common-styles/_bp_activity_entries.scss src/bp-templates/bp-nouveau/common-styles/_bp_activity_entries.scss
index edd598f92..5d0edf4fb 100644
--- src/bp-templates/bp-nouveau/common-styles/_bp_activity_entries.scss
+++ src/bp-templates/bp-nouveau/common-styles/_bp_activity_entries.scss
@@ -436,3 +436,79 @@ body.activity-permalink {
 
 	}
 }
+
+// Activity Types Entry View
+.bp-member-preview-cover,
+.bp-group-preview-cover {
+	position: relative;
+	min-height: 150px;
+	background: #c5c5c5;
+	
+	img {
+		background: #c5c5c5;
+		object-fit: cover;
+		border: 0;
+		display: block;
+		margin: 0;
+		padding: 0;
+		width: 100%;
+		z-index: 1;
+		height: 150px;
+	}
+}
+
+.bp-member-avatar-content,
+.bp-group-avatar-content {
+	float: left;
+	width: 200px;
+	margin-top: -75px;
+	position: relative;
+	z-index: 2;
+	
+	img.profile-photo,
+	img.group-photo {
+		border: solid 2px #fff;
+		background: rgba(255,255,255,.8);
+		margin-left: 20px;
+	}
+}
+
+.bp-member-short-description-title a,
+.bp-group-short-description-title a {
+	font-weight: 600;
+}
+
+@include medium-max() {
+
+	.bp-member-short-description,
+	.bp-group-short-description {
+		text-align: center;
+	}
+	
+	.bp-member-avatar-content,
+	.bp-group-avatar-content {
+		float: none;
+		width: 100%;
+		margin-left: auto;
+		margin-right: auto;
+		margin-bottom: 15px;
+		
+		img.profile-photo,
+		img.group-photo {
+			margin: auto;
+		}
+	}
+	
+	.bp-profile-button {
+		margin-top: 15px;
+	}
+	
+} // close @media
+
+@include medium-up {
+
+	.bp-profile-button {
+		text-align: right;
+	}
+	
+} // close @media
\ No newline at end of file
diff --git src/bp-templates/bp-nouveau/css/buddypress-rtl.css src/bp-templates/bp-nouveau/css/buddypress-rtl.css
index e67c2b8f0..30721e319 100644
--- src/bp-templates/bp-nouveau/css/buddypress-rtl.css
+++ src/bp-templates/bp-nouveau/css/buddypress-rtl.css
@@ -69,6 +69,9 @@ body #buddypress select,
 body #buddypress input[type="search"],
 body #buddypress input[type="submit"],
 body #buddypress input[type="reset"] {
+	-webkit-border-radius: 2px;
+	-moz-border-radius: 2px;
+	-ms-border-radius: 2px;
 	border-radius: 2px;
 	background-clip: padding-box;
 }
@@ -79,6 +82,8 @@ body #buddypress .bp-lists blockquote {
 }
 
 body #buddypress .bp-list .action {
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
 	box-sizing: border-box;
 }
 
@@ -375,6 +380,8 @@ body.buddypress article.page > .entry-header:not(.alignwide):not(.alignfull) .en
 	.buddypress-wrap.bp-dir-hori-nav:not(.bp-vertical-navs) nav:not(.tabbed-links) {
 		border-bottom: 1px solid #eee;
 		border-top: 1px solid #eee;
+		-webkit-box-shadow: 0 2px 12px 0 #fafafa;
+		-moz-box-shadow: 0 2px 12px 0 #fafafa;
 		box-shadow: 0 2px 12px 0 #fafafa;
 	}
 }
@@ -868,6 +875,8 @@ body.buddypress article.page > .entry-header:not(.alignwide):not(.alignfull) .en
 }
 
 .bp-list {
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
 	box-sizing: border-box;
 	border-top: 1px solid #eaeaea;
 	clear: both;
@@ -1018,6 +1027,8 @@ body.buddypress article.page > .entry-header:not(.alignwide):not(.alignfull) .en
 .activity-list.bp-list .activity-item {
 	background: #fff;
 	border: 1px solid #b7b7b7;
+	-webkit-box-shadow: 0 0 6px #d2d2d2;
+	-moz-box-shadow: 0 0 6px #d2d2d2;
 	box-shadow: 0 0 6px #d2d2d2;
 	margin: 20px 0;
 }
@@ -1038,16 +1049,22 @@ body.buddypress article.page > .entry-header:not(.alignwide):not(.alignfull) .en
 @media screen and (min-width: 46.8em) {
 	.friends-request-list li,
 	.membership-requests-list li {
+		display: -webkit-flex;
 		display: -moz-flex;
 		display: -ms-flex;
 		display: -o-flex;
 		display: flex;
+		-webkit-flex-flow: row nowrap;
+		-moz-flex-flow: row nowrap;
+		-ms-flex-flow: row nowrap;
 		-o-flex-flow: row nowrap;
 		flex-flow: row nowrap;
 	}
 	.friends-request-list li .item,
 	.membership-requests-list li .item {
+		-webkit-flex: 1 1 auto;
 		-moz-flex: 1 1 auto;
+		-ms-flex: 1 1 auto;
 		-o-flex: 1 1 auto;
 		flex: 1 1 auto;
 	}
@@ -1103,6 +1120,8 @@ body.buddypress article.page > .entry-header:not(.alignwide):not(.alignfull) .en
 
 .activity-update-form {
 	border: 1px solid #ccc;
+	-webkit-box-shadow: inset 0 0 6px #eee;
+	-moz-box-shadow: inset 0 0 6px #eee;
 	box-shadow: inset 0 0 6px #eee;
 	margin: 15px 0;
 }
@@ -1125,6 +1144,8 @@ body.buddypress article.page > .entry-header:not(.alignwide):not(.alignfull) .en
 
 .activity-update-form #whats-new-textarea textarea {
 	background: #fff;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
 	box-sizing: border-box;
 	color: #333;
 	font-family: inherit;
@@ -1136,6 +1157,8 @@ body.buddypress article.page > .entry-header:not(.alignwide):not(.alignfull) .en
 }
 
 .activity-update-form #whats-new-textarea textarea:focus {
+	-webkit-box-shadow: 0 0 6px 0 #d6d6d6;
+	-moz-box-shadow: 0 0 6px 0 #d6d6d6;
 	box-shadow: 0 0 6px 0 #d6d6d6;
 }
 
@@ -1164,7 +1187,13 @@ body.buddypress article.page > .entry-header:not(.alignwide):not(.alignfull) .en
 }
 
 .activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object {
+	display: -webkit-box;
+	display: -ms-flexbox;
+	display: -webkit-flex;
 	display: flex;
+	-ms-flex-align: center;
+	-webkit-align-items: center;
+	-webkit-box-align: center;
 	align-items: center;
 	padding: 0.2em;
 }
@@ -1512,6 +1541,8 @@ body.buddypress article.page > .entry-header:not(.alignwide):not(.alignfull) .en
 .buddypress-wrap .activity-list .load-newest:focus,
 .buddypress-wrap .activity-list .load-newest:hover {
 	border-color: #e1e1e1;
+	-webkit-box-shadow: 0 0 6px 0 #eaeaea;
+	-moz-box-shadow: 0 0 6px 0 #eaeaea;
 	box-shadow: 0 0 6px 0 #eaeaea;
 }
 
@@ -1577,6 +1608,7 @@ body.activity-permalink .activity-list .activity-comments {
 		top: -20px;
 	}
 	body.activity-permalink .activity-list .activity-avatar img {
+		-webkit-box-shadow: 0 0 0 8px #fff;
 		box-shadow: 0 0 0 8px #fff;
 	}
 	body.activity-permalink .activity-list .activity-content {
@@ -1587,6 +1619,79 @@ body.activity-permalink .activity-list .activity-comments {
 	}
 }
 
+.bp-member-preview-cover,
+.bp-group-preview-cover {
+	position: relative;
+	min-height: 150px;
+	background: #c5c5c5;
+}
+
+.bp-member-preview-cover img,
+.bp-group-preview-cover img {
+	background: #c5c5c5;
+	object-fit: cover;
+	border: 0;
+	display: block;
+	margin: 0;
+	padding: 0;
+	width: 100%;
+	z-index: 1;
+	height: 150px;
+}
+
+.bp-member-avatar-content,
+.bp-group-avatar-content {
+	float: right;
+	width: 200px;
+	margin-top: -75px;
+	position: relative;
+	z-index: 2;
+}
+
+.bp-member-avatar-content img.profile-photo,
+.bp-member-avatar-content img.group-photo,
+.bp-group-avatar-content img.profile-photo,
+.bp-group-avatar-content img.group-photo {
+	border: solid 2px #fff;
+	background: rgba(255, 255, 255, 0.8);
+	margin-right: 20px;
+}
+
+.bp-member-short-description-title a,
+.bp-group-short-description-title a {
+	font-weight: 600;
+}
+
+@media screen and (max-width: 46.8em) {
+	.bp-member-short-description,
+	.bp-group-short-description {
+		text-align: center;
+	}
+	.bp-member-avatar-content,
+	.bp-group-avatar-content {
+		float: none;
+		width: 100%;
+		margin-right: auto;
+		margin-left: auto;
+		margin-bottom: 15px;
+	}
+	.bp-member-avatar-content img.profile-photo,
+	.bp-member-avatar-content img.group-photo,
+	.bp-group-avatar-content img.profile-photo,
+	.bp-group-avatar-content img.group-photo {
+		margin: auto;
+	}
+	.bp-profile-button {
+		margin-top: 15px;
+	}
+}
+
+@media screen and (min-width: 46.8em) {
+	.bp-profile-button {
+		text-align: left;
+	}
+}
+
 /**
 *-----------------------------------------------------
 * @section 3.1.3 - Activity Comments
@@ -1757,6 +1862,8 @@ form.ac-form .ac-reply-content .ac-textarea textarea {
 }
 
 form.ac-form .ac-reply-content .ac-textarea textarea:focus {
+	-webkit-box-shadow: 0 0 6px #d6d6d6;
+	-moz-box-shadow: 0 0 6px #d6d6d6;
 	box-shadow: 0 0 6px #d6d6d6;
 }
 
@@ -1820,6 +1927,9 @@ form.ac-form .ac-reply-content input {
 
 .buddypress-wrap .groups-list li .group-desc {
 	border: 1px solid #eaeaea;
+	-webkit-border-radius: 10px;
+	-moz-border-radius: 10px;
+	-ms-border-radius: 10px;
 	border-radius: 10px;
 	background-clip: padding-box;
 	font-size: 13px;
@@ -1895,6 +2005,9 @@ form.ac-form .ac-reply-content input {
 
 .buddypress-wrap .members-list li .user-update {
 	border: 1px solid #eaeaea;
+	-webkit-border-radius: 10px;
+	-moz-border-radius: 10px;
+	-ms-border-radius: 10px;
 	border-radius: 10px;
 	background-clip: padding-box;
 	color: #737373;
@@ -1944,6 +2057,8 @@ form.ac-form .ac-reply-content input {
 *-------------------------------------------------------------------------------
 */
 .register-page .register-section {
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
 	box-sizing: border-box;
 }
 
@@ -2353,6 +2468,8 @@ body.no-js .single-item-header .js-self-profile-button {
 }
 
 .groups-header .moderators-lists img.avatar {
+	-moz-box-shadow: none;
+	-webkit-box-shadow: none;
 	box-shadow: none;
 	float: none;
 	height: 30px;
@@ -2390,6 +2507,8 @@ body.no-js .single-item-header .js-self-profile-button {
 
 .groups-header .desc-wrap .group-description {
 	background: #fafafa;
+	-webkit-box-shadow: inset 0 0 9px #ccc;
+	-moz-box-shadow: inset 0 0 9px #ccc;
 	box-shadow: inset 0 0 9px #ccc;
 	padding: 1em;
 	text-align: right;
@@ -2668,6 +2787,8 @@ body.buddypress.bp-user .buddypress-wrap .member-header-actions * > * {
 }
 
 .buddypress .bp-invites-content ul.item-list li.selected {
+	-webkit-box-shadow: inset 0 0 12px 0 rgba(237, 187, 52, 0.2);
+	-moz-box-shadow: inset 0 0 12px 0 rgba(237, 187, 52, 0.2);
 	box-shadow: inset 0 0 12px 0 rgba(237, 187, 52, 0.2);
 }
 
@@ -2739,6 +2860,8 @@ body.buddypress.bp-user .buddypress-wrap .member-header-actions * > * {
 
 @media screen and (min-width: 46.8em) {
 	.buddypress .bp-invites-content ul.item-list > li {
+		-webkit-box-sizing: border-box;
+		-moz-box-sizing: border-box;
 		box-sizing: border-box;
 		border: 1px solid #eaeaea;
 		float: right;
@@ -2760,7 +2883,9 @@ body.buddypress.bp-user .buddypress-wrap .member-header-actions * > * {
 
 @media screen and (min-width: 46.8em) {
 	:not(.vertical) + .item-body #group-invites-container {
+		display: -ms-grid;
 		display: grid;
+		-ms-grid-columns: 25% auto;
 		grid-template-columns: 25% auto;
 		grid-template-areas: "group-invites-nav group-invites-column";
 	}
@@ -3019,6 +3144,8 @@ body.register .buddypress-wrap .page ul {
 }
 
 .bp-messages-content .avatar {
+	-moz-box-shadow: none;
+	-webkit-box-shadow: none;
 	box-shadow: none;
 }
 
@@ -3049,10 +3176,14 @@ body.register .buddypress-wrap .page ul {
 
 #message-threads li {
 	border-bottom: 1px solid #eaeaea;
+	display: -webkit-flex;
 	display: -moz-flex;
 	display: -ms-flex;
 	display: -o-flex;
 	display: flex;
+	-webkit-flex-flow: row nowrap;
+	-moz-flex-flow: row nowrap;
+	-ms-flex-flow: row nowrap;
 	-o-flex-flow: row nowrap;
 	flex-flow: row nowrap;
 	margin: 0;
@@ -3061,16 +3192,26 @@ body.register .buddypress-wrap .page ul {
 }
 
 #message-threads li .thread-cb {
+	display: -webkit-box;
+	display: -ms-flexbox;
+	display: -webkit-flex;
 	display: flex;
+	-ms-flex-align: center;
+	-webkit-align-items: center;
+	-webkit-box-align: center;
 	align-items: center;
+	-webkit-flex: 1 2 5%;
 	-moz-flex: 1 2 5%;
+	-ms-flex: 1 2 5%;
 	-o-flex: 1 2 5%;
 	flex: 1 2 5%;
 }
 
 #message-threads li .thread-from,
 #message-threads li .thread-to {
+	-webkit-flex: 1 2 20%;
 	-moz-flex: 1 2 20%;
+	-ms-flex: 1 2 20%;
 	-o-flex: 1 2 20%;
 	flex: 1 2 20%;
 }
@@ -3096,13 +3237,17 @@ body.register .buddypress-wrap .page ul {
 }
 
 #message-threads li .thread-content {
+	-webkit-flex: 1 2 60%;
 	-moz-flex: 1 2 60%;
+	-ms-flex: 1 2 60%;
 	-o-flex: 1 2 60%;
 	flex: 1 2 60%;
 }
 
 #message-threads li .thread-date {
+	-webkit-flex: 1 2 15%;
 	-moz-flex: 1 2 15%;
+	-ms-flex: 1 2 15%;
 	-o-flex: 1 2 15%;
 	flex: 1 2 15%;
 }
@@ -3204,6 +3349,8 @@ body.register .buddypress-wrap .page ul {
 
 .bp-messages-content #bp-message-thread-list .message-metadata {
 	border-bottom: 1px solid #ccc;
+	-webkit-box-shadow: 2px 1px 9px 0 #eee;
+	-moz-box-shadow: 2px 1px 9px 0 #eee;
 	box-shadow: 2px 1px 9px 0 #eee;
 	display: table;
 	padding: 0.2em;
@@ -3447,6 +3594,8 @@ body.buddypress.settings.data #buddypress.buddypress-wrap .item-body p a {
 .buddypress-wrap input[type="url"]:focus,
 .buddypress-wrap input[type="tel"]:focus,
 .buddypress-wrap input[type="password"]:focus {
+	-webkit-box-shadow: 0 0 8px #eaeaea;
+	-moz-box-shadow: 0 0 8px #eaeaea;
 	box-shadow: 0 0 8px #eaeaea;
 }
 
@@ -3686,6 +3835,7 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages {
 }
 
 .buddypress-wrap .select-wrap select {
+	-moz-appearance: none;
 	-webkit-appearance: none;
 	-o-appearance: none;
 	appearance: none;
@@ -3780,6 +3930,9 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages {
 .buddypress-wrap form#group-members-search button[type="submit"] {
 	background: none;
 	border: 0;
+	-webkit-border-radius: 0;
+	-moz-border-radius: 0;
+	-ms-border-radius: 0;
 	border-radius: 0;
 	background-clip: padding-box;
 }
@@ -4056,7 +4209,12 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages {
 }
 
 .center-vert {
+	display: -ms-flexbox;
+	display: -webkit-flex;
 	display: flex;
+	-ms-flex-align: center;
+	-webkit-align-items: center;
+	-webkit-box-align: center;
 	align-items: center;
 }
 
@@ -4170,6 +4328,8 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages {
 .buddypress .buddypress-wrap input.text-button {
 	background: none;
 	border: 0;
+	-moz-box-shadow: none;
+	-webkit-box-shadow: none;
 	box-shadow: none;
 	color: #767676;
 }
@@ -4265,8 +4425,13 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages {
 
 .buddypress #buddypress .create-button a {
 	border: 1px solid #ccc;
+	-webkit-border-radius: 5px;
+	-moz-border-radius: 5px;
+	-ms-border-radius: 5px;
 	border-radius: 5px;
 	background-clip: padding-box;
+	-webkit-box-shadow: inset 0 0 6px 0 #eaeaea;
+	-moz-box-shadow: inset 0 0 6px 0 #eaeaea;
 	box-shadow: inset 0 0 6px 0 #eaeaea;
 	margin: 0.2em 0;
 	width: auto;
@@ -4275,6 +4440,8 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages {
 .buddypress #buddypress .create-button a:focus, .buddypress #buddypress .create-button a:hover {
 	background: none;
 	border-color: #ccc;
+	-webkit-box-shadow: inset 0 0 12px 0 #eaeaea;
+	-moz-box-shadow: inset 0 0 12px 0 #eaeaea;
 	box-shadow: inset 0 0 12px 0 #eaeaea;
 }
 
@@ -4296,6 +4463,8 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages {
 .buddypress #buddypress.bp-dir-hori-nav .create-button a:hover {
 	background: none;
 	border: 0;
+	-moz-box-shadow: none;
+	-webkit-box-shadow: none;
 	box-shadow: none;
 	margin: 0;
 }
@@ -4396,17 +4565,26 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages {
 .buddypress-wrap #group-create-body .bp-cover-image-status p.warning {
 	background: #0b80a4;
 	border: 0;
+	-webkit-box-shadow: 0 0 3px 0 rgba(0, 0, 0, 0.2);
+	-moz-box-shadow: 0 0 3px 0 rgba(0, 0, 0, 0.2);
 	box-shadow: 0 0 3px 0 rgba(0, 0, 0, 0.2);
 	color: #fff;
 }
 
 .buddypress-wrap .bp-feedback:not(.custom-homepage-info) {
+	display: -webkit-flex;
 	display: -moz-flex;
 	display: -ms-flex;
 	display: -o-flex;
 	display: flex;
+	-webkit-flex-flow: row nowrap;
+	-moz-flex-flow: row nowrap;
+	-ms-flex-flow: row nowrap;
 	-o-flex-flow: row nowrap;
 	flex-flow: row nowrap;
+	-ms-flex-align: stretch;
+	-webkit-align-items: stretch;
+	-webkit-box-align: stretch;
 	align-items: stretch;
 	align-items: center;
 }
@@ -4414,6 +4592,8 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages {
 .buddypress-wrap .bp-feedback {
 	background: #fff;
 	color: #807f7f;
+	-webkit-box-shadow: 0 1px 1px 1px rgba(0, 0, 0, 0.1);
+	-moz-box-shadow: 0 1px 1px 1px rgba(0, 0, 0, 0.1);
 	box-shadow: 0 1px 1px 1px rgba(0, 0, 0, 0.1);
 	color: #737373;
 	margin: 10px 0;
@@ -4492,7 +4672,13 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages {
 .buddypress-wrap .bp-feedback.loading .bp-icon,
 .buddypress-wrap .bp-feedback.success .bp-icon,
 .buddypress-wrap .bp-feedback.updated .bp-icon {
+	display: -webkit-box;
+	display: -ms-flexbox;
+	display: -webkit-flex;
 	display: flex;
+	-ms-flex-align: center;
+	-webkit-align-items: center;
+	-webkit-box-align: center;
 	align-items: center;
 	align-self: stretch;
 }
@@ -4615,6 +4801,8 @@ body.create-blog #buddypress .error,
 body.create-blog #buddypress .success {
 	background: #fff;
 	color: #807f7f;
+	-webkit-box-shadow: 0 1px 1px 1px rgba(0, 0, 0, 0.1);
+	-moz-box-shadow: 0 1px 1px 1px rgba(0, 0, 0, 0.1);
 	box-shadow: 0 1px 1px 1px rgba(0, 0, 0, 0.1);
 	color: #737373;
 	padding: 10px 15px;
@@ -4734,10 +4922,14 @@ body.create-blog #buddypress .success {
 }
 
 .buddypress.widget .avatar-block {
+	display: -webkit-flex;
 	display: -moz-flex;
 	display: -ms-flex;
 	display: -o-flex;
 	display: flex;
+	-webkit-flex-flow: row wrap;
+	-moz-flex-flow: row wrap;
+	-ms-flex-flow: row wrap;
 	-o-flex-flow: row wrap;
 	flex-flow: row wrap;
 }
@@ -4784,10 +4976,14 @@ body.create-blog #buddypress .success {
 .buddypress-wrap .buddypress.widget ul#friends-list,
 .buddypress-wrap .buddypress.widget ul#groups-list,
 .buddypress-wrap .buddypress.widget ul#members-list {
+	display: -webkit-flex;
 	display: -moz-flex;
 	display: -ms-flex;
 	display: -o-flex;
 	display: flex;
+	-webkit-flex-flow: column nowrap;
+	-moz-flex-flow: column nowrap;
+	-ms-flex-flow: column nowrap;
 	-o-flex-flow: column nowrap;
 	flex-flow: column nowrap;
 }
@@ -4796,10 +4992,14 @@ body.create-blog #buddypress .success {
 	.buddypress-wrap .buddypress.widget ul#friends-list,
 	.buddypress-wrap .buddypress.widget ul#groups-list,
 	.buddypress-wrap .buddypress.widget ul#members-list {
+		display: -webkit-flex;
 		display: -moz-flex;
 		display: -ms-flex;
 		display: -o-flex;
 		display: flex;
+		-webkit-flex-flow: row wrap;
+		-moz-flex-flow: row wrap;
+		-ms-flex-flow: row wrap;
 		-o-flex-flow: row wrap;
 		flex-flow: row wrap;
 	}
@@ -4809,8 +5009,13 @@ body.create-blog #buddypress .success {
 .buddypress-wrap .buddypress.widget ul#groups-list li,
 .buddypress-wrap .buddypress.widget ul#members-list li {
 	border: 1px solid #eee;
+	-ms-flex-align: stretch;
+	-webkit-align-items: stretch;
+	-webkit-box-align: stretch;
 	align-items: stretch;
+	-webkit-flex: 1 1 46%;
 	-moz-flex: 1 1 46%;
+	-ms-flex: 1 1 46%;
 	-o-flex: 1 1 46%;
 	flex: 1 1 46%;
 	margin: 2%;
@@ -4820,7 +5025,9 @@ body.create-blog #buddypress .success {
 	.buddypress-wrap .buddypress.widget ul#friends-list li,
 	.buddypress-wrap .buddypress.widget ul#groups-list li,
 	.buddypress-wrap .buddypress.widget ul#members-list li {
+		-webkit-flex: 0 1 20%;
 		-moz-flex: 0 1 20%;
+		-ms-flex: 0 1 20%;
 		-o-flex: 0 1 20%;
 		flex: 0 1 20%;
 	}
@@ -4856,7 +5063,9 @@ body.create-blog #buddypress .success {
 	.buddypress-wrap .buddypress.widget ul#friends-list li,
 	.buddypress-wrap .buddypress.widget ul#groups-list li,
 	.buddypress-wrap .buddypress.widget ul#members-list li {
+		-webkit-flex: 0 1 auto;
 		-moz-flex: 0 1 auto;
+		-ms-flex: 0 1 auto;
 		-o-flex: 0 1 auto;
 		flex: 0 1 auto;
 		margin: 10px 2% 1%;
@@ -4884,17 +5093,47 @@ body.create-blog #buddypress .success {
 
 .buddypress-wrap a.loading,
 .buddypress-wrap input.loading {
+	-moz-animation: loader-pulsate 0.5s infinite ease-in-out alternate;
+	-webkit-animation: loader-pulsate 0.5s infinite ease-in-out alternate;
 	animation: loader-pulsate 0.5s infinite ease-in-out alternate;
 	border-color: #aaa;
 }
 
+@-webkit-keyframes loader-pulsate {
+	from {
+		border-color: #aaa;
+		-webkit-box-shadow: 0 0 6px #ccc;
+		box-shadow: 0 0 6px #ccc;
+	}
+	to {
+		border-color: #ccc;
+		-webkit-box-shadow: 0 0 6px #f8f8f8;
+		box-shadow: 0 0 6px #f8f8f8;
+	}
+}
+
+@-moz-keyframes loader-pulsate {
+	from {
+		border-color: #aaa;
+		-moz-box-shadow: 0 0 6px #ccc;
+		box-shadow: 0 0 6px #ccc;
+	}
+	to {
+		border-color: #ccc;
+		-moz-box-shadow: 0 0 6px #f8f8f8;
+		box-shadow: 0 0 6px #f8f8f8;
+	}
+}
+
 @keyframes loader-pulsate {
 	from {
 		border-color: #aaa;
+		-moz-box-shadow: 0 0 6px #ccc;
 		box-shadow: 0 0 6px #ccc;
 	}
 	to {
 		border-color: #ccc;
+		-moz-box-shadow: 0 0 6px #f8f8f8;
 		box-shadow: 0 0 6px #f8f8f8;
 	}
 }
@@ -4913,6 +5152,8 @@ body.create-blog #buddypress .success {
 	display: none;
 	opacity: 0;
 	position: absolute;
+	-webkit-transform: translate3d(0, 0, 0);
+	-ms-transform: translate3d(0, 0, 0);
 	transform: translate3d(0, 0, 0);
 	visibility: hidden;
 }
@@ -4933,6 +5174,8 @@ body.create-blog #buddypress .success {
 	pointer-events: none;
 	text-shadow: none;
 	text-transform: none;
+	-webkit-transition: all 1.5s ease;
+	-ms-transition: all 1.5s ease;
 	transition: all 1.5s ease;
 	white-space: nowrap;
 	word-wrap: break-word;
@@ -4956,11 +5199,15 @@ body.create-blog #buddypress .success {
 	right: 50%;
 	margin-top: 7px;
 	top: 110%;
+	-webkit-transform: translate(50%, 0);
+	-ms-transform: translate(50%, 0);
 	transform: translate(50%, 0);
 }
 
 .user-list .bp-tooltip:after {
 	right: 0;
+	-webkit-transform: translate(0, 0);
+	-ms-transform: translate(0, 0);
 	transform: translate(0, 0);
 }
 
@@ -4968,6 +5215,8 @@ body.create-blog #buddypress .success {
 	.user-list .bp-tooltip:after {
 		right: auto;
 		left: 0;
+		-webkit-transform: translate(0, 0);
+		-ms-transform: translate(0, 0);
 		transform: translate(0, 0);
 	}
 }
@@ -4978,6 +5227,8 @@ body.create-blog #buddypress .success {
 .notification-actions .bp-tooltip:after,
 .participants-list .bp-tooltip:after {
 	right: 0;
+	-webkit-transform: translate(0, 0);
+	-ms-transform: translate(0, 0);
 	transform: translate(0, 0);
 }
 
@@ -4986,6 +5237,8 @@ body.create-blog #buddypress .success {
 .single-message-thread-header .actions .bp-tooltip:after {
 	right: auto;
 	left: 0;
+	-webkit-transform: translate(0, 0);
+	-ms-transform: translate(0, 0);
 	transform: translate(0, 0);
 }
 
@@ -5001,11 +5254,15 @@ body.create-blog #buddypress .success {
 */
 #item-body,
 .single-screen-navs {
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
 	box-sizing: border-box;
 }
 
 .grid > li,
 .grid > li .generic-button a {
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
 	box-sizing: border-box;
 }
 
diff --git src/bp-templates/bp-nouveau/css/buddypress.css src/bp-templates/bp-nouveau/css/buddypress.css
index 526ff907e..62f87b542 100644
--- src/bp-templates/bp-nouveau/css/buddypress.css
+++ src/bp-templates/bp-nouveau/css/buddypress.css
@@ -69,6 +69,9 @@ body #buddypress select,
 body #buddypress input[type="search"],
 body #buddypress input[type="submit"],
 body #buddypress input[type="reset"] {
+	-webkit-border-radius: 2px;
+	-moz-border-radius: 2px;
+	-ms-border-radius: 2px;
 	border-radius: 2px;
 	background-clip: padding-box;
 }
@@ -79,6 +82,8 @@ body #buddypress .bp-lists blockquote {
 }
 
 body #buddypress .bp-list .action {
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
 	box-sizing: border-box;
 }
 
@@ -375,6 +380,8 @@ body.buddypress article.page > .entry-header:not(.alignwide):not(.alignfull) .en
 	.buddypress-wrap.bp-dir-hori-nav:not(.bp-vertical-navs) nav:not(.tabbed-links) {
 		border-bottom: 1px solid #eee;
 		border-top: 1px solid #eee;
+		-webkit-box-shadow: 0 2px 12px 0 #fafafa;
+		-moz-box-shadow: 0 2px 12px 0 #fafafa;
 		box-shadow: 0 2px 12px 0 #fafafa;
 	}
 }
@@ -868,6 +875,8 @@ body.buddypress article.page > .entry-header:not(.alignwide):not(.alignfull) .en
 }
 
 .bp-list {
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
 	box-sizing: border-box;
 	border-top: 1px solid #eaeaea;
 	clear: both;
@@ -1018,6 +1027,8 @@ body.buddypress article.page > .entry-header:not(.alignwide):not(.alignfull) .en
 .activity-list.bp-list .activity-item {
 	background: #fff;
 	border: 1px solid #b7b7b7;
+	-webkit-box-shadow: 0 0 6px #d2d2d2;
+	-moz-box-shadow: 0 0 6px #d2d2d2;
 	box-shadow: 0 0 6px #d2d2d2;
 	margin: 20px 0;
 }
@@ -1038,16 +1049,22 @@ body.buddypress article.page > .entry-header:not(.alignwide):not(.alignfull) .en
 @media screen and (min-width: 46.8em) {
 	.friends-request-list li,
 	.membership-requests-list li {
+		display: -webkit-flex;
 		display: -moz-flex;
 		display: -ms-flex;
 		display: -o-flex;
 		display: flex;
+		-webkit-flex-flow: row nowrap;
+		-moz-flex-flow: row nowrap;
+		-ms-flex-flow: row nowrap;
 		-o-flex-flow: row nowrap;
 		flex-flow: row nowrap;
 	}
 	.friends-request-list li .item,
 	.membership-requests-list li .item {
+		-webkit-flex: 1 1 auto;
 		-moz-flex: 1 1 auto;
+		-ms-flex: 1 1 auto;
 		-o-flex: 1 1 auto;
 		flex: 1 1 auto;
 	}
@@ -1103,6 +1120,8 @@ body.buddypress article.page > .entry-header:not(.alignwide):not(.alignfull) .en
 
 .activity-update-form {
 	border: 1px solid #ccc;
+	-webkit-box-shadow: inset 0 0 6px #eee;
+	-moz-box-shadow: inset 0 0 6px #eee;
 	box-shadow: inset 0 0 6px #eee;
 	margin: 15px 0;
 }
@@ -1125,6 +1144,8 @@ body.buddypress article.page > .entry-header:not(.alignwide):not(.alignfull) .en
 
 .activity-update-form #whats-new-textarea textarea {
 	background: #fff;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
 	box-sizing: border-box;
 	color: #333;
 	font-family: inherit;
@@ -1136,6 +1157,8 @@ body.buddypress article.page > .entry-header:not(.alignwide):not(.alignfull) .en
 }
 
 .activity-update-form #whats-new-textarea textarea:focus {
+	-webkit-box-shadow: 0 0 6px 0 #d6d6d6;
+	-moz-box-shadow: 0 0 6px 0 #d6d6d6;
 	box-shadow: 0 0 6px 0 #d6d6d6;
 }
 
@@ -1164,7 +1187,13 @@ body.buddypress article.page > .entry-header:not(.alignwide):not(.alignfull) .en
 }
 
 .activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object {
+	display: -webkit-box;
+	display: -ms-flexbox;
+	display: -webkit-flex;
 	display: flex;
+	-ms-flex-align: center;
+	-webkit-align-items: center;
+	-webkit-box-align: center;
 	align-items: center;
 	padding: 0.2em;
 }
@@ -1512,6 +1541,8 @@ body.buddypress article.page > .entry-header:not(.alignwide):not(.alignfull) .en
 .buddypress-wrap .activity-list .load-newest:focus,
 .buddypress-wrap .activity-list .load-newest:hover {
 	border-color: #e1e1e1;
+	-webkit-box-shadow: 0 0 6px 0 #eaeaea;
+	-moz-box-shadow: 0 0 6px 0 #eaeaea;
 	box-shadow: 0 0 6px 0 #eaeaea;
 }
 
@@ -1577,6 +1608,7 @@ body.activity-permalink .activity-list .activity-comments {
 		top: -20px;
 	}
 	body.activity-permalink .activity-list .activity-avatar img {
+		-webkit-box-shadow: 0 0 0 8px #fff;
 		box-shadow: 0 0 0 8px #fff;
 	}
 	body.activity-permalink .activity-list .activity-content {
@@ -1587,6 +1619,79 @@ body.activity-permalink .activity-list .activity-comments {
 	}
 }
 
+.bp-member-preview-cover,
+.bp-group-preview-cover {
+	position: relative;
+	min-height: 150px;
+	background: #c5c5c5;
+}
+
+.bp-member-preview-cover img,
+.bp-group-preview-cover img {
+	background: #c5c5c5;
+	object-fit: cover;
+	border: 0;
+	display: block;
+	margin: 0;
+	padding: 0;
+	width: 100%;
+	z-index: 1;
+	height: 150px;
+}
+
+.bp-member-avatar-content,
+.bp-group-avatar-content {
+	float: left;
+	width: 200px;
+	margin-top: -75px;
+	position: relative;
+	z-index: 2;
+}
+
+.bp-member-avatar-content img.profile-photo,
+.bp-member-avatar-content img.group-photo,
+.bp-group-avatar-content img.profile-photo,
+.bp-group-avatar-content img.group-photo {
+	border: solid 2px #fff;
+	background: rgba(255, 255, 255, 0.8);
+	margin-left: 20px;
+}
+
+.bp-member-short-description-title a,
+.bp-group-short-description-title a {
+	font-weight: 600;
+}
+
+@media screen and (max-width: 46.8em) {
+	.bp-member-short-description,
+	.bp-group-short-description {
+		text-align: center;
+	}
+	.bp-member-avatar-content,
+	.bp-group-avatar-content {
+		float: none;
+		width: 100%;
+		margin-left: auto;
+		margin-right: auto;
+		margin-bottom: 15px;
+	}
+	.bp-member-avatar-content img.profile-photo,
+	.bp-member-avatar-content img.group-photo,
+	.bp-group-avatar-content img.profile-photo,
+	.bp-group-avatar-content img.group-photo {
+		margin: auto;
+	}
+	.bp-profile-button {
+		margin-top: 15px;
+	}
+}
+
+@media screen and (min-width: 46.8em) {
+	.bp-profile-button {
+		text-align: right;
+	}
+}
+
 /**
 *-----------------------------------------------------
 * @section 3.1.3 - Activity Comments
@@ -1757,6 +1862,8 @@ form.ac-form .ac-reply-content .ac-textarea textarea {
 }
 
 form.ac-form .ac-reply-content .ac-textarea textarea:focus {
+	-webkit-box-shadow: 0 0 6px #d6d6d6;
+	-moz-box-shadow: 0 0 6px #d6d6d6;
 	box-shadow: 0 0 6px #d6d6d6;
 }
 
@@ -1820,6 +1927,9 @@ form.ac-form .ac-reply-content input {
 
 .buddypress-wrap .groups-list li .group-desc {
 	border: 1px solid #eaeaea;
+	-webkit-border-radius: 10px;
+	-moz-border-radius: 10px;
+	-ms-border-radius: 10px;
 	border-radius: 10px;
 	background-clip: padding-box;
 	font-size: 13px;
@@ -1895,6 +2005,9 @@ form.ac-form .ac-reply-content input {
 
 .buddypress-wrap .members-list li .user-update {
 	border: 1px solid #eaeaea;
+	-webkit-border-radius: 10px;
+	-moz-border-radius: 10px;
+	-ms-border-radius: 10px;
 	border-radius: 10px;
 	background-clip: padding-box;
 	color: #737373;
@@ -1944,6 +2057,8 @@ form.ac-form .ac-reply-content input {
 *-------------------------------------------------------------------------------
 */
 .register-page .register-section {
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
 	box-sizing: border-box;
 }
 
@@ -2353,6 +2468,8 @@ body.no-js .single-item-header .js-self-profile-button {
 }
 
 .groups-header .moderators-lists img.avatar {
+	-moz-box-shadow: none;
+	-webkit-box-shadow: none;
 	box-shadow: none;
 	float: none;
 	height: 30px;
@@ -2390,6 +2507,8 @@ body.no-js .single-item-header .js-self-profile-button {
 
 .groups-header .desc-wrap .group-description {
 	background: #fafafa;
+	-webkit-box-shadow: inset 0 0 9px #ccc;
+	-moz-box-shadow: inset 0 0 9px #ccc;
 	box-shadow: inset 0 0 9px #ccc;
 	padding: 1em;
 	text-align: left;
@@ -2668,6 +2787,8 @@ body.buddypress.bp-user .buddypress-wrap .member-header-actions * > * {
 }
 
 .buddypress .bp-invites-content ul.item-list li.selected {
+	-webkit-box-shadow: inset 0 0 12px 0 rgba(237, 187, 52, 0.2);
+	-moz-box-shadow: inset 0 0 12px 0 rgba(237, 187, 52, 0.2);
 	box-shadow: inset 0 0 12px 0 rgba(237, 187, 52, 0.2);
 }
 
@@ -2739,6 +2860,8 @@ body.buddypress.bp-user .buddypress-wrap .member-header-actions * > * {
 
 @media screen and (min-width: 46.8em) {
 	.buddypress .bp-invites-content ul.item-list > li {
+		-webkit-box-sizing: border-box;
+		-moz-box-sizing: border-box;
 		box-sizing: border-box;
 		border: 1px solid #eaeaea;
 		float: left;
@@ -2760,7 +2883,9 @@ body.buddypress.bp-user .buddypress-wrap .member-header-actions * > * {
 
 @media screen and (min-width: 46.8em) {
 	:not(.vertical) + .item-body #group-invites-container {
+		display: -ms-grid;
 		display: grid;
+		-ms-grid-columns: 25% auto;
 		grid-template-columns: 25% auto;
 		grid-template-areas: "group-invites-nav group-invites-column";
 	}
@@ -3019,6 +3144,8 @@ body.register .buddypress-wrap .page ul {
 }
 
 .bp-messages-content .avatar {
+	-moz-box-shadow: none;
+	-webkit-box-shadow: none;
 	box-shadow: none;
 }
 
@@ -3049,10 +3176,14 @@ body.register .buddypress-wrap .page ul {
 
 #message-threads li {
 	border-bottom: 1px solid #eaeaea;
+	display: -webkit-flex;
 	display: -moz-flex;
 	display: -ms-flex;
 	display: -o-flex;
 	display: flex;
+	-webkit-flex-flow: row nowrap;
+	-moz-flex-flow: row nowrap;
+	-ms-flex-flow: row nowrap;
 	-o-flex-flow: row nowrap;
 	flex-flow: row nowrap;
 	margin: 0;
@@ -3061,16 +3192,26 @@ body.register .buddypress-wrap .page ul {
 }
 
 #message-threads li .thread-cb {
+	display: -webkit-box;
+	display: -ms-flexbox;
+	display: -webkit-flex;
 	display: flex;
+	-ms-flex-align: center;
+	-webkit-align-items: center;
+	-webkit-box-align: center;
 	align-items: center;
+	-webkit-flex: 1 2 5%;
 	-moz-flex: 1 2 5%;
+	-ms-flex: 1 2 5%;
 	-o-flex: 1 2 5%;
 	flex: 1 2 5%;
 }
 
 #message-threads li .thread-from,
 #message-threads li .thread-to {
+	-webkit-flex: 1 2 20%;
 	-moz-flex: 1 2 20%;
+	-ms-flex: 1 2 20%;
 	-o-flex: 1 2 20%;
 	flex: 1 2 20%;
 }
@@ -3096,13 +3237,17 @@ body.register .buddypress-wrap .page ul {
 }
 
 #message-threads li .thread-content {
+	-webkit-flex: 1 2 60%;
 	-moz-flex: 1 2 60%;
+	-ms-flex: 1 2 60%;
 	-o-flex: 1 2 60%;
 	flex: 1 2 60%;
 }
 
 #message-threads li .thread-date {
+	-webkit-flex: 1 2 15%;
 	-moz-flex: 1 2 15%;
+	-ms-flex: 1 2 15%;
 	-o-flex: 1 2 15%;
 	flex: 1 2 15%;
 }
@@ -3204,6 +3349,8 @@ body.register .buddypress-wrap .page ul {
 
 .bp-messages-content #bp-message-thread-list .message-metadata {
 	border-bottom: 1px solid #ccc;
+	-webkit-box-shadow: -2px 1px 9px 0 #eee;
+	-moz-box-shadow: -2px 1px 9px 0 #eee;
 	box-shadow: -2px 1px 9px 0 #eee;
 	display: table;
 	padding: 0.2em;
@@ -3447,6 +3594,8 @@ body.buddypress.settings.data #buddypress.buddypress-wrap .item-body p a {
 .buddypress-wrap input[type="url"]:focus,
 .buddypress-wrap input[type="tel"]:focus,
 .buddypress-wrap input[type="password"]:focus {
+	-webkit-box-shadow: 0 0 8px #eaeaea;
+	-moz-box-shadow: 0 0 8px #eaeaea;
 	box-shadow: 0 0 8px #eaeaea;
 }
 
@@ -3686,6 +3835,7 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages {
 }
 
 .buddypress-wrap .select-wrap select {
+	-moz-appearance: none;
 	-webkit-appearance: none;
 	-o-appearance: none;
 	appearance: none;
@@ -3780,6 +3930,9 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages {
 .buddypress-wrap form#group-members-search button[type="submit"] {
 	background: none;
 	border: 0;
+	-webkit-border-radius: 0;
+	-moz-border-radius: 0;
+	-ms-border-radius: 0;
 	border-radius: 0;
 	background-clip: padding-box;
 }
@@ -4056,7 +4209,12 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages {
 }
 
 .center-vert {
+	display: -ms-flexbox;
+	display: -webkit-flex;
 	display: flex;
+	-ms-flex-align: center;
+	-webkit-align-items: center;
+	-webkit-box-align: center;
 	align-items: center;
 }
 
@@ -4170,6 +4328,8 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages {
 .buddypress .buddypress-wrap input.text-button {
 	background: none;
 	border: 0;
+	-moz-box-shadow: none;
+	-webkit-box-shadow: none;
 	box-shadow: none;
 	color: #767676;
 }
@@ -4265,8 +4425,13 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages {
 
 .buddypress #buddypress .create-button a {
 	border: 1px solid #ccc;
+	-webkit-border-radius: 5px;
+	-moz-border-radius: 5px;
+	-ms-border-radius: 5px;
 	border-radius: 5px;
 	background-clip: padding-box;
+	-webkit-box-shadow: inset 0 0 6px 0 #eaeaea;
+	-moz-box-shadow: inset 0 0 6px 0 #eaeaea;
 	box-shadow: inset 0 0 6px 0 #eaeaea;
 	margin: 0.2em 0;
 	width: auto;
@@ -4275,6 +4440,8 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages {
 .buddypress #buddypress .create-button a:focus, .buddypress #buddypress .create-button a:hover {
 	background: none;
 	border-color: #ccc;
+	-webkit-box-shadow: inset 0 0 12px 0 #eaeaea;
+	-moz-box-shadow: inset 0 0 12px 0 #eaeaea;
 	box-shadow: inset 0 0 12px 0 #eaeaea;
 }
 
@@ -4296,6 +4463,8 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages {
 .buddypress #buddypress.bp-dir-hori-nav .create-button a:hover {
 	background: none;
 	border: 0;
+	-moz-box-shadow: none;
+	-webkit-box-shadow: none;
 	box-shadow: none;
 	margin: 0;
 }
@@ -4396,17 +4565,26 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages {
 .buddypress-wrap #group-create-body .bp-cover-image-status p.warning {
 	background: #0b80a4;
 	border: 0;
+	-webkit-box-shadow: 0 0 3px 0 rgba(0, 0, 0, 0.2);
+	-moz-box-shadow: 0 0 3px 0 rgba(0, 0, 0, 0.2);
 	box-shadow: 0 0 3px 0 rgba(0, 0, 0, 0.2);
 	color: #fff;
 }
 
 .buddypress-wrap .bp-feedback:not(.custom-homepage-info) {
+	display: -webkit-flex;
 	display: -moz-flex;
 	display: -ms-flex;
 	display: -o-flex;
 	display: flex;
+	-webkit-flex-flow: row nowrap;
+	-moz-flex-flow: row nowrap;
+	-ms-flex-flow: row nowrap;
 	-o-flex-flow: row nowrap;
 	flex-flow: row nowrap;
+	-ms-flex-align: stretch;
+	-webkit-align-items: stretch;
+	-webkit-box-align: stretch;
 	align-items: stretch;
 	align-items: center;
 }
@@ -4414,6 +4592,8 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages {
 .buddypress-wrap .bp-feedback {
 	background: #fff;
 	color: #807f7f;
+	-webkit-box-shadow: 0 1px 1px 1px rgba(0, 0, 0, 0.1);
+	-moz-box-shadow: 0 1px 1px 1px rgba(0, 0, 0, 0.1);
 	box-shadow: 0 1px 1px 1px rgba(0, 0, 0, 0.1);
 	color: #737373;
 	margin: 10px 0;
@@ -4492,7 +4672,13 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages {
 .buddypress-wrap .bp-feedback.loading .bp-icon,
 .buddypress-wrap .bp-feedback.success .bp-icon,
 .buddypress-wrap .bp-feedback.updated .bp-icon {
+	display: -webkit-box;
+	display: -ms-flexbox;
+	display: -webkit-flex;
 	display: flex;
+	-ms-flex-align: center;
+	-webkit-align-items: center;
+	-webkit-box-align: center;
 	align-items: center;
 	align-self: stretch;
 }
@@ -4615,6 +4801,8 @@ body.create-blog #buddypress .error,
 body.create-blog #buddypress .success {
 	background: #fff;
 	color: #807f7f;
+	-webkit-box-shadow: 0 1px 1px 1px rgba(0, 0, 0, 0.1);
+	-moz-box-shadow: 0 1px 1px 1px rgba(0, 0, 0, 0.1);
 	box-shadow: 0 1px 1px 1px rgba(0, 0, 0, 0.1);
 	color: #737373;
 	padding: 10px 15px;
@@ -4734,10 +4922,14 @@ body.create-blog #buddypress .success {
 }
 
 .buddypress.widget .avatar-block {
+	display: -webkit-flex;
 	display: -moz-flex;
 	display: -ms-flex;
 	display: -o-flex;
 	display: flex;
+	-webkit-flex-flow: row wrap;
+	-moz-flex-flow: row wrap;
+	-ms-flex-flow: row wrap;
 	-o-flex-flow: row wrap;
 	flex-flow: row wrap;
 }
@@ -4784,10 +4976,14 @@ body.create-blog #buddypress .success {
 .buddypress-wrap .buddypress.widget ul#friends-list,
 .buddypress-wrap .buddypress.widget ul#groups-list,
 .buddypress-wrap .buddypress.widget ul#members-list {
+	display: -webkit-flex;
 	display: -moz-flex;
 	display: -ms-flex;
 	display: -o-flex;
 	display: flex;
+	-webkit-flex-flow: column nowrap;
+	-moz-flex-flow: column nowrap;
+	-ms-flex-flow: column nowrap;
 	-o-flex-flow: column nowrap;
 	flex-flow: column nowrap;
 }
@@ -4796,10 +4992,14 @@ body.create-blog #buddypress .success {
 	.buddypress-wrap .buddypress.widget ul#friends-list,
 	.buddypress-wrap .buddypress.widget ul#groups-list,
 	.buddypress-wrap .buddypress.widget ul#members-list {
+		display: -webkit-flex;
 		display: -moz-flex;
 		display: -ms-flex;
 		display: -o-flex;
 		display: flex;
+		-webkit-flex-flow: row wrap;
+		-moz-flex-flow: row wrap;
+		-ms-flex-flow: row wrap;
 		-o-flex-flow: row wrap;
 		flex-flow: row wrap;
 	}
@@ -4809,8 +5009,13 @@ body.create-blog #buddypress .success {
 .buddypress-wrap .buddypress.widget ul#groups-list li,
 .buddypress-wrap .buddypress.widget ul#members-list li {
 	border: 1px solid #eee;
+	-ms-flex-align: stretch;
+	-webkit-align-items: stretch;
+	-webkit-box-align: stretch;
 	align-items: stretch;
+	-webkit-flex: 1 1 46%;
 	-moz-flex: 1 1 46%;
+	-ms-flex: 1 1 46%;
 	-o-flex: 1 1 46%;
 	flex: 1 1 46%;
 	margin: 2%;
@@ -4820,7 +5025,9 @@ body.create-blog #buddypress .success {
 	.buddypress-wrap .buddypress.widget ul#friends-list li,
 	.buddypress-wrap .buddypress.widget ul#groups-list li,
 	.buddypress-wrap .buddypress.widget ul#members-list li {
+		-webkit-flex: 0 1 20%;
 		-moz-flex: 0 1 20%;
+		-ms-flex: 0 1 20%;
 		-o-flex: 0 1 20%;
 		flex: 0 1 20%;
 	}
@@ -4856,7 +5063,9 @@ body.create-blog #buddypress .success {
 	.buddypress-wrap .buddypress.widget ul#friends-list li,
 	.buddypress-wrap .buddypress.widget ul#groups-list li,
 	.buddypress-wrap .buddypress.widget ul#members-list li {
+		-webkit-flex: 0 1 auto;
 		-moz-flex: 0 1 auto;
+		-ms-flex: 0 1 auto;
 		-o-flex: 0 1 auto;
 		flex: 0 1 auto;
 		margin: 10px 2% 1%;
@@ -4884,17 +5093,47 @@ body.create-blog #buddypress .success {
 
 .buddypress-wrap a.loading,
 .buddypress-wrap input.loading {
+	-moz-animation: loader-pulsate 0.5s infinite ease-in-out alternate;
+	-webkit-animation: loader-pulsate 0.5s infinite ease-in-out alternate;
 	animation: loader-pulsate 0.5s infinite ease-in-out alternate;
 	border-color: #aaa;
 }
 
+@-webkit-keyframes loader-pulsate {
+	from {
+		border-color: #aaa;
+		-webkit-box-shadow: 0 0 6px #ccc;
+		box-shadow: 0 0 6px #ccc;
+	}
+	to {
+		border-color: #ccc;
+		-webkit-box-shadow: 0 0 6px #f8f8f8;
+		box-shadow: 0 0 6px #f8f8f8;
+	}
+}
+
+@-moz-keyframes loader-pulsate {
+	from {
+		border-color: #aaa;
+		-moz-box-shadow: 0 0 6px #ccc;
+		box-shadow: 0 0 6px #ccc;
+	}
+	to {
+		border-color: #ccc;
+		-moz-box-shadow: 0 0 6px #f8f8f8;
+		box-shadow: 0 0 6px #f8f8f8;
+	}
+}
+
 @keyframes loader-pulsate {
 	from {
 		border-color: #aaa;
+		-moz-box-shadow: 0 0 6px #ccc;
 		box-shadow: 0 0 6px #ccc;
 	}
 	to {
 		border-color: #ccc;
+		-moz-box-shadow: 0 0 6px #f8f8f8;
 		box-shadow: 0 0 6px #f8f8f8;
 	}
 }
@@ -4913,6 +5152,8 @@ body.create-blog #buddypress .success {
 	display: none;
 	opacity: 0;
 	position: absolute;
+	-webkit-transform: translate3d(0, 0, 0);
+	-ms-transform: translate3d(0, 0, 0);
 	transform: translate3d(0, 0, 0);
 	visibility: hidden;
 }
@@ -4933,6 +5174,8 @@ body.create-blog #buddypress .success {
 	pointer-events: none;
 	text-shadow: none;
 	text-transform: none;
+	-webkit-transition: all 1.5s ease;
+	-ms-transition: all 1.5s ease;
 	transition: all 1.5s ease;
 	white-space: nowrap;
 	word-wrap: break-word;
@@ -4956,11 +5199,15 @@ body.create-blog #buddypress .success {
 	left: 50%;
 	margin-top: 7px;
 	top: 110%;
+	-webkit-transform: translate(-50%, 0);
+	-ms-transform: translate(-50%, 0);
 	transform: translate(-50%, 0);
 }
 
 .user-list .bp-tooltip:after {
 	left: 0;
+	-webkit-transform: translate(0, 0);
+	-ms-transform: translate(0, 0);
 	transform: translate(0, 0);
 }
 
@@ -4968,6 +5215,8 @@ body.create-blog #buddypress .success {
 	.user-list .bp-tooltip:after {
 		left: auto;
 		right: 0;
+		-webkit-transform: translate(0, 0);
+		-ms-transform: translate(0, 0);
 		transform: translate(0, 0);
 	}
 }
@@ -4978,6 +5227,8 @@ body.create-blog #buddypress .success {
 .notification-actions .bp-tooltip:after,
 .participants-list .bp-tooltip:after {
 	left: 0;
+	-webkit-transform: translate(0, 0);
+	-ms-transform: translate(0, 0);
 	transform: translate(0, 0);
 }
 
@@ -4986,6 +5237,8 @@ body.create-blog #buddypress .success {
 .single-message-thread-header .actions .bp-tooltip:after {
 	left: auto;
 	right: 0;
+	-webkit-transform: translate(0, 0);
+	-ms-transform: translate(0, 0);
 	transform: translate(0, 0);
 }
 
@@ -5001,11 +5254,15 @@ body.create-blog #buddypress .success {
 */
 #item-body,
 .single-screen-navs {
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
 	box-sizing: border-box;
 }
 
 .grid > li,
 .grid > li .generic-button a {
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
 	box-sizing: border-box;
 }
 
diff --git src/bp-templates/bp-nouveau/css/embeds-activity-rtl.css src/bp-templates/bp-nouveau/css/embeds-activity-rtl.css
index a548db7d4..17073f077 100644
--- src/bp-templates/bp-nouveau/css/embeds-activity-rtl.css
+++ src/bp-templates/bp-nouveau/css/embeds-activity-rtl.css
@@ -156,3 +156,83 @@ a.play-btn:hover {
 		width: 35px;
 	}
 }
+
+/**
+*-------------------------------------------------------------------------------
+* Activity Types
+*-------------------------------------------------------------------------------
+*/
+.bp-member-preview-cover,
+.bp-group-preview-cover {
+	position: relative;
+	min-height: 150px;
+	background: #c5c5c5;
+}
+
+.bp-member-activity-preview a,
+.bp-group-activity-preview a {
+    display: block;
+    max-width: 100%;
+}
+
+.bp-member-preview-cover img,
+.bp-group-preview-cover img {
+	background: #c5c5c5;
+	object-fit: cover;
+	border: 0;
+	display: block;
+	margin: 0;
+	padding: 0;
+	width: 100%;
+	z-index: 1;
+	height: 150px;
+}
+
+.bp-member-avatar-content,
+.bp-group-avatar-content {
+    float: right;
+	width: 200px;
+	margin-top: -75px;
+	position: relative;
+	z-index: 2;
+}
+
+.bp-member-avatar-content img.profile-photo,
+.bp-group-avatar-content img.group-photo {
+	border: solid 2px #fff;
+	background: rgba(255, 255, 255, 0.8);
+	margin-right: 20px;
+}
+
+.bp-member-short-description-title a,
+.bp-group-short-description-title a {
+	font-weight: 600;
+}
+
+@media screen and (max-width: 46.8em) {
+	.bp-member-short-description,
+	.bp-group-short-description {
+		text-align: center;
+	}
+	.bp-member-avatar-content,
+	.bp-group-avatar-content {
+        float: none;
+		width: 100%;
+        margin-right: auto;
+		margin-left: auto;
+		margin-bottom: 15px;
+	}
+	.bp-member-avatar-content img.profile-photo,
+	.bp-group-avatar-content img.group-photo {
+		margin: auto;
+	}
+	.bp-profile-button {
+		margin-top: 15px;
+	}
+}
+
+@media screen and (min-width: 46.8em) {
+	.bp-profile-button {
+		text-align: left;
+	}
+}
diff --git src/bp-templates/bp-nouveau/css/embeds-activity.css src/bp-templates/bp-nouveau/css/embeds-activity.css
index dafc770be..3e79a0d4f 100644
--- src/bp-templates/bp-nouveau/css/embeds-activity.css
+++ src/bp-templates/bp-nouveau/css/embeds-activity.css
@@ -156,3 +156,83 @@ a.play-btn:hover {
 		width: 35px;
 	}
 }
+
+/**
+*-------------------------------------------------------------------------------
+* Activity Types
+*-------------------------------------------------------------------------------
+*/
+.bp-member-preview-cover,
+.bp-group-preview-cover {
+	position: relative;
+	min-height: 150px;
+	background: #c5c5c5;
+}
+
+.bp-member-activity-preview a,
+.bp-group-activity-preview a {
+    display: block;
+    max-width: 100%;
+}
+
+.bp-member-preview-cover img,
+.bp-group-preview-cover img {
+	background: #c5c5c5;
+	object-fit: cover;
+	border: 0;
+	display: block;
+	margin: 0;
+	padding: 0;
+	width: 100%;
+	z-index: 1;
+	height: 150px;
+}
+
+.bp-member-avatar-content,
+.bp-group-avatar-content {
+    float: left;
+	width: 200px;
+	margin-top: -75px;
+	position: relative;
+	z-index: 2;
+}
+
+.bp-member-avatar-content img.profile-photo,
+.bp-group-avatar-content img.group-photo {
+	border: solid 2px #fff;
+	background: rgba(255, 255, 255, 0.8);
+	margin-left: 20px;
+}
+
+.bp-member-short-description-title a,
+.bp-group-short-description-title a {
+	font-weight: 600;
+}
+
+@media screen and (max-width: 46.8em) {
+	.bp-member-short-description,
+	.bp-group-short-description {
+		text-align: center;
+	}
+	.bp-member-avatar-content,
+	.bp-group-avatar-content {
+        float: none;
+		width: 100%;
+        margin-left: auto;
+		margin-right: auto;
+		margin-bottom: 15px;
+	}
+	.bp-member-avatar-content img.profile-photo,
+	.bp-group-avatar-content img.group-photo {
+		margin: auto;
+	}
+	.bp-profile-button {
+		margin-top: 15px;
+	}
+}
+
+@media screen and (min-width: 46.8em) {
+	.bp-profile-button {
+		text-align: right;
+	}
+}
diff --git tests/phpunit/testcases/core/class-bp-attachment.php tests/phpunit/testcases/core/class-bp-attachment.php
index fae4e150d..6bb1c308b 100644
--- tests/phpunit/testcases/core/class-bp-attachment.php
+++ tests/phpunit/testcases/core/class-bp-attachment.php
@@ -406,6 +406,84 @@ class BP_Tests_BP_Attachment_TestCases extends BP_UnitTestCase {
 		$this->clean_files( 'shrink' );
 	}
 
+	/**
+	 * @group add_revision
+	 */
+	public function test_bp_attachment_add_revision() {
+		if ( false === _wp_image_editor_choose() || version_compare( phpversion(), '7.0' , '<' ) ) {
+			$this->markTestSkipped( 'This test requires PHP >= 7.0 and to have a valid image editor that is compatible with WordPress.' );
+		}
+
+		$image = BP_TESTS_DIR . 'assets/upside-down.jpg';
+
+		$attachment = new BPTest_Attachment_Extension(
+			array(
+				'base_dir'   => 'add_revision',
+				'action'     => 'attachment_action',
+				'file_input' => 'attachment_file_input',
+			)
+		);
+
+		$abs_path_copy = $attachment->upload_path . '/upside-down.jpg';
+		copy( $image, $abs_path_copy );
+
+		$revision = $attachment->add_revision(
+			'media',
+			array(
+				'file_abspath' => $abs_path_copy,
+				'file_id'      => 'media',
+			)
+		);
+
+		$this->assertFalse( file_exists( $abs_path_copy ) );
+		$this->assertTrue( file_exists( $revision->path ) );
+
+		// Cleanup
+		@unlink( $revision->path );
+		@rmdir( dirname( $revision->path ) );
+		$this->clean_files( 'add_revision' );
+	}
+
+	/**
+	 * @group add_revision
+	 * @group avatars
+	 */
+	public function test_bp_attachment_add_avatar_history() {
+		if ( false === _wp_image_editor_choose() || version_compare( phpversion(), '7.0' , '<' ) ) {
+			$this->markTestSkipped( 'This test requires PHP >= 7.0 and to have a valid image editor that is compatible with WordPress.' );
+		}
+
+		$image = BP_TESTS_DIR . 'assets/upside-down.jpg';
+
+		$attachment = new BPTest_Attachment_Extension(
+			array(
+				'base_dir'   => 'add_history',
+				'action'     => 'attachment_action',
+				'file_input' => 'attachment_file_input',
+			)
+		);
+
+		$abs_path_copy = $attachment->upload_path . '/upside-down.jpg';
+		copy( $image, $abs_path_copy );
+
+		$revision = $attachment->add_revision(
+			'avatar',
+			array(
+				'file_abspath' => $abs_path_copy,
+				'file_id'      => 'avatar',
+			)
+		);
+
+		$this->assertFalse( file_exists( $abs_path_copy ) );
+		$this->assertTrue( file_exists( $revision->path ) );
+		$this->assertSame( $attachment->url . '/history/upside-down.jpg', $revision->url );
+
+		// Cleanup
+		@unlink( $revision->path );
+		@rmdir( dirname( $revision->path ) );
+		$this->clean_files( 'add_history' );
+	}
+
 	public function limit_to_50px( $max_width ) {
 		return 50;
 	}
