Index: bp-core/bp-core-theme-compatibility.php
===================================================================
--- bp-core/bp-core-theme-compatibility.php
+++ bp-core/bp-core-theme-compatibility.php
@@ -48,7 +48,7 @@ class BP_Theme_Compat {
 	 * );
 	 * @var array 
 	 */
-	private $_data = array();
+	protected $_data = array();
 
 	/**
 	 * Pass the $properties to the object on creation.
@@ -60,6 +60,64 @@ class BP_Theme_Compat {
 		$this->_data = $properties;
 	}
 
+	
+	/**
+	 * Themes shoud use this method in their constructor.
+	 *
+	 * In this method, we check all types of conditions where theme compatibility
+	 * should *not* run.
+	 *
+	 * If we pass all conditions, then we setup some additional methods to use.
+	 *
+	 * @since BuddyPress (1.7)
+	 */
+	protected function start() {
+		// Check for multisite and if BP is in multiblog mode
+		if ( is_multisite() && ! bp_is_multiblog_mode() ) {
+			// If we're not in multiblog mode, check if we're on the root blog.
+			// If we're not on the root blog, we shouldn't load theme compat.
+			if ( ! bp_is_root_blog() ) {
+				return;
+			}
+		}
+
+		// If the theme supports 'buddypress', bail.
+		if ( current_theme_supports( 'buddypress' ) ) {
+			return;
+
+		// If the theme doesn't support BP, do some additional checks
+		} else {
+			// Bail if theme is a derivative of bp-default
+			if ( in_array( 'bp-default', array( get_template(), get_stylesheet() ) ) ) {
+				return;
+			}
+
+			// Bruteforce check for a BP template
+			// Examples are clones of bp-default
+			if ( locate_template( 'members/members-loop.php', false, false ) ) {
+				return;
+			}
+		}
+
+		// Setup methods
+		$this->setup_globals();
+		$this->setup_actions();
+	}
+
+	/**
+	 * Meant to be extended in your class.
+	 *
+	 * @since BuddyPress (1.7)
+	 */
+	protected function setup_globals() {}
+
+	/**
+	 * Meant to be extended in your class.
+	 *
+	 * @since BuddyPress (1.7)
+	 */
+	protected function setup_actions() {}
+
 	/**
 	 * Set a theme's property.
 	 *
Index: bp-templates/bp-legacy/buddypress-functions.php
===================================================================
--- bp-templates/bp-legacy/buddypress-functions.php
+++ bp-templates/bp-legacy/buddypress-functions.php
@@ -45,19 +45,7 @@ class BP_Legacy extends BP_Theme_Compat {
 	 * @uses BP_Legacy::setup_actions()
 	 */
 	public function __construct() {
-
-		// Bail if theme is a derivative of bp-default
-		if ( in_array( 'bp-default', array( get_template(), get_stylesheet() ) ) ) {
-			return;
-		}
-
-		// Or if the theme supports 'buddypress'
-		if ( current_theme_supports( 'buddypress' ) ) {
-			return;
-		}
-
-		$this->setup_globals();
-		$this->setup_actions();
+		parent::start();
 	}
 
 	/**
@@ -73,7 +61,7 @@ class BP_Legacy extends BP_Theme_Compat {
 	 * @since BuddyPress (1.7)
 	 * @access private
 	 */
-	private function setup_globals() {
+	protected function setup_globals() {
 		$bp            = buddypress();
 		$this->id      = 'legacy';
 		$this->name    = __( 'BuddyPress Legacy', 'buddypress' );
@@ -91,7 +79,7 @@ class BP_Legacy extends BP_Theme_Compat {
 	 * @uses add_filter() To add various filters
 	 * @uses add_action() To add various actions
 	 */
-	private function setup_actions() {
+	protected function setup_actions() {
 
 		// Template Output
 		add_filter( 'bp_get_activity_action_pre_meta', array( $this, 'secondary_avatars' ), 10, 2 );
