diff --git src/bp-activity/bp-activity-actions.php src/bp-activity/bp-activity-actions.php
index f8c5d52..6624213 100644
--- src/bp-activity/bp-activity-actions.php
+++ src/bp-activity/bp-activity-actions.php
@@ -600,7 +600,7 @@ add_action( 'bp_actions', 'bp_activity_action_mentions_feed' );
  * @return bool False on failure.
  */
 function bp_activity_action_favorites_feed() {
-	if ( ! bp_is_user_activity() || ! bp_is_current_action( 'favorites' ) || ! bp_is_action_variable( 'feed', 0 ) ) {
+	if ( ! bp_is_user_activity() || ! bp_is_current_action( bp_get_activity_favorite_slug() ) || ! bp_is_action_variable( 'feed', 0 ) ) {
 		return false;
 	}
 
@@ -615,7 +615,7 @@ function bp_activity_action_favorites_feed() {
 		/* translators: User activity favorites RSS title - "[Site Name] | [User Display Name] | Favorites" */
 		'title'         => sprintf( __( '%1$s | %2$s | Favorites', 'buddypress' ), bp_get_site_name(), bp_get_displayed_user_fullname() ),
 
-		'link'          => bp_displayed_user_domain() . bp_get_activity_slug() . '/favorites/',
+		'link'          => bp_displayed_user_domain() . bp_get_activity_slug() . '/' . bp_get_activity_favorite_slug() . '/',
 		'description'   => sprintf( __( "Activity feed of %s's favorites.", 'buddypress' ), bp_get_displayed_user_fullname() ),
 		'activity_args' => 'include=' . $fav_ids
 	) );
@@ -647,3 +647,68 @@ function bp_activity_setup_akismet() {
 	// Instantiate Akismet for BuddyPress
 	$bp->activity->akismet = new BP_Akismet();
 }
+
+/**
+ * Add globals for activity favorites / likes
+ *
+ * @since BuddyPress (2.1.0)
+ *
+ * @uses buddypress() to get main instance
+ */
+function bp_activity_favorites_globals() {
+	$bp = buddypress();
+
+	/**
+	 * First are we using favorites as likes ?
+	 * true if likes is enabled
+	 */
+	$bp->activity->favorites_as_likes = bp_is_activity_favorites_as_likes_active();
+
+	/**
+	 * Second, add some globals for names/slugs/strings
+	 * that can be customised using the activity_favorites_as_likes args filter.
+	 */
+	$bp->activity->favorite = new stdClass;
+
+	// Default
+	$favorite_args = array(
+		// Activity action args
+		'description'   => _x( 'Favorited an update', 'favorite activity description', 'buddypress' ),
+		'label'         => _x( 'Favorites', 'favorite activity dropdown label', 'buddypress' ),
+		'contexts'      => array(),
+		// Strings
+		'directory_tab' => _x( 'My Favorites', 'favorite directory tab', 'buddypress' ),
+		'fav_button'    => _x( 'Favorite', 'favorite button', 'buddypress' ),
+		'unfav_button'  => _x( 'Remove Favorite', 'unfavorite button', 'buddypress' ),
+		// Nav name
+		'subnav'        => _x( 'Favorites', 'favorite member subnav', 'buddypress' ),
+		// Slug
+		'slug'          => 'favorites'
+	);
+
+	// Like feature is chosen by admin 
+	if ( ! empty( $bp->activity->favorites_as_likes ) ) {
+		$favorite_args = bp_parse_args( 
+			array(
+				'description'   => _x( 'Liked an update', 'alternative favorite activity description', 'buddypress' ),
+				'label'         => _x( 'Likes', 'alternative favorite activity dropdown label', 'buddypress' ),
+				'contexts'      => array( 'activity', 'group', 'member', 'member_groups' ),
+				'directory_tab' => _x( 'My Likes', 'alternative favorite directory tab', 'buddypress' ),
+				'fav_button'    => _x( 'Like', 'alternative favorite button', 'buddypress' ),
+				'unfav_button'  => _x( 'Liked', 'alternative unfavorite button', 'buddypress' ),
+				// Nav name
+				'subnav'        => _x( 'Likes', 'alternative favorite member subnav', 'buddypress' ),
+				// Slug
+				'slug'          => 'likes'
+			),
+			$favorite_args,
+			'activity_favorites_as_likes'
+		);
+	}
+
+	// Set favorite globals
+	foreach ( $favorite_args as $key => $arg ) {
+		$bp->activity->favorite->{$key} = $arg;
+	}
+}
+add_action( 'bp_activity_setup_globals', 'bp_activity_favorites_globals' );
diff --git src/bp-activity/bp-activity-classes.php src/bp-activity/bp-activity-classes.php
index f1e6054..b32a229 100644
--- src/bp-activity/bp-activity-classes.php
+++ src/bp-activity/bp-activity-classes.php
@@ -324,6 +324,7 @@ class BP_Activity_Activity {
 
 		// Where conditions
 		$where_conditions = array();
+		$excluded_types = array();
 
 		// Spam
 		if ( 'ham_only' == $spam )
@@ -337,6 +338,32 @@ class BP_Activity_Activity {
 			$where_conditions['search_sql'] = "a.content LIKE '%%" . esc_sql( like_escape( $search_terms ) ) . "%%'";
 		}
 
+		// In activity administration & stream mode, display likes/favorites
+		if ( 'stream' !== $display_comments || empty( $bp->activity->favorites_as_likes ) ) {
+			// Exclude 'activity_favorite' items unless the 'action' filter has
+			// been explicitly set
+			if ( empty( $filter['action'] ) ) {
+				$excluded_types[] = 'activity_favorite';
+
+			// If explicitly set transform this as a specific meta query in case of likes
+			} else if ( 'activity_favorite' == $filter['action'] && ! empty( $bp->activity->favorites_as_likes ) ) {
+				$meta_query_args = array(
+						'key'     => 'activity_favorite',
+						'compare' => 'EXISTS'
+				);
+
+				if ( ! empty( $filter['user_id'] ) ) {
+					$meta_query_args['compare'] = '=';
+					$meta_query_args['value'] = absint( $filter['user_id'] );
+					unset( $filter['user_id'] );
+				}
+
+				$meta_query = array( $meta_query_args );
+
+				unset( $filter['action'] );
+			}
+		}
+
 		// Filtering
 		if ( $filter && $filter_sql = BP_Activity_Activity::get_filter_sql( $filter ) )
 			$where_conditions['filter_sql'] = $filter_sql;
@@ -376,13 +403,17 @@ class BP_Activity_Activity {
 		// comments in the stream like normal comments or threaded below
 		// the activity.
 		if ( false === $display_comments || 'threaded' === $display_comments ) {
-			$where_conditions[] = "a.type != 'activity_comment'";
+			$excluded_types[] = 'activity_comment';
 		}
 
 		// Exclude 'last_activity' items unless the 'action' filter has
 		// been explicitly set
 		if ( empty( $filter['object'] ) ) {
-			$where_conditions[] = "a.type != 'last_activity'";
+			$excluded_types[] = 'last_activity';
+		}
+
+		if ( ! empty( $excluded_types ) ) {
+			$where_conditions[] = "a.type NOT IN( '" . implode( "','", $excluded_types ) . "' )";
 		}
 
 		// Filter the where conditions
@@ -465,6 +496,9 @@ class BP_Activity_Activity {
 		// Generate action strings
 		$activities = BP_Activity_Activity::generate_action_strings( $activities );
 
+		// Append Favorites / likes
+		$activities = self::append_favorites( $activities );
+
 		// If $max is set, only return up to the max results
 		if ( !empty( $max ) ) {
 			if ( (int) $total_activities > (int) $max )
@@ -644,13 +678,36 @@ class BP_Activity_Activity {
 
 			// WP_Meta_Query expects the table name at
 			// $wpdb->activitymeta
-			$wpdb->activitymeta = buddypress()->activity->table_name_meta;
+			if( ! empty( $activity_meta_query->queries[0]['key'] ) && 'activity_favorite' == $activity_meta_query->queries[0]['key'] ) {
+				$wpdb->activitymeta = buddypress()->activity->table_name;
+			} else {
+				$wpdb->activitymeta = buddypress()->activity->table_name_meta;
+			}
 
 			$meta_sql = $activity_meta_query->get_sql( 'activity', 'a', 'id' );
 
 			// Strip the leading AND - BP handles it in get()
 			$sql_array['where'] = preg_replace( '/^\sAND/', '', $meta_sql['where'] );
 			$sql_array['join']  = $meta_sql['join'];
+
+			if ( buddypress()->activity->table_name == $wpdb->activitymeta ) {
+				$sql_array['join']  = str_replace( 'JOIN '. $wpdb->activitymeta, 'JOIN '. $wpdb->activitymeta . ' f', $sql_array['join'] );
+				$sql_array['join']  = str_replace( $wpdb->activitymeta .'.activity_id' , 'f.item_id', $sql_array['join'] );
+
+				if ( 'EXISTS' == strtoupper( $activity_meta_query->queries[0]['compare'] ) ) {
+					$sql_array['where'] = str_replace( $wpdb->activitymeta .'.meta_key', 'f.type', $sql_array['where'] );
+				} else {
+					$user_id = $activity_meta_query->queries[0]['value'];
+					preg_match( '/CAST\((.*)meta_value(.*)[' .$user_id. ']\'\)/', $sql_array['where'], $matches );
+					
+					if ( ! empty( $matches[1] ) ) {
+						$table = str_replace( $wpdb->activitymeta, 'f', $matches[1] );
+						$sql_array['where'] = $wpdb->prepare( "( f.type = %s AND {$table}user_id = %d )", $activity_meta_query->queries[0]['key'], $user_id );
+					}
+				}
+				// Restore activitymeta table
+				$wpdb->activitymeta = buddypress()->activity->table_name_meta;
+			}
 		}
 
 		return $sql_array;
@@ -811,28 +868,28 @@ class BP_Activity_Activity {
 		else
 			return false;
 
-		// Fetch the activity IDs so we can delete any comments for this activity item
+		// Fetch the activity IDs so we can delete any children for this activity item
 		$activity_ids = $wpdb->get_col( "SELECT id FROM {$bp->activity->table_name} {$where_sql}" );
 
 		if ( ! $wpdb->query( "DELETE FROM {$bp->activity->table_name} {$where_sql}" ) ) {
 			return false;
 		}
 
-		// Handle accompanying activity comments and meta deletion
+		// Handle accompanying activity children and meta deletion
 		if ( $activity_ids ) {
 			$activity_ids_comma          = implode( ',', wp_parse_id_list( $activity_ids ) );
-			$activity_comments_where_sql = "WHERE type = 'activity_comment' AND item_id IN ({$activity_ids_comma})";
+			$activity_children_where_sql = "WHERE type IN ( 'activity_comment', 'activity_favorite' ) AND item_id IN ({$activity_ids_comma})";
 
-			// Fetch the activity comment IDs for our deleted activity items
-			$activity_comment_ids = $wpdb->get_col( "SELECT id FROM {$bp->activity->table_name} {$activity_comments_where_sql}" );
+			// Fetch the activity child IDs for our deleted activity items
+			$activity_child_ids = $wpdb->get_col( "SELECT id FROM {$bp->activity->table_name} {$activity_children_where_sql}" );
 
 			// We have activity comments!
-			if ( ! empty( $activity_comment_ids ) ) {
+			if ( ! empty( $activity_child_ids ) ) {
 				// Delete activity comments
-				$wpdb->query( "DELETE FROM {$bp->activity->table_name} {$activity_comments_where_sql}" );
+				$wpdb->query( "DELETE FROM {$bp->activity->table_name} {$activity_children_where_sql}" );
 
 				// Merge activity IDs with activity comment IDs
-				$activity_ids = array_merge( $activity_ids, $activity_comment_ids );
+				$activity_ids = array_merge( $activity_ids, $activity_child_ids );
 			}
 
 			// Delete all activity meta entries for activity items and activity comments
@@ -1283,10 +1340,12 @@ class BP_Activity_Activity {
 	 * @return int A count of the user's favorites.
 	 */
 	public static function total_favorite_count( $user_id ) {
-		if ( !$favorite_activity_entries = bp_get_user_meta( $user_id, 'bp_favorite_activities', true ) )
+		$favorite_activity_entries = self::get_favorites_by_user_id( $user_id );
+
+		if ( empty( $favorite_activity_entries ) )
 			return 0;
 
-		return count( maybe_unserialize( $favorite_activity_entries ) );
+		return count( $favorite_activity_entries );
 	}
 
 	/**
@@ -1312,6 +1371,81 @@ class BP_Activity_Activity {
 
 		return $wpdb->get_var( $wpdb->prepare( "UPDATE {$bp->activity->table_name} SET hide_sitewide = 1 WHERE user_id = %d", $user_id ) );
 	}
+
+	/**
+	 * Append user_ids who favorited/liked activities.
+	 *
+	 * @since BuddyPress (2.1.0)
+	 *
+	 * @param array $activities Activities to fetch user who favorited / liked.
+	 * @return array The updated activities with attached user ids.
+	 */
+	public static function append_favorites( $activities = array() ) {
+
+		// Now fetch the user who liked matching activities.
+		foreach ( (array) $activities as $key => $activity ) {
+			if ( 'activity_favorite' == $activity->type )
+				continue;
+
+			$activities[$key]->favorites = self::get_favorites_by_activity_id( $activity->id );
+		}
+
+		return $activities;
+	}
+
+	/**
+	 * Get user_ids who favorited/liked activities.
+	 *
+	 * @since BuddyPress (2.1.0)
+	 *
+	 * @param int $activity_id
+	 * @return array $users The users who favorited the activities.
+	 */
+	public static function get_favorites_by_activity_id( $activity_id = 0 ) {
+		global $wpdb;
+		$bp = buddypress();
+
+		$users = array();
+
+		if ( empty( $activity_id ) )
+			return $users;
+
+		$users = $wpdb->get_col( $wpdb->prepare( "SELECT user_id FROM {$bp->activity->table_name} WHERE type = 'activity_favorite' AND item_id = %d", $activity_id ) );
+		return $users;
+	}
+
+	/**
+	 * Get user_ids who favorited/liked activities.
+	 *
+	 * @since BuddyPress (2.1.0)
+	 *
+	 * @param int $user_id
+	 * @param int $activity_id
+	 * @return array $favorites The favorited activities.
+	 */
+	public static function get_favorites_by_user_id( $user_id = 0, $activity_id = 0 ) {
+		global $wpdb;
+		$bp = buddypress();
+
+		$favorites = array();
+
+		if ( empty( $user_id ) )
+			return $favorites;
+
+		$where = array(
+			"type = 'activity_favorite'",
+			$wpdb->prepare( "user_id = %d", $user_id )
+		);
+
+		if ( ! empty( $activity_id ) ) {
+			$where[] = $wpdb->prepare( "item_id = %d", $activity_id );
+		}
+
+		$where = 'WHERE ' . implode( ' AND ', $where );
+
+		$favorites = $wpdb->get_col( "SELECT item_id FROM {$bp->activity->table_name} {$where}" );
+		return $favorites;
+	}
 }
 
 /**
@@ -1530,7 +1664,7 @@ class BP_Activity_Feed {
 		switch ( $this->id ) {
 
 			// also output parent activity item if we're on a specific feed
-			case 'favorites' :
+			case bp_get_activity_favorite_slug() :
 			case 'friends' :
 			case 'mentions' :
 			case 'personal' :
diff --git src/bp-activity/bp-activity-functions.php src/bp-activity/bp-activity-functions.php
index 507387e..278f121 100644
--- src/bp-activity/bp-activity-functions.php
+++ src/bp-activity/bp-activity-functions.php
@@ -367,7 +367,7 @@ function bp_activity_get_types() {
  *
  * @since BuddyPress (1.2)
  *
- * @uses bp_get_user_meta()
+ * @uses BP_Activity_Activity::get_favorites_by_user_id() to get user's favorites/likes
  * @uses apply_filters() To call the 'bp_activity_get_user_favorites' hook.
  *
  * @param int $user_id ID of the user whose favorites are being queried.
@@ -380,7 +380,7 @@ function bp_activity_get_user_favorites( $user_id = 0 ) {
 		$user_id = bp_displayed_user_id();
 
 	// Get favorites for user
-	$favs = bp_get_user_meta( $user_id, 'bp_favorite_activities', true );
+	$favs = BP_Activity_Activity::get_favorites_by_user_id( $user_id );
 
 	return apply_filters( 'bp_activity_get_user_favorites', $favs );
 }
@@ -391,10 +391,11 @@ function bp_activity_get_user_favorites( $user_id = 0 ) {
  * @since BuddyPress (1.2)
  *
  * @uses is_user_logged_in()
- * @uses bp_get_user_meta()
+ * @uses bp_loggedin_user_id() to default to current user logged in
+ * @uses BP_Activity_Activity::get_favorites_by_user_id() to check if the activity to favorite is not already favorited
  * @uses bp_activity_get_meta()
- * @uses bp_update_user_meta()
  * @uses bp_activity_update_meta()
+ * @uses bp_activity_add_favorite() to create the 'activity_favorite' activity
  * @uses do_action() To call the 'bp_activity_add_user_favorite' hook.
  * @uses do_action() To call the 'bp_activity_add_user_favorite_fail' hook.
  *
@@ -405,35 +406,29 @@ function bp_activity_get_user_favorites( $user_id = 0 ) {
 function bp_activity_add_user_favorite( $activity_id, $user_id = 0 ) {
 
 	// Favorite activity stream items are for logged in users only
-	if ( !is_user_logged_in() )
+	if ( ! is_user_logged_in() )
 		return false;
 
 	// Fallback to logged in user if no user_id is passed
 	if ( empty( $user_id ) )
 		$user_id = bp_loggedin_user_id();
 
-	$my_favs = bp_get_user_meta( $user_id, 'bp_favorite_activities', true );
-	if ( empty( $my_favs ) || ! is_array( $my_favs ) ) {
-		$my_favs = array();
-	}
+	$is_fav = BP_Activity_Activity::get_favorites_by_user_id( $user_id, $activity_id );
 
-	// Bail if the user has already favorited this activity item
-	if ( in_array( $activity_id, $my_favs ) ) {
+	// Bail if Already favorited
+	if ( ! empty( $is_fav ) ) {
 		return false;
 	}
 
-	// Add to user's favorites
-	$my_favs[] = $activity_id;
-
 	// Update the total number of users who have favorited this activity
 	$fav_count = bp_activity_get_meta( $activity_id, 'favorite_count' );
-	$fav_count = !empty( $fav_count ) ? (int) $fav_count + 1 : 1;
+	$fav_count = ! empty( $fav_count ) ? (int) $fav_count + 1 : 1;
 
-	// Update user meta
-	bp_update_user_meta( $user_id, 'bp_favorite_activities', $my_favs );
+	// Update activity meta counts for backcompat
+	bp_activity_update_meta( $activity_id, 'favorite_count', $fav_count );
 
-	// Update activity meta counts
-	if ( bp_activity_update_meta( $activity_id, 'favorite_count', $fav_count ) ) {
+	// Save the favorite
+	if ( bp_activity_add_favorite( $activity_id, $user_id ) ) {
 
 		// Execute additional code
 		do_action( 'bp_activity_add_user_favorite', $activity_id, $user_id );
@@ -456,10 +451,10 @@ function bp_activity_add_user_favorite( $activity_id, $user_id = 0 ) {
  * @since BuddyPress (1.2)
  *
  * @uses is_user_logged_in()
- * @uses bp_get_user_meta()
+ * @uses bp_loggedin_user_id() to default to current user logged in
+ * @uses bp_activity_delete_by_item_id() to delete the favorite/like
  * @uses bp_activity_get_meta()
  * @uses bp_activity_update_meta()
- * @uses bp_update_user_meta()
  * @uses do_action() To call the 'bp_activity_remove_user_favorite' hook.
  *
  * @param int $activity_id ID of the activity item being unfavorited.
@@ -469,53 +464,113 @@ function bp_activity_add_user_favorite( $activity_id, $user_id = 0 ) {
 function bp_activity_remove_user_favorite( $activity_id, $user_id = 0 ) {
 
 	// Favorite activity stream items are for logged in users only
-	if ( !is_user_logged_in() )
+	if ( ! is_user_logged_in() )
 		return false;
 
 	// Fallback to logged in user if no user_id is passed
 	if ( empty( $user_id ) )
 		$user_id = bp_loggedin_user_id();
 
-	$my_favs = bp_get_user_meta( $user_id, 'bp_favorite_activities', true );
-	$my_favs = array_flip( (array) $my_favs );
+	// the favorite / like is an activity, so let's delete it
+	$removed = bp_activity_delete_by_item_id(  array(
+		'item_id' => $activity_id,
+		'type'    => 'activity_favorite',
+		'user_id' => $user_id,
+	) );
 
 	// Bail if the user has not previously favorited the item
-	if ( ! isset( $my_favs[ $activity_id ] ) ) {
+	if ( empty( $removed ) ) {
 		return false;
 	}
 
-	// Remove the fav from the user's favs
-	unset( $my_favs[$activity_id] );
-	$my_favs = array_unique( array_flip( $my_favs ) );
+	$fav_count = bp_activity_get_meta( $activity_id, 'favorite_count' );
+ 
+	// Error getting favorite count
+	if ( empty( $fav_count ) ) {
+		return false;
+	}
+	
+	// Deduct from total favorites
+	$count_updated = bp_activity_update_meta( $activity_id, 'favorite_count', (int) $fav_count - 1 );
 
-	// Update the total number of users who have favorited this activity
-	if ( $fav_count = bp_activity_get_meta( $activity_id, 'favorite_count' ) ) {
+	// Error updating favorite count
+	if ( empty( $count_updated ) ) {
+ 		return false;
+ 	}
+
+	// Execute additional code
+	do_action( 'bp_activity_remove_user_favorite', $activity_id, $user_id );
+
+	return true;
+}
+
+/**
+ * Add an activity typed 'activity_favorite' for the favorited / liked activity
+ *
+ * The action strings will be adapted at run time if the admin changes the
+ * favorite feature behavior between like or favorite
+ * @see bp_activity_format_activity_action_activity_favorites()
+ *
+ * @since BuddyPress (2.1.0)
+ * @uses  BP_Activity_Activity
+ * @uses  bp_activity_get_permalink()
+ * @uses  bp_core_get_userlink()
+ * @uses  bp_activity_add()
+ * @return int|bool the activity id created or false if it fails
+ */
+function bp_activity_add_favorite( $activity_id = 0, $user_id = 0 ) {
+	if ( empty( $activity_id ) || empty( $user_id ) )
+		return false;
 
-		// Deduct from total favorites
-		if ( bp_activity_update_meta( $activity_id, 'favorite_count', (int) $fav_count - 1 ) ) {
+	$bp = buddypress();
 
-			// Update users favorites
-			if ( bp_update_user_meta( $user_id, 'bp_favorite_activities', $my_favs ) ) {
+	// Parent activity exists ?
+	$activity = new BP_Activity_Activity( $activity_id );
 
-				// Execute additional code
-				do_action( 'bp_activity_remove_user_favorite', $activity_id, $user_id );
+	if ( empty( $activity->type ) || 'activity_favorite' == $activity->type ) {
+		return false;
+	}
 
-				// Success
-				return true;
+	$primary_link = bp_activity_get_permalink( $activity_id, $activity );
+	$description  = $bp->activity->actions->{$bp->activity->id}->activity_favorite['value'];
 
-			// Error updating
-			} else {
-				return false;
-			}
+	$action = sprintf( _x( '%1$s %2$s', 'favorite action string', 'buddypress' ), bp_core_get_userlink( $user_id ), $description );
 
-		// Error updating favorite count
-		} else {
-			return false;
+	$args = array(
+		'user_id'           => $user_id,
+		'component'         => $bp->activity->id,
+		'type'              => 'activity_favorite',
+		'action'            => $action,
+		'content'           => '',
+		'primary_link'      => $primary_link,
+		'item_id'           => $activity_id,
+		'secondary_item_id' => $activity->user_id
+	);
+
+	return bp_activity_add( $args );
+}
+
+/**
+ * Migrate user's favorite (previously in bp_favorite_activities user meta) to activity table
+ *
+ * @since BuddyPress (2.1.0)
+ * @uses  bp_activity_add_favorite() to create the 'activity_favorite' activities
+ */
+function bp_activity_favorites_migrate() {
+	global $wpdb;
+
+	$user_favorites = $wpdb->get_results( "SELECT user_id, meta_value FROM {$wpdb->usermeta} WHERE meta_key = 'bp_favorite_activities'" );
+	
+	foreach( $user_favorites as $meta ) {
+		$meta_value = maybe_unserialize( $meta->meta_value );
+
+		if ( empty( $meta_value ) )
+			continue;
+
+		foreach( $meta_value as $favorite ) {
+			bp_activity_add_favorite( $favorite, $meta->user_id );
 		}
 
-	// Error getting favorite count
-	} else {
-		return false;
 	}
 }
 
@@ -854,6 +909,16 @@ function bp_activity_register_activity_actions() {
 		__( 'Activity Comments', 'buddypress' )
 	);
 
+	// Favorites/likes
+	bp_activity_set_action(
+		$bp->activity->id,
+		'activity_favorite',
+		$bp->activity->favorite->description,
+		'bp_activity_format_activity_action_activity_favorites',
+		$bp->activity->favorite->label,
+		$bp->activity->favorite->contexts
+	);
+
 	do_action( 'bp_activity_register_activity_actions' );
 
 	// Backpat. Don't use this.
@@ -919,6 +984,20 @@ function bp_activity_format_activity_action_activity_comment( $action, $activity
 	return apply_filters( 'bp_activity_comment_action', $action, $activity );
 }
 
+/**
+ * Format 'activity_favorite' activity actions.
+ *
+ * @since BuddyPress (2.1.0)
+ *
+ * @param string $action Static activity action.
+ * @param object $activity Activity data object.
+ * @return string
+ */
+function bp_activity_format_activity_action_activity_favorites( $action, $activity ) {
+	$action = sprintf( _x( '%1$s %2$s', 'favorite action string', 'buddypress' ), bp_core_get_userlink( $activity->user_id ), buddypress()->activity->favorite->description );
+	return apply_filters( 'bp_activity_favorite_action', $action, $activity );
+}
+
 /******************************************************************************
  * Business functions are where all the magic happens in BuddyPress. They will
  * handle the actual saving or manipulation of information. Usually they will
@@ -1599,7 +1678,7 @@ function bp_activity_get_permalink( $activity_id, $activity_obj = false ) {
 		$activity_obj = $activity_obj->current_comment;
 	}
 
-	if ( 'new_blog_post' == $activity_obj->type || 'new_blog_comment' == $activity_obj->type || 'new_forum_topic' == $activity_obj->type || 'new_forum_post' == $activity_obj->type ) {
+	if ( 'new_blog_post' == $activity_obj->type || 'new_blog_comment' == $activity_obj->type || 'new_forum_topic' == $activity_obj->type || 'new_forum_post' == $activity_obj->type || 'activity_favorite' == $activity_obj->type ) {
 		$link = $activity_obj->primary_link;
 	} else {
 		if ( 'activity_comment' == $activity_obj->type ) {
diff --git src/bp-activity/bp-activity-loader.php src/bp-activity/bp-activity-loader.php
index 0f68f91..4c1695b 100644
--- src/bp-activity/bp-activity-loader.php
+++ src/bp-activity/bp-activity-loader.php
@@ -185,13 +185,14 @@ class BP_Activity_Component extends BP_Component {
 
 		// Favorite activity items
 		$sub_nav[] = array(
-			'name'            => __( 'Favorites', 'buddypress' ),
-			'slug'            => 'favorites',
+			'name'            => bp_get_activity_favorite_nav(),
+			'slug'            => bp_get_activity_favorite_slug(),
 			'parent_url'      => $activity_link,
 			'parent_slug'     => $this->slug,
 			'screen_function' => 'bp_activity_screen_favorites',
 			'position'        => 30,
-			'item_css_id'     => 'activity-favs'
+			'item_css_id'     => 'activity-favs',
+			'user_has_access' => ! empty( $this->favorites_as_likes ) ? $this->favorites_as_likes : bp_core_can_edit_settings()
 		);
 
 		// Additional menu if friends is active
@@ -291,8 +292,8 @@ class BP_Activity_Component extends BP_Component {
 			$wp_admin_nav[] = array(
 				'parent' => 'my-account-' . $this->id,
 				'id'     => 'my-account-' . $this->id . '-favorites',
-				'title'  => __( 'Favorites', 'buddypress' ),
-				'href'   => trailingslashit( $activity_link . 'favorites' )
+				'title'  => bp_get_activity_favorite_nav(),
+				'href'   => trailingslashit( $activity_link . bp_get_activity_favorite_slug() )
 			);
 
 			// Friends?
diff --git src/bp-activity/bp-activity-template.php src/bp-activity/bp-activity-template.php
index 0a7ceeb..1af1135 100644
--- src/bp-activity/bp-activity-template.php
+++ src/bp-activity/bp-activity-template.php
@@ -57,6 +57,126 @@ function bp_activity_root_slug() {
 	}
 
 /**
+ * Output the activity favorite slug.
+ *
+ * @since BuddyPress (2.1.0)
+ *
+ * @uses bp_get_activity_favorite_slug()
+ */
+function bp_activity_favorite_slug() {
+	echo bp_get_activity_favorite_slug();
+}
+	/**
+	 * Return the activity favorite slug.
+	 *
+	 * @since BuddyPress (2.1.0)
+	 *
+	 * @uses apply_filters() To call the 'bp_get_activity_favorite_slug' hook.
+	 * @uses buddypress() to get main instance
+	 *
+	 * @return string The activity favorite slug.
+	 */
+	function bp_get_activity_favorite_slug() {
+		return apply_filters( 'bp_get_activity_favorite_slug', buddypress()->activity->favorite->slug );
+	}
+
+/**
+ * Output the activity favorite nav name.
+ *
+ * @since BuddyPress (2.1.0)
+ *
+ * @uses bp_get_activity_favorite_nav()
+ */
+function bp_activity_favorite_nav() {
+	echo bp_get_activity_favorite_nav();
+}
+	/**
+	 * Return the activity favorite nav name.
+	 *
+	 * @since BuddyPress (2.1.0)
+	 *
+	 * @uses apply_filters() To call the 'bp_get_activity_favorite_nav' hook.
+	 * @uses buddypress() to get main instance
+	 *
+	 * @return string The activity favorite nav name.
+	 */
+	function bp_get_activity_favorite_nav() {
+		return apply_filters( 'bp_get_activity_favorite_nav', buddypress()->activity->favorite->subnav );
+	}
+
+/**
+ * Output the activity favorite fav button caption.
+ *
+ * @since BuddyPress (2.1.0)
+ *
+ * @uses bp_get_activity_favorite_fav_button()
+ */
+function bp_activity_favorite_fav_button() {
+	echo bp_get_activity_favorite_fav_button();
+}
+	/**
+	 * Return the activity favorite fav button caption.
+	 *
+	 * @since BuddyPress (2.1.0)
+	 *
+	 * @uses apply_filters() To call the 'bp_get_activity_favorite_fav_button' hook.
+	 * @uses buddypress() to get main instance
+	 *
+	 * @return string The activity favorite fav button caption.
+	 */
+	function bp_get_activity_favorite_fav_button() {
+		return apply_filters( 'bp_get_activity_favorite_fav_button', buddypress()->activity->favorite->fav_button );
+	}
+
+/**
+ * Output the activity favorite unfav button caption.
+ *
+ * @since BuddyPress (2.1.0)
+ *
+ * @uses bp_get_activity_favorite_unfav_button()
+ */
+function bp_activity_favorite_unfav_button() {
+	echo bp_get_activity_favorite_unfav_button();
+}
+	/**
+	 * Return the activity favorite unfav button caption.
+	 *
+	 * @since BuddyPress (2.1.0)
+	 *
+	 * @uses apply_filters() To call the 'bp_get_activity_favorite_unfav_button' hook.
+	 * @uses buddypress() to get main instance
+	 *
+	 * @return string The activity favorite unfav button caption.
+	 */
+	function bp_get_activity_favorite_unfav_button() {
+		return apply_filters( 'bp_get_activity_favorite_unfav_button', buddypress()->activity->favorite->unfav_button );
+	}
+
+/**
+ * Output the activity favorite directory tab caption.
+ *
+ * @since BuddyPress (2.1.0)
+ *
+ * @uses bp_get_activity_favorite_directory_tab()
+ */
+function bp_activity_favorite_directory_tab() {
+	echo bp_get_activity_favorite_directory_tab();
+}
+	/**
+	 * Return the activity favorite directory tab caption.
+	 *
+	 * @since BuddyPress (2.1.0)
+	 *
+	 * @uses apply_filters() To call the 'bp_get_activity_favorite_directory_tab' hook.
+	 * @uses buddypress() to get main instance
+	 *
+	 * @return string The activity favorite directory tab caption.
+	 */
+	function bp_get_activity_favorite_directory_tab() {
+		return apply_filters( 'bp_get_activity_favorite_directory_tab', buddypress()->activity->favorite->directory_tab );
+	}
+
+/**
  * Output activity directory permalink.
  *
  * @since BuddyPress (1.5)
@@ -184,9 +304,6 @@ class BP_Activity_Template {
 		// Check if blog/forum replies are disabled
 		$this->disable_blogforum_replies = isset( $bp->site_options['bp-disable-blogforum-comments'] ) ? $bp->site_options['bp-disable-blogforum-comments'] : false;
 
-		// Get an array of the logged in user's favorite activities
-		$this->my_favs = maybe_unserialize( bp_get_user_meta( bp_loggedin_user_id(), 'bp_favorite_activities', true ) );
-
 		// Fetch specific activity items based on ID's
 		if ( !empty( $include ) ) {
 			$this->activities = bp_activity_get_specific( array(
@@ -519,6 +636,11 @@ function bp_has_activities( $args = '' ) {
 	else
 		$scope = bp_current_action();
 
+	// A lot of Ajax/js is done threw markup let's come back to favorites
+	if ( bp_get_activity_favorite_slug() == $scope ) {
+		$scope = 'favorites';
+	}
+
 	// Support for permalinks on single item pages: /groups/my-group/activity/124/
 	if ( bp_is_current_action( bp_get_activity_slug() ) )
 		$include = bp_action_variable( 0 );
@@ -610,13 +732,17 @@ function bp_has_activities( $args = '' ) {
 					}
 					break;
 				case 'favorites':
-					$favs = bp_activity_get_user_favorites( $user_id );
-					if ( empty( $favs ) )
-						return false;
+					if ( ! empty( $bp->activity->favorites_as_likes ) ) {
+						$action = 'activity_favorite';
+					} else {
+						$favs = bp_activity_get_user_favorites( $user_id );
+						if ( empty( $favs ) )
+							return false;
 
-					$in = implode( ',', (array) $favs );
+						$in = implode( ',', (array) $favs );
+						$user_id = 0;
+					}
 					$display_comments = true;
-					$user_id = 0;
 					break;
 				case 'mentions':
 
@@ -1751,7 +1877,7 @@ function bp_activity_is_favorite() {
 	function bp_get_activity_is_favorite() {
 		global $activities_template;
 
- 		return apply_filters( 'bp_get_activity_is_favorite', in_array( $activities_template->activity->id, (array) $activities_template->my_favs ) );
+ 		return apply_filters( 'bp_get_activity_is_favorite', in_array( bp_loggedin_user_id(), (array) $activities_template->activity->favorites ) );
 	}
 
 /**
@@ -2687,9 +2813,10 @@ function bp_activity_can_comment_reply( $comment ) {
 }
 
 /**
- * Determine if an favorites are allowed.
+ * Determine if favorites are allowed.
  *
- * Defaults to true, but can be modified by plugins.
+ * If likes is the chosen behavior this will return false
+ * As favorites are activities, activity_favorite type is to exclude
  *
  * @since BuddyPress (1.5)
  *
@@ -2698,12 +2825,39 @@ function bp_activity_can_comment_reply( $comment ) {
  * @return bool $can_favorite True if comment can receive comments.
  */
 function bp_activity_can_favorite() {
-	$can_favorite = true;
+	global $activities_template;
+
+	$can_favorite = ! buddypress()->activity->favorites_as_likes;
+
+	if ( ! empty( $activities_template->activity->type ) && 'activity_favorite' == $activities_template->activity->type ) {
+		$can_favorite = false;
+	}
 
 	return apply_filters( 'bp_activity_can_favorite', $can_favorite );
 }
 
 /**
+ * Count the users who favorited the current activity.
+ *
+ * @since BuddyPress (2.1.0)
+ *
+ * @uses apply_filters() To call the 'bp_activity_get_favorite_count' hook.
+ *
+ * @return int the number of users who favorited the activity.
+ */
+function bp_activity_get_favorite_count() {
+	global $activities_template;
+
+	$count = 0;
+
+	if ( ! empty( $activities_template->activity->favorites ) ) {
+		$count = count( (array) $activities_template->activity->favorites );
+	}
+
+	return apply_filters( 'bp_activity_get_favorite_count', $count );
+}
+
+/**
  * Output the total favorite count for a specified user.
  *
  * @since BuddyPress (1.2)
@@ -2729,6 +2883,11 @@ function bp_total_favorite_count_for_user( $user_id = 0 ) {
 	 * @return int The total favorite count for the specified user.
 	 */
 	function bp_get_total_favorite_count_for_user( $user_id = 0 ) {
+		// Neutralize Favorite Activity Directory tab
+		if ( buddypress()->activity->favorites_as_likes ) {
+			return false;
+		}
+
 		if ( ! $user_id ) {
 			$user_id = bp_displayed_user_id();
 		}
@@ -2738,6 +2897,274 @@ function bp_total_favorite_count_for_user( $user_id = 0 ) {
 	add_filter( 'bp_get_total_favorite_count_for_user', 'bp_core_number_format' );
 
 /**
+ * Determine if likes are allowed.
+ *
+ * If Favorites is the chosen behavior this will return false
+ * As likes are activities, activity_favorite type is to exclude
+ *
+ * @since BuddyPress (2.1.0)
+ *
+ * @uses apply_filters() To call the 'bp_activity_can_like' hook.
+ *
+ * @return bool $can_like True if activity can be liked.
+ */
+function bp_activity_can_like() {
+	global $activities_template;
+
+	$can_like = buddypress()->activity->favorites_as_likes;
+
+	if ( ! empty( $activities_template->activity->type ) && 'activity_favorite' == $activities_template->activity->type ) {
+		$can_like = false;
+	}
+
+	return apply_filters( 'bp_activity_can_like', $can_like );
+}
+
+/**
+ * Output the total like count for a specified user.
+ *
+ * @since BuddyPress (2.1.0)
+ *
+ * @see bp_get_total_like_count_for_user() for description of parameters.
+ * @uses bp_get_total_like_count_for_user()
+ *
+ * @param int $user_id See {@link bp_get_total_like_count_for_user()}.
+ */
+function bp_total_like_count_for_user( $user_id = 0 ) {
+	echo bp_get_total_like_count_for_user( $user_id );
+}
+
+	/**
+	 * Return the total like count for a specified user.
+	 *
+	 * @since BuddyPress (2.1.0)
+	 *
+	 * @uses bp_activity_total_favorites_for_user()
+	 * @uses apply_filters() To call the 'bp_get_total_like_count_for_user' hook
+	 *
+	 * @param int $user_id ID of user being queried. Default: displayed user ID.
+	 * @return int The total favorite count for the specified user.
+	 */
+	function bp_get_total_like_count_for_user( $user_id = 0 ) {
+		// Neutralize Like Activity Directory tab
+		if ( ! buddypress()->activity->favorites_as_likes ) {
+			return false;
+		}
+
+		if ( ! $user_id ) {
+			$user_id = bp_displayed_user_id();
+		}
+
+		return apply_filters( 'bp_get_total_like_count_for_user', bp_activity_total_favorites_for_user( $user_id ) );
+	}
+	add_filter( 'bp_get_total_like_count_for_user', 'bp_core_number_format' );
+
+
+/**
+ * Output the Activity Directory tab for likes.
+ *
+ * To maximize theme backcompat uses the hook bp_before_activity_type_tab_favorites
+ * 
+ * @since BuddyPress (2.1.0)
+ *
+ * @uses bp_get_total_like_count_for_user()
+ */
+function bp_activity_likes_directory_tab() {
+	if ( bp_get_total_like_count_for_user( bp_loggedin_user_id() ) ) : ?>
+
+		<li id="activity-favorites"><a href="<?php echo bp_loggedin_user_domain() . bp_get_activity_slug() . '/' . bp_get_activity_favorite_slug() . '/'; ?>" title="<?php esc_attr_e( "The activity I've liked.", 'buddypress' ); ?>"><?php printf( _x( '%1$s <span>%2$s</span>', 'alternative favorite directory tab output', 'buddypress' ), bp_get_activity_favorite_directory_tab(), bp_get_total_like_count_for_user( bp_loggedin_user_id() ) ); ?></a></li>
+
+	<?php endif;
+}
+add_action( 'bp_before_activity_type_tab_favorites', 'bp_activity_likes_directory_tab' );
+
+/**
+ * Output the Like Button.
+ *
+ * To maximize theme backcompat uses the hook bp_activity_entry_meta
+ * 
+ * @since BuddyPress (2.1.0)
+ *
+ * @uses bp_activity_get_like_button()
+ */
+function bp_activity_like_button() {
+	if ( ! bp_activity_can_like() ) {
+		return;
+	}
+	
+	echo bp_activity_get_like_button();
+}
+add_action( 'bp_activity_entry_meta', 'bp_activity_like_button' );
+	
+	/**
+	 * Return the Like Button.
+	 * 
+	 * @since BuddyPress (2.1.0)
+	 *
+	 * @uses bp_get_activity_favorite_link()
+	 * @uses bp_get_activity_favorite_fav_button()
+	 * @uses bp_get_activity_favorite_unfav_button()
+	 */
+	function bp_activity_get_like_button() {
+		global $activities_template;
+
+		$user_id = bp_loggedin_user_id();
+		$likes = ! empty( $activities_template->activity->favorites ) ? $activities_template->activity->favorites : array();
+
+		$attributes = array( 
+			bp_get_activity_favorite_link(),
+			'button like bp-primary-action',
+			bp_get_activity_favorite_fav_button()
+		);
+		
+		if ( ! empty( $user_id ) && in_array( $user_id, $likes )  ) {
+			$attributes = array( 
+				trailingslashit( bp_loggedin_user_domain() . bp_get_activity_slug() . '/' . bp_get_activity_favorite_slug() ),
+				'button liked bp-primary-action',
+				bp_get_activity_favorite_unfav_button()
+			);
+		}
+
+		$link = '<a href="' . esc_url( $attributes[0] ). '" class="' . esc_attr( $attributes[1] ). '" title="' . esc_attr( $attributes[2] ) . '">' . esc_html( $attributes[2] ) . ' <span>'. bp_activity_get_favorite_count() .'</span></a>';
+
+		return apply_filters( 'bp_activity_get_like_button', $link, $attributes );
+	}
+
+/**
+ * Output the List of users who liked the activity
+ *
+ * To maximize theme backcompat uses the hook bp_after_activity_entry_comments
+ * 
+ * @since BuddyPress (2.1.0)
+ *
+ * @uses bp_get_activity_likes()
+ */
+function bp_activity_likes() {
+	echo bp_get_activity_likes();
+}
+add_action( 'bp_after_activity_entry_comments', 'bp_activity_likes' );
+	
+	/**
+	 * Return the List of users who liked the activity
+	 * 
+	 * @since BuddyPress (2.1.0)
+	 *
+	 * @uses bp_activity_list_likes()
+	 */
+	function bp_get_activity_likes() {
+		if ( empty( buddypress()->activity->favorites_as_likes ) ) {
+			return;
+		}
+
+		if ( 0 == bp_activity_get_comment_count() ) {
+			$output = '<div class="activity-likes">';
+		} else {
+			$output = '<div class="activity-likes hide">';
+		}
+		
+		$output .= bp_activity_list_likes() . '</div>';
+
+		return $output;
+	}
+
+	/**
+	 * Build the List of users who liked the activity
+	 * 
+	 * @since BuddyPress (2.1.0)
+	 */
+	function bp_activity_list_likes() {
+		global $activities_template;
+
+		if ( empty( $activities_template->activity->favorites ) ) {
+			return;
+		}
+
+		$output = '<ul class="likes-list">';
+
+		foreach( (array) $activities_template->activity->favorites as $user_id ) {
+			$user_avatar = bp_core_fetch_avatar( array(
+				'item_id' => $user_id,
+				'object'  => 'user',
+				'type'    => 'thumb',
+				'width'   => 50,
+				'height'  => 50,
+				'html'    => true,
+				'class'   => 'user-liked-' . $user_id
+			) );
+			$output .= '<li><a href="' . bp_core_get_userlink( $user_id, false, true ) .'">' . $user_avatar . '</a></li>';
+		}
+
+		$output .= '</ul>';
+
+		return apply_filters( 'bp_get_activity_likes', $output, $activities_template->activity->id, $activities_template->activity->favorites );
+	}
+
+/**
+ * Output the interaction nav to switch between comments & favorites/likes
+ *
+ * To maximize theme backcompat uses the hook bp_before_activity_entry_comments
+ * 
+ * @since BuddyPress (2.1.0)
+ *
+ * @uses bp_get_activity_interactions_nav()
+ */
+function bp_activity_interactions_nav() {
+	echo bp_get_activity_interactions_nav();
+}
+add_action( 'bp_before_activity_entry_comments', 'bp_activity_interactions_nav' );
+	
+	/**
+	 * Return the interaction nav to switch between comments & favorites/likes
+	 * 
+	 * @since BuddyPress (2.1.0)
+	 */
+	function bp_get_activity_interactions_nav() {
+		global $activities_template;
+
+		if ( empty( buddypress()->activity->favorites_as_likes ) ) {
+			return false;
+		}
+
+		$can_comment = bp_activity_can_comment();
+
+		if ( ( is_user_logged_in() && $can_comment ) || ( is_user_logged_in() && bp_activity_can_like() ) || bp_is_single_activity() ) {
+
+			$class_nav = $class_like = $class_comment = '';
+			$comments_count  = bp_activity_get_comment_count();
+			$likes_count = bp_activity_get_favorite_count();
+
+			if ( 0 ==  $comments_count + $likes_count )  {
+				$class_nav = ' hide';
+			}
+
+			$output = '<ul class="activity-interactions-nav'. $class_nav .'">';
+
+			if ( ! $can_comment  ) {
+				$class_comment = ' hide';
+			} else if ( 0 !=  $comments_count ) {
+				$class_comment = ' current';
+			}
+
+			$output .= '<li class="activity-interactions'. $class_comment .'"><a href="#" class="activity-comments-interaction">' .  __( 'Replies', 'buddypress' ) . '</a></li>';
+
+			if ( 0 == $likes_count ) {
+				$class_like = ' hide';
+			} else if ( ! $can_comment || 0 ==  $comments_count ) {
+				$class_like = ' current';
+			}
+
+			$output .= '<li class="activity-interactions'. $class_like .'"><a href="#" class="activity-likes-interaction">' .  bp_get_activity_favorite_nav() . '</a></li>';
+
+			$output .= '</ul>';
+
+		} else {
+			$output = false;
+		}
+
+		return apply_filters( 'bp_get_activity_interactions_nav', $output );
+	}
+
+/**
  * Output the total mention count for a specified user.
  *
  * @since BuddyPress (1.2)
@@ -3170,8 +3597,8 @@ function bp_activities_member_rss_link() { echo bp_get_member_activity_feed_link
 			$link = bp_displayed_user_domain() . bp_get_activity_slug() . '/' . bp_get_friends_slug() . '/feed/';
 		elseif ( bp_is_active( 'groups'  ) && bp_is_current_action( bp_get_groups_slug()  ) )
 			$link = bp_displayed_user_domain() . bp_get_activity_slug() . '/' . bp_get_groups_slug() . '/feed/';
-		elseif ( 'favorites' == bp_current_action() )
-			$link = bp_displayed_user_domain() . bp_get_activity_slug() . '/favorites/feed/';
+		elseif ( bp_get_activity_favorite_slug() == bp_current_action() )
+			$link = bp_displayed_user_domain() . bp_get_activity_slug() . '/' . bp_get_activity_favorite_slug() . '/feed/';
 		elseif ( 'mentions' == bp_current_action() && bp_activity_do_mentions() )
 			$link = bp_displayed_user_domain() . bp_get_activity_slug() . '/mentions/feed/';
 		else
diff --git src/bp-core/admin/bp-core-settings.php src/bp-core/admin/bp-core-settings.php
index e112df7..8f6b763 100644
--- src/bp-core/admin/bp-core-settings.php
+++ src/bp-core/admin/bp-core-settings.php
@@ -118,6 +118,20 @@ function bp_admin_setting_callback_heartbeat() {
 }
 
 /**
+ * Allow Activity to be treated as likes.
+ *
+ * @since BuddyPress (2.1.0)
+ */
+function bp_admin_setting_callback_favorites() {
+?>
+
+	<input id="_bp_enable_favorites_as_likes" name="_bp_enable_favorites_as_likes" type="checkbox" value="1" <?php checked( bp_is_activity_favorites_as_likes_active( true ) ); ?> />
+	<label for="_bp_enable_favorites_as_likes"><?php _e( 'Use favorites as a like feature', 'buddypress' ); ?></label>
+
+<?php
+}
+
+/**
  * Sanitization for _bp_force_buddyvar
  *
  * If upgraded to 1.6 and you chose to keep the BuddyBar, a checkbox asks if you want to switch to
diff --git src/bp-core/bp-core-admin.php src/bp-core/bp-core-admin.php
index 8942a82..2d94892 100644
--- src/bp-core/bp-core-admin.php
+++ src/bp-core/bp-core-admin.php
@@ -385,6 +385,10 @@ class BP_Admin {
 			add_settings_field( '_bp_enable_heartbeat_refresh', __( 'Activity auto-refresh', 'buddypress' ), 'bp_admin_setting_callback_heartbeat', 'buddypress', 'bp_activity' );
 			register_setting( 'buddypress', '_bp_enable_heartbeat_refresh', 'intval' );
 
+			// Activity Favorites preferences (Bookmark or like ?)
+			add_settings_field( '_bp_enable_favorites_as_likes', __( 'Activity Favorites', 'buddypress' ), 'bp_admin_setting_callback_favorites', 'buddypress', 'bp_activity' );
+			register_setting( 'buddypress', '_bp_enable_favorites_as_likes', 'intval' );
+
 			// Allow activity akismet
 			if ( is_plugin_active( 'akismet/akismet.php' ) && defined( 'AKISMET_VERSION' ) ) {
 				add_settings_field( '_bp_enable_akismet', __( 'Akismet',          'buddypress' ), 'bp_admin_setting_callback_activity_akismet', 'buddypress', 'bp_activity' );
diff --git src/bp-core/bp-core-options.php src/bp-core/bp-core-options.php
index 580ceb1..389390d 100644
--- src/bp-core/bp-core-options.php
+++ src/bp-core/bp-core-options.php
@@ -81,6 +81,11 @@ function bp_get_default_options() {
 		// HeartBeat is on to refresh activities
 		'_bp_enable_heartbeat_refresh'    => true,
 
+		/** Activity Favorites as likes ***************************************/
+
+		// Favorites are to use as likes
+		'_bp_enable_favorites_as_likes'   => true,
+
 		/** BuddyBar **********************************************************/
 
 		// Force the BuddyBar
@@ -605,6 +610,21 @@ function bp_is_activity_heartbeat_active( $default = true ) {
 }
 
 /**
+ * Check whether Favorites should be treated as private bookmarks or public likes.
+ *
+ * @since BuddyPress (2.1.0)
+ *
+ * @uses bp_get_option() To get the Favorites as likes option.
+ *
+ * @param bool $default Optional. Fallback value if not found in the database.
+ *        Default: true.
+ * @return bool True if Use favorites as likes is enabled, otherwise false.
+ */
+function bp_is_activity_favorites_as_likes_active( $default = true ) {
+	return (bool) apply_filters( 'bp_is_activity_favorites_as_likes_active', (bool) bp_get_option( '_bp_enable_favorites_as_likes', $default ) );
+}
+
+/**
  * Get the current theme package ID.
  *
  * @since BuddyPress (1.7.0)
diff --git src/bp-core/bp-core-update.php src/bp-core/bp-core-update.php
index 20bdb6c..9dca4c5 100644
--- src/bp-core/bp-core-update.php
+++ src/bp-core/bp-core-update.php
@@ -240,6 +240,11 @@ function bp_version_updater() {
 		if ( $raw_db_version < 8311 ) {
 			bp_update_to_2_0_1();
 		}
+
+		// 2.1
+		if ( $raw_db_version < 8312 ) {
+			bp_update_to_2_1();
+		}
 	}
 
 	/** All done! *************************************************************/
@@ -388,6 +393,20 @@ function bp_update_to_2_0_1() {
 	bp_core_maybe_install_signups();
 }
 
+ /**
+ * 2.1 database upgrade routine
+ *
+ * @since BuddyPress (2.1.0)
+ *
+ * @return void
+ */
+function bp_update_to_2_1() {
+	/** Migrate favorites data ******************************************/
+	if ( bp_is_active( 'activity' ) ) {
+		bp_activity_favorites_migrate();
+	}
+}
+
 /**
  * Redirect user to BP's What's New page on first page load after activation.
  *
diff --git src/bp-loader.php src/bp-loader.php
index bdd3012..ca5aea5 100644
--- src/bp-loader.php
+++ src/bp-loader.php
@@ -302,7 +302,7 @@ class BuddyPress {
 		/** Versions **********************************************************/
 
 		$this->version    = '2.1-alpha';
-		$this->db_version = 8311;
+		$this->db_version = 8312;
 
 		/** Loading ***********************************************************/
 
diff --git src/bp-templates/bp-legacy/buddypress-functions.php src/bp-templates/bp-legacy/buddypress-functions.php
index 784b2dc..d979e9b 100644
--- src/bp-templates/bp-legacy/buddypress-functions.php
+++ src/bp-templates/bp-legacy/buddypress-functions.php
@@ -232,21 +232,30 @@ class BP_Legacy extends BP_Theme_Compat {
 
 		// Add words that we need to use in JS to the end of the page
 		// so they can be translated and still used.
-		$params = apply_filters( 'bp_core_get_js_strings', array(
+		$params = array(
 			'accepted'            => __( 'Accepted', 'buddypress' ),
 			'close'               => __( 'Close', 'buddypress' ),
 			'comments'            => __( 'comments', 'buddypress' ),
 			'leave_group_confirm' => __( 'Are you sure you want to leave this group?', 'buddypress' ),
-			'mark_as_fav'	      => __( 'Favorite', 'buddypress' ),
-			'my_favs'             => __( 'My Favorites', 'buddypress' ),
 			'rejected'            => __( 'Rejected', 'buddypress' ),
-			'remove_fav'	      => __( 'Remove Favorite', 'buddypress' ),
 			'show_all'            => __( 'Show all', 'buddypress' ),
 			'show_all_comments'   => __( 'Show all comments for this thread', 'buddypress' ),
 			'show_x_comments'     => __( 'Show all %d comments', 'buddypress' ),
 			'unsaved_changes'     => __( 'Your profile has unsaved changes. If you leave the page, the changes will be lost.', 'buddypress' ),
 			'view'                => __( 'View', 'buddypress' ),
-		) );
+		);
+
+		if ( bp_is_active( 'activity' ) ) {
+			$params = array_merge( $params, array(
+				'mark_as_fav' => bp_get_activity_favorite_fav_button(),
+				'remove_fav'  => bp_get_activity_favorite_unfav_button(),
+				'my_favs'     => bp_get_activity_favorite_directory_tab(),
+			) );
+		}
+		
+		// Allow strings to be filtered
+		$params = apply_filters( 'bp_core_get_js_strings', $params );
+		
 		wp_localize_script( $asset['handle'], 'BP_DTheme', $params );
 
 		// Maybe enqueue comment reply JS
@@ -648,7 +657,7 @@ function bp_legacy_theme_activity_template_loader() {
 			$feed_url = bp_loggedin_user_domain() . bp_get_activity_slug() . '/groups/feed/';
 			break;
 		case 'favorites':
-			$feed_url = bp_loggedin_user_domain() . bp_get_activity_slug() . '/favorites/feed/';
+			$feed_url = bp_loggedin_user_domain() . bp_get_activity_slug() . '/' . bp_get_activity_favorite_slug() . '/feed/';
 			break;
 		case 'mentions':
 			$feed_url = bp_loggedin_user_domain() . bp_get_activity_slug() . '/mentions/feed/';
@@ -919,12 +928,30 @@ function bp_legacy_theme_mark_activity_favorite() {
 	if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) )
 		return;
 
-	if ( bp_activity_add_user_favorite( $_POST['id'] ) )
-		_e( 'Remove Favorite', 'buddypress' );
-	else
-		_e( 'Favorite', 'buddypress' );
+	$result = array();
+
+	if ( bp_activity_add_user_favorite( $_POST['id'] ) ){
+		$result['button'] = bp_get_activity_favorite_unfav_button();
+
+		if ( buddypress()->activity->favorites_as_likes ) {
+			$user_id = bp_loggedin_user_id();
+			$user_avatar = bp_core_fetch_avatar( array(
+				'item_id' => $user_id,
+				'object'  => 'user',
+				'type'    => 'thumb',
+				'width'   => 50,
+				'height'  => 50,
+				'html'    => true,
+				'class'   => 'user-liked-' . $user_id
+			) );
+			$result['avatar'] = '<li><a href="' . bp_core_get_userlink( $user_id, false, true ) .'">' . $user_avatar . '</a></li>';
+		}
+	} else {
+		$result['button'] = bp_get_activity_favorite_fav_button();
+		$result['avatar'] = 0;
+	}
 
-	exit;
+	exit( json_encode( $result ) );
 }
 
 /**
@@ -938,12 +965,14 @@ function bp_legacy_theme_unmark_activity_favorite() {
 	if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) )
 		return;
 
+	$result = array();
+
 	if ( bp_activity_remove_user_favorite( $_POST['id'] ) )
-		_e( 'Favorite', 'buddypress' );
+		$result['button'] = bp_get_activity_favorite_fav_button();
 	else
-		_e( 'Remove Favorite', 'buddypress' );
+		$result['button'] = bp_get_activity_favorite_unfav_button();
 
-	exit;
+	exit( json_encode( $result ) );
 }
 
 /**
diff --git src/bp-templates/bp-legacy/buddypress/activity/entry.php src/bp-templates/bp-legacy/buddypress/activity/entry.php
index 24e296b..df8546c 100644
--- src/bp-templates/bp-legacy/buddypress/activity/entry.php
+++ src/bp-templates/bp-legacy/buddypress/activity/entry.php
@@ -63,19 +63,21 @@
 
 					<?php if ( !bp_get_activity_is_favorite() ) : ?>
 
-						<a href="<?php bp_activity_favorite_link(); ?>" class="button fav bp-secondary-action" title="<?php esc_attr_e( 'Mark as Favorite', 'buddypress' ); ?>"><?php _e( 'Favorite', 'buddypress' ); ?></a>
+						<a href="<?php bp_activity_favorite_link(); ?>" class="button fav bp-secondary-action" title="<?php esc_attr_e( 'Mark as Favorite', 'buddypress' ); ?>"><?php bp_activity_favorite_fav_button(); ?></a>
 
 					<?php else : ?>
 
-						<a href="<?php bp_activity_unfavorite_link(); ?>" class="button unfav bp-secondary-action" title="<?php esc_attr_e( 'Remove Favorite', 'buddypress' ); ?>"><?php _e( 'Remove Favorite', 'buddypress' ); ?></a>
+						<a href="<?php bp_activity_unfavorite_link(); ?>" class="button unfav bp-secondary-action" title="<?php esc_attr_e( 'Remove Favorite', 'buddypress' ); ?>"><?php bp_activity_favorite_unfav_button(); ?></a>
 
 					<?php endif; ?>
 
 				<?php endif; ?>
 
+				<?php do_action( 'bp_activity_entry_meta' ); ?>
+
 				<?php if ( bp_activity_user_can_delete() ) bp_activity_delete_link(); ?>
 
-				<?php do_action( 'bp_activity_entry_meta' ); ?>
+				<?php do_action( 'bp_activity_after_delete_button_entry_meta' ); ?>
 
 			<?php endif; ?>
 
diff --git src/bp-templates/bp-legacy/buddypress/activity/index.php src/bp-templates/bp-legacy/buddypress/activity/index.php
index 09edc01..0954b95 100644
--- src/bp-templates/bp-legacy/buddypress/activity/index.php
+++ src/bp-templates/bp-legacy/buddypress/activity/index.php
@@ -48,7 +48,7 @@
 
 				<?php if ( bp_get_total_favorite_count_for_user( bp_loggedin_user_id() ) ) : ?>
 
-					<li id="activity-favorites"><a href="<?php echo bp_loggedin_user_domain() . bp_get_activity_slug() . '/favorites/'; ?>" title="<?php esc_attr_e( "The activity I've marked as a favorite.", 'buddypress' ); ?>"><?php printf( __( 'My Favorites <span>%s</span>', 'buddypress' ), bp_get_total_favorite_count_for_user( bp_loggedin_user_id() ) ); ?></a></li>
+					<li id="activity-favorites"><a href="<?php echo bp_loggedin_user_domain() . bp_get_activity_slug() . '/' . bp_get_activity_favorite_slug() . '/'; ?>" title="<?php esc_attr_e( "The activity I've marked as a favorite.", 'buddypress' ); ?>"><?php printf( _x( '%1$s <span>%2$s</span>', 'favorite directory tab output', 'buddypress' ), bp_get_activity_favorite_directory_tab(), bp_get_total_favorite_count_for_user( bp_loggedin_user_id() ) ); ?></a></li>
 
 				<?php endif; ?>
 
diff --git src/bp-templates/bp-legacy/css/buddypress.css src/bp-templates/bp-legacy/css/buddypress.css
index 36a16c7..adc1b55 100644
--- src/bp-templates/bp-legacy/css/buddypress.css
+++ src/bp-templates/bp-legacy/css/buddypress.css
@@ -12,6 +12,7 @@ Hello, this is the BuddyPress Legacy stylesheet.
 	3.1 - Activity
 		3.1.1 - Activity Listing
 		3.1.2 - Activity Comments
+		3.1.3 - Activity Likes
 	3.2 - Toolbar
 	3.3 - Directories - Members, Groups, Blogs, Forums
 	3.4 - Error / Success Messages
@@ -485,6 +486,88 @@ body.activity-permalink #buddypress div.activity-comments div.acomment-content {
 }
 
 /*--------------------------------------------------------------
++3.1.3 - Activity Likes
++--------------------------------------------------------------*/
+#buddypress .activity-list li ul.activity-interactions-nav {
+	list-style: none;
+	margin: 20px 0 10px 70px;
+	overflow: hidden; /* IE fix */
+	position: relative;
+	width: auto;
+	clear: both;
+}
+
+body.activity-permalink #buddypress li ul.activity-interactions-nav {
+	background: none;
+	margin-left: 170px;
+	width: auto;
+}
+
+#buddypress .activity-list li ul.activity-interactions-nav.hide,
+#buddypress .activity-list li ul.activity-interactions-nav li.hide {
+	display:none;
+}
+
+
+#buddypress .activity-list li ul.activity-interactions-nav li {
+	float: left;
+	margin:0;
+	padding: 4px 8px;
+	font-size: 90%;
+	border-bottom: none;
+}
+
+#buddypress .activity-list li ul.activity-interactions-nav li a {
+	text-decoration: none;
+	color:#555;
+}
+
+#buddypress .activity-list li ul.activity-interactions-nav li.current {
+	background-color: #eee;
+	color: #555;
+	opacity: .8;
+	font-weight: bold;
+}
+
+#buddypress div.activity-likes {
+	margin: 0 0 0 70px;
+	overflow: hidden; /* IE fix */
+	position: relative;
+	width: auto;
+	clear: both;
+}
+
+#buddypress div.activity-likes.hide,
+body.activity-permalink #buddypress div.activity-likes.hide {
+	display:none;
+}
+
+body.activity-permalink #buddypress div.activity-likes {
+	margin-left: 170px;
+}
+
+#buddypress div.activity-likes ul.likes-list li {
+	padding:0;
+	float: left;
+	border-bottom: none;
+}
+
+#buddypress div.activity-likes ul.likes-list {
+	overflow: hidden;
+	list-style: none;
+	width: auto;
+	clear: both;
+}
+
+#buddypress div.activity-likes ul.likes-list li img {
+	border-width: 1px;
+	float: left;
+	height: 25px;
+	margin-right: 10px;
+	width: 25px;
+}
+
+/*--------------------------------------------------------------
 3.3 - Directories - Members, Groups, Blogs, Forums
 --------------------------------------------------------------*/
 #buddypress div.dir-search {
