Index: bp-core/admin/bp-core-upgrade.php
===================================================================
--- bp-core/admin/bp-core-upgrade.php	(revision 3359)
+++ bp-core/admin/bp-core-upgrade.php	(working copy)
@@ -1,10 +1,44 @@
 <?php
-
 require_once( dirname( dirname( __FILE__ ) ) . '/bp-core-wpabstraction.php' );
 
 if ( function_exists( 'register_theme_directory') )
 	register_theme_directory( WP_PLUGIN_DIR . '/buddypress/bp-themes' );
 
+/* Install site options on activation */
+bp_core_activate_site_options( array( 'bp-disable-account-deletion' => 0, 'bp-disable-avatar-uploads' => 0, 'bp-disable-blogforum-comments' => 0,  'bp-disable-forum-directory' => 0,  'bp-disable-profile-sync' => 0 ) );
+
+/**
+ * bp_core_activate_site_options()
+ *
+ * When switching from single to multisite we need to copy blog options to
+ * site options.
+ *
+ * @package BuddyPress Core
+ */
+function bp_core_activate_site_options( $keys = array() ) {
+	global $bp;
+
+	$bp->site_options = bp_core_get_site_options();
+
+	if ( !empty( $keys ) && is_array( $keys ) ) {
+		$errors = false;
+
+		foreach ( $keys as $key => $default ) {
+			if ( empty( $bp->site_options[ $key ] ) ) {
+				$bp->site_options[ $key ] = get_blog_option( BP_ROOT_BLOG, $key, $default );
+
+				if ( !update_site_option( $key, $bp->site_options[ $key ] ) )
+					$errors = true;
+			}
+		}
+
+		if ( empty( $errors ) )
+			return true;
+	}
+
+	return false;
+}
+
 class BP_Core_Setup_Wizard {
 	var $current_step;
 	var $steps;
@@ -1085,5 +1119,4 @@
 	</style>
 <?php
 }
-
 ?>
\ No newline at end of file
Index: bp-loader.php
===================================================================
--- bp-loader.php	(revision 3359)
+++ bp-loader.php	(working copy)
@@ -76,8 +76,59 @@
 	do_action( 'bp_loaded' );
 }
 
+/**
+ * bp_core_get_site_options()
+ *
+ * BuddyPress uses site options to store configuration settings. Many of these settings are needed
+ * at run time. Instead of fetching them all and adding many initial queries to each page load, let's fetch
+ * them all in one go.
+ *
+ * @package BuddyPress Core
+ */
+function bp_core_get_site_options() {
+	global $bp, $wpdb;
+
+	$options = apply_filters( 'bp_core_site_options', array(
+		'bp-deactivated-components',
+		'bp-blogs-first-install',
+		'bp-disable-blog-forum-comments',
+		'bp-xprofile-base-group-name',
+		'bp-xprofile-fullname-field-name',
+		'bp-disable-profile-sync',
+		'bp-disable-avatar-uploads',
+		'bp-disable-account-deletion',
+		'bp-disable-forum-directory',
+		'bp-disable-blogforum-comments',
+		'bb-config-location',
+		'hide-loggedout-adminbar',
+
+		/* Useful WordPress settings used often */
+		'user-avatar-default',
+		'tags_blog_id',
+		'registration',
+		'fileupload_maxk'
+	) );
+
+	$meta_keys = "'" . implode( "','", (array)$options ) ."'";
+
+	if ( is_multisite() )
+		$meta = $wpdb->get_results( "SELECT meta_key AS name, meta_value AS value FROM {$wpdb->sitemeta} WHERE meta_key IN ({$meta_keys}) AND site_id = {$wpdb->siteid}" );
+	else
+		$meta = $wpdb->get_results( "SELECT option_name AS name, option_value AS value FROM {$wpdb->options} WHERE option_name IN ({$meta_keys})" );
+
+	$site_options = array();
+	if ( !empty( $meta ) ) {
+		foreach( (array)$meta as $meta_item )
+			$site_options[$meta_item->name] = $meta_item->value;
+	}
+
+	return apply_filters( 'bp_core_get_site_options', $site_options );
+}
+
 /* Activation Function */
 function bp_loader_activate() {
+	global $bp;
+
 	/* Force refresh theme roots. */
 	delete_site_transient( 'theme_roots' );
 
@@ -85,10 +136,6 @@
 	if ( 'bp-sn-parent' == get_blog_option( BP_ROOT_BLOG, 'template' ) && 'bp-default' == get_blog_option( BP_ROOT_BLOG, 'stylesheet' ) )
 		switch_theme( 'bp-default', 'bp-default' );
 
-	/* Install site options on activation */
-	//TODO: Find where to put this back. Here is no good because bp-core.php isn't loaded on new installation.
-	//bp_core_activate_site_options( array( 'bp-disable-account-deletion' => 0, 'bp-disable-avatar-uploads' => 0, 'bp-disable-blogforum-comments' => 0,  'bp-disable-forum-directory' => 0,  'bp-disable-profile-sync' => 0 ) );
-
 	do_action( 'bp_loader_activate' );
 }
 register_activation_hook( 'buddypress/bp-loader.php', 'bp_loader_activate' );
