diff --git a/src/bp-messages/bp-messages-actions.php b/src/bp-messages/bp-messages-actions.php
index d3b1287..a29d46b 100644
--- a/src/bp-messages/bp-messages-actions.php
+++ b/src/bp-messages/bp-messages-actions.php
@@ -296,6 +296,41 @@ function messages_action_delete_message() {
 add_action( 'bp_actions', 'messages_action_delete_message' );
 
 /**
+ * Process a request to quit a conversation (if multi-recipient)
+ *
+ * @return bool False on failure.
+ */
+function messages_action_quit_thread() {
+
+	if ( ! bp_is_messages_component() || bp_is_current_action( 'notices' ) || ! bp_is_action_variable( 'quit', 0 ) ) {		
+		return false;
+	}
+
+	$thread_id = bp_action_variable( 1 );
+	
+	if ( !$thread_id || !is_numeric( $thread_id ) || !messages_check_thread_access( $thread_id ) ) {	
+		bp_core_redirect( trailingslashit( bp_displayed_user_domain() . bp_get_messages_slug() . '/view' ) );
+	} else {
+		if ( ! check_admin_referer( 'messages_quit_thread' ) ) {
+			return false;
+		}
+		
+		$thread = new BP_Messages_Thread( $thread_id );		
+		//--- only for multi-recipients threads, and not for the creator of the thread
+		if ( count( $thread->recipients ) < 2 or $thread->first_sender_id == bp_loggedin_user_id() ) {	
+			return false;
+		}
+		if ( !messages_quit_thread( $thread_id, bp_loggedin_user_id() ) ) {
+			bp_core_add_message( __('There was an error quitting that conversation.', 'buddypress'), 'error' );
+		} else {
+			bp_core_add_message( __('Conversation quitted.', 'buddypress') );
+		}
+		bp_core_redirect( trailingslashit( bp_displayed_user_domain() . bp_get_messages_slug() . '/inbox' ) );
+	}
+}
+add_action( 'bp_actions', 'messages_action_quit_thread' );
+
+/**
  * Handle marking a single message thread as read.
  *
  * @since 2.2.0
diff --git a/src/bp-messages/bp-messages-functions.php b/src/bp-messages/bp-messages-functions.php
index 39a3c55..ad48e5c 100644
--- a/src/bp-messages/bp-messages-functions.php
+++ b/src/bp-messages/bp-messages-functions.php
@@ -349,6 +349,19 @@ function messages_mark_thread_unread( $thread_id ) {
 }
 
 /**
+ * Quit a thread.
+ *
+ * Wrapper for {@link BP_Messages_Thread::quit_thread()}.
+ *
+ * @param int $thread_id ID of the thread.
+ *
+ * @return bool.
+ */
+function messages_quit_thread( $thread_id, $user_id = 0 ) {
+	return BP_Messages_Thread::quit_thread( $thread_id, $user_id);
+}
+
+/**
  * Set messages-related cookies.
  *
  * Saves the 'bp_messages_send_to', 'bp_messages_subject', and
diff --git a/src/bp-messages/bp-messages-template.php b/src/bp-messages/bp-messages-template.php
index 12ec655..1a66066 100644
--- a/src/bp-messages/bp-messages-template.php
+++ b/src/bp-messages/bp-messages-template.php
@@ -1620,6 +1620,16 @@ function bp_the_thread_subject() {
 	}
 
 /**
+ * Get the sender ID of the first message of the thread currently being iterated over.
+ *
+ * @return integer
+*/
+function bp_get_thread_first_sender_id() {
+	global $thread_template;
+	return $thread_template->thread->first_sender_id;
+}
+	
+/**
  * Get a list of thread recipients or a "x recipients" string.
  *
  * In BuddyPress 2.2.0, this parts of this functionality were moved into the
@@ -1996,7 +2006,35 @@ function bp_the_thread_delete_link() {
 		 */
 		return apply_filters( 'bp_get_message_thread_delete_link', wp_nonce_url( bp_displayed_user_domain() . bp_get_messages_slug() . '/inbox/delete/' . bp_get_the_thread_id(), 'messages_delete_thread' ) );
 	}
+	
+/**
+ * Output the URL for quitting the current thread.
+ *
+ * @since 
+ */
+function bp_the_quit_thread_link() {
+	echo esc_url( bp_get_the_quit_thread_link() );
+}
+	/**
+	 * Get the URL for quitting the current thread.
+	 *
+	 * @since 
+	 *
+	 * @return string URL
+	 */
+	function bp_get_the_quit_thread_link() {
 
+		/**
+		 * Filters the URL for quitting the current thread.
+		 *
+		 * @since 
+		 *
+		 * @param string $value URL for quitting the current thread.
+		 * @param string $value Text indicating action being executed.
+		 */
+		return apply_filters( 'bp_get_message_quit_thread_link', wp_nonce_url( bp_displayed_user_domain() . bp_get_messages_slug() . '/inbox/quit/' . bp_get_the_thread_id(), 'messages_quit_thread' ) );
+	}	
+	
 /**
  * Output the 'Sent x hours ago' string for the current message.
  *
diff --git a/src/bp-messages/classes/class-bp-messages-thread.php b/src/bp-messages/classes/class-bp-messages-thread.php
index c868d55..0beb0ca 100644
--- a/src/bp-messages/classes/class-bp-messages-thread.php
+++ b/src/bp-messages/classes/class-bp-messages-thread.php
@@ -96,6 +96,14 @@ class BP_Messages_Thread {
 	 * @var int
 	 */
 	public $last_sender_id;
+	
+	/**
+	 * The user ID of the author of the first message in this thread.
+	 *
+	 * @since 1.2.0
+	 * @var int
+	 */
+	public $first_sender_id;
 
 	/**
 	 * Sort order of the messages in this thread (ASC or DESC).
@@ -164,6 +172,8 @@ class BP_Messages_Thread {
 		if ( empty( $this->messages ) || is_wp_error( $this->messages ) ) {
 			return false;
 		}
+		
+		$this->first_sender_id       = $this->messages[ 0 ]->sender_id;
 
 		// Flip if order is DESC.
 		if ( 'DESC' === $order ) {
@@ -675,6 +685,41 @@ class BP_Messages_Thread {
 
 		return $retval;
 	}
+	
+	/**
+	 * Quite a multi-recipient thread.
+	 *
+	 * @since 
+	 *
+	 * @param int $thread_id The message thread ID.
+	 *
+	 * @return bool.
+	 */
+	public static function quit_thread( $thread_id = 0, $user_id = 0 ) {
+
+		if ( empty( $user_id ) ) {
+			$user_id = bp_loggedin_user_id();
+		}
+		global $wpdb;
+
+		$bp     = buddypress();
+		
+		$retval = $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->messages->table_name_recipients} WHERE thread_id = %d  AND user_id = %d", $thread_id, $user_id ) );
+		
+		wp_cache_delete( "thread_recipients_{$thread_id}", 'bp_messages' );			
+		wp_cache_delete( $user_id, 'bp_messages_unread_count' );
+
+		/**
+		 * Fires when messages thread was quitted.
+		 *
+		 * @since 2.8.0
+		 *
+		 * @param int $thread_id The message thread ID.
+		 */
+		do_action( 'messages_thread_quitted', $thread_id, $user_id );
+
+		return $retval;
+	}
 
 	/**
 	 * Returns the total number of message threads for a user.
@@ -904,4 +949,5 @@ class BP_Messages_Thread {
 
 		return (bool) ! $errors;
 	}
+
 }