diff --git src/bp-templates/bp-legacy/js/buddypress.js src/bp-templates/bp-legacy/js/buddypress.js
index dea38a0..9b369f8 100644
--- src/bp-templates/bp-legacy/js/buddypress.js
+++ src/bp-templates/bp-legacy/js/buddypress.js
@@ -284,7 +284,7 @@ jq(document).ready( function() {
 				target.removeClass('loading');
 
 				target.fadeOut( 200, function() {
-					jq(this).html(response);
+					jq(this).html(response['button']);
 					jq(this).attr('title', 'fav' === type ? BP_DTheme.remove_fav : BP_DTheme.mark_as_fav);
 					jq(this).fadeIn(200);
 				});
@@ -319,11 +319,74 @@ jq(document).ready( function() {
 				if ( 'activity-favorites' === jq( '.item-list-tabs li.selected').attr('id') ) {
 					target.closest( '.activity-item' ).slideUp( 100 );
 				}
-			});
+			}, 'json' );
 
 			return false;
 		}
 
+		/* Liking activity stream items */
+		if ( target.hasClass( 'like' ) || target.hasClass( 'liked' ) || target.parent().hasClass( 'like' ) || target.parent().hasClass( 'liked' ) ) {
+			event.preventDefault();
+
+			if ( target.parent().hasClass( 'like' ) || target.parent().hasClass( 'liked' ) ) {
+				target = target.parent();
+			}
+
+			type      = target.hasClass( 'like' ) ? 'fav' : 'liked';
+			parent    = target.closest( '.activity-item' );
+			parent_id = parent.attr( 'id' ).substr( 9, parent.attr( 'id' ).length );
+			count     = Number( jq( target ).find( 'span' ).html() );
+
+			jq( '#activity-' + parent_id + ' .activity-interactions-nav' ).removeClass( 'hide' );
+			jq( '#activity-' + parent_id + ' a.activity-likes-interaction' ).parent( 'li' ).removeClass( 'hide' );
+			jq( '#activity-' + parent_id + ' a.activity-likes-interaction' ).trigger( 'click' );
+
+			if( 'liked' == type ) {
+				return;
+			}
+
+			target.addClass('loading');
+
+			jq.post( ajaxurl, {
+				action: 'activity_mark_' + type,
+				'cookie': bp_get_cookies(),
+				'id': parent_id
+			},
+			function(response) {
+				target.removeClass('loading');
+				
+				target.fadeOut( 200, function() {
+					count = Number( count ) + 1;
+					jq(this).html( response['button'] + ' <span>' + count +'</span>' );
+					jq(this).prop( 'title', BP_DTheme.remove_fav );
+					jq(this).prop( 'href', '#' );
+					jq(this).fadeIn( 200 );
+				});
+
+				if ( ! jq('.item-list-tabs #activity-favs-personal-li').length ) {
+					if ( ! jq('.item-list-tabs #activity-favorites').length ) {
+						jq('.item-list-tabs ul #activity-mentions').before( '<li id="activity-favorites"><a href="#">' + BP_DTheme.my_favs + ' <span>0</span></a></li>' );
+					}
+
+					jq('.item-list-tabs ul #activity-favorites span').html( Number( jq('.item-list-tabs ul #activity-favorites span').html() ) + 1 );
+				}
+
+				if ( ! jq( '#activity-' + parent_id + ' .likes-list' ).length ) {
+					jq( '#activity-' + parent_id + ' .activity-likes' ).append( '<ul class="likes-list"></ul>' );
+				}
+
+				if ( 0 != response['avatar'] ){
+					jq( '#activity-' + parent_id + ' .likes-list' ).append( response['avatar'] );
+				}
+				
+				target.removeClass( 'like' );
+				target.addClass( 'liked' );
+
+			}, 'json' );
+		
+			return;
+		}
+
 		/* Delete activity stream items */
 		if ( target.hasClass('delete-activity') ) {
 			li        = target.parents('div.activity ul li');
@@ -459,6 +522,33 @@ jq(document).ready( function() {
 			// reset the newest activities now they're displayed
 			newest_activities = '';
 		}
+
+		if ( target.parent().hasClass( 'activity-interactions' ) ) {
+			
+			event.preventDefault();
+
+			var css_class = target.attr('class').split( ' ' ),
+				current_div = css_class[0].replace( '-interaction', '' ),
+				div_tohide = '',
+				parent_li = target.parent(),
+				parent_ul = parent_li.parent();
+
+			parent_ul.children( 'li' ).each( function() {
+				jq( this ).removeClass( 'current' );
+
+				if ( jq( this ).find('a').prop( 'class' ) != target.prop( 'class' ) ) {
+					div_tohide = jq.trim( jq( this ).find('a').prop( 'class' ) ).replace( '-interaction', '' );
+				}
+			});
+
+			jq( parent_li ).addClass( 'current' );
+
+			if ( ! div_tohide.length )
+				return
+			
+			parent_ul.parent().find( '.' + div_tohide  ).first().hide();
+			parent_ul.parent().find( '.' + current_div  ).first().show();
+		}
 	});
 
 	// Activity "Read More" links
@@ -507,6 +597,8 @@ jq(document).ready( function() {
 
 		/* Comment / comment reply links */
 		if ( target.hasClass('acomment-reply') || target.parent().hasClass('acomment-reply') ) {
+			target.parent().parent().parent().find( '.activity-comments-interaction' ).first().trigger( 'click' );
+
 			if ( target.parent().hasClass('acomment-reply') ) {
 				target = target.parent();
 			}
@@ -613,6 +705,7 @@ jq(document).ready( function() {
 
 					/* Increase the "Reply (X)" button count */
 					jq('#activity-' + form_id[2] + ' a.acomment-reply span').html( Number( jq('#activity-' + form_id[2] + ' a.acomment-reply span').html() ) + 1 );
+					jq('#activity-' + form_id[2] + ' ul.activity-interactions-nav').removeClass('hide');
 
 					// Increment the 'Show all x comments' string, if present
 					show_all_a = activity_comments.find('.show-all').find('a');