Index: bp-core.php
===================================================================
--- bp-core.php	(revision 3359)
+++ bp-core.php	(working copy)
@@ -1552,55 +1552,6 @@
 }
 
 /**
- * bp_core_get_site_options()
- *
- * BuddyPress uses site options to store configuration settings. Many of these settings are needed
- * at run time. Instead of fetching them all and adding many initial queries to each page load, let's fetch
- * them all in one go.
- *
- * @package BuddyPress Core
- */
-function bp_core_get_site_options() {
-	global $bp, $wpdb;
-
-	$options = apply_filters( 'bp_core_site_options', array(
-		'bp-deactivated-components',
-		'bp-blogs-first-install',
-		'bp-disable-blog-forum-comments',
-		'bp-xprofile-base-group-name',
-		'bp-xprofile-fullname-field-name',
-		'bp-disable-profile-sync',
-		'bp-disable-avatar-uploads',
-		'bp-disable-account-deletion',
-		'bp-disable-forum-directory',
-		'bp-disable-blogforum-comments',
-		'bb-config-location',
-		'hide-loggedout-adminbar',
-
-		/* Useful WordPress settings used often */
-		'user-avatar-default',
-		'tags_blog_id',
-		'registration',
-		'fileupload_maxk'
-	) );
-
-	$meta_keys = "'" . implode( "','", (array)$options ) ."'";
-
-	if ( is_multisite() )
-		$meta = $wpdb->get_results( "SELECT meta_key AS name, meta_value AS value FROM {$wpdb->sitemeta} WHERE meta_key IN ({$meta_keys}) AND site_id = {$wpdb->siteid}" );
-	else
-		$meta = $wpdb->get_results( "SELECT option_name AS name, option_value AS value FROM {$wpdb->options} WHERE option_name IN ({$meta_keys})" );
-
-	$site_options = array();
-	if ( !empty( $meta ) ) {
-		foreach( (array)$meta as $meta_item )
-			$site_options[$meta_item->name] = $meta_item->value;
-	}
-
-	return apply_filters( 'bp_core_get_site_options', $site_options );
-}
-
-/**
  * bp_core_redirect()
  *
  * Performs a status safe wp_redirect() that is compatible with bp_catch_uri()
@@ -1994,36 +1945,7 @@
 }
 add_action( 'admin_notices', 'bp_core_activation_notice' );
 
-/**
- * bp_core_activate_site_options()
- *
- * When switching from single to multisite we need to copy blog options to
- * site options.
- *
- * @package BuddyPress Core
- */
-function bp_core_activate_site_options( $keys = array() ) {
-	global $bp;
 
-	if ( !empty( $keys ) && is_array( $keys ) ) {
-		$errors = false;
-
-		foreach ( $keys as $key => $default ) {
-			if ( empty( $bp->site_options[ $key ] ) ) {
-				$bp->site_options[ $key ] = get_blog_option( BP_ROOT_BLOG, $key, $default );
-
-				if ( !update_site_option( $key, $bp->site_options[ $key ] ) )
-					$errors = true;
-			}
-		}
-
-		if ( empty( $errors ) )
-			return true;
-	}
-
-	return false;
-}
-
 /********************************************************************************
  * Custom Actions
  *
