Index: bp-themes/bp-default/functions.php
===================================================================
--- bp-themes/bp-default/functions.php	(revision 3725)
+++ bp-themes/bp-default/functions.php	(working copy)
@@ -40,11 +40,11 @@
  * Temporary work-around to prevent errors with bp-default being active
  * when BuddyPress is not installed.
  */
-if ( !constant( 'BP_VERSION' ) || !get_site_option( 'bp-db-version' ) ) {
+/*if ( !constant( 'BP_VERSION' ) || !get_site_option( 'bp-db-version' ) ) {
 	switch_theme( 'twentyten', 'twentyten' );
 	wp_redirect( $_SERVER['HTTP_REFERER'] );
 	exit;
-}
+}*/
 
 if ( !function_exists( 'bp_dtheme_setup' ) ) :
 /**
Index: bp-core/admin/bp-core-update.php
===================================================================
--- bp-core/admin/bp-core-update.php	(revision 3725)
+++ bp-core/admin/bp-core-update.php	(working copy)
@@ -1,47 +1,5 @@
 <?php
 
-if ( !defined( 'BP_ROOT_BLOG' ) )
-	define( 'BP_ROOT_BLOG', 1 );
-
-require_once( dirname( dirname( __FILE__ ) ) . '/bp-core-wpabstraction.php' );
-
-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;
@@ -819,6 +777,10 @@
 			if ( $this->current_version < 1225 )
 				$this->update_1_3();
 
+			// Update the DB version in the database
+			update_site_option( 'bp-db-version', constant( 'BP_DB_VERSION' ) );
+			delete_site_option( 'bp-core-db-version' );
+
 			return true;
 		}
 
@@ -1045,7 +1007,7 @@
 	function step_finish_save() {
 		if ( isset( $_POST['submit'] ) ) {
 			check_admin_referer( 'bpwizard_finish' );
-
+			
 			// Delete the setup cookie
 			@setcookie( 'bp-wizard-step', '', time() - 3600, COOKIEPATH );
 
@@ -1183,13 +1145,13 @@
 }
 
 /**
- * bp_core_add_admin_menu_page()
+ * bp_core_update_add_admin_menu_page()
  *
  * A better version of add_admin_menu_page() that allows positioning of menus.
  *
  * @package BuddyPress Core
  */
-function bp_core_add_admin_menu_page( $args = '' ) {
+function bp_core_update_add_admin_menu_page( $args = '' ) {
 	global $menu, $admin_page_hooks, $_registered_pages;
 
 	$defaults = array(
@@ -1246,7 +1208,7 @@
 add_action( 'admin_footer', 'bp_core_wizard_thickbox' );
 
 /**
- * bp_core_add_admin_menu()
+ * bp_core_update_add_admin_menu()
  *
  * Adds the "BuddyPress" admin submenu item to the Site Admin tab.
  *
@@ -1255,9 +1217,13 @@
  * @global $wpdb WordPress DB access object.
  * @uses add_submenu_page() WP function to add a submenu item
  */
-function bp_core_add_admin_menu() {
+function bp_core_update_add_admin_menu() {
 	global $bp_wizard;
 
+	// Only load this version of the menu if this is an upgrade or a new installation 
+	if ( ( !defined( 'BP_IS_UPGRADE' ) || !BP_IS_UPGRADE ) && ( !defined( 'BP_IS_INSTALL' ) || !BP_IS_INSTALL ) ) 
+		return false; 
+	
 	if ( !current_user_can( 'activate_plugins' ) )
 		return false;
 
@@ -1267,7 +1233,7 @@
 		$status = __( 'Update', 'buddypress' );
 
 	// Add the administration tab under the "Site Admin" tab for site administrators
-	bp_core_add_admin_menu_page( array(
+	bp_core_update_add_admin_menu_page( array(
 		'menu_title'   => __( 'BuddyPress', 'buddypress' ),
 		'page_title'   => __( 'BuddyPress', 'buddypress' ),
 		'capability'   => 'manage_options',
@@ -1279,11 +1245,11 @@
 	$hook = add_submenu_page( 'bp-wizard', $status, $status, 'manage_options', 'bp-wizard', array( $bp_wizard, 'html' ) );
 
 	// Add a hook for css/js
-	add_action( "admin_print_styles-$hook", 'bp_core_add_admin_menu_styles' );
+	add_action( "admin_print_styles-$hook", 'bp_core_update_add_admin_menu_styles' );
 }
-add_action( is_multisite() ? 'network_admin_menu' : 'admin_menu',  'bp_core_add_admin_menu', 9 );
+add_action( is_multisite() ? 'network_admin_menu' : 'admin_menu',  'bp_core_update_add_admin_menu', 9 );
 
-function bp_core_add_admin_menu_styles() {
+function bp_core_update_add_admin_menu_styles() {
 	if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG )
 		wp_enqueue_style( 'bp-admin-css', apply_filters( 'bp_core_admin_css', plugins_url( $path = '/buddypress' ) . '/bp-core/css/admin.dev.css' ) );
 	else
@@ -1312,4 +1278,30 @@
 <?php
 }
 add_action( 'admin_head', 'bp_core_add_admin_menu_styles' );
+
+/** 
+ * Adds an admin nag about running the BP upgrade/install wizard 
+ * 
+ * @package BuddyPress Core 
+ * @since 1.3 
+ * @global $pagenow The current admin page 
+ */ 
+ function bp_core_update_nag() { 
+ 	global $pagenow; 
+ 	
+ 	if ( !is_super_admin() ) 
+ 		return; 
+ 	
+ 	if ( 'admin.php' == $pagenow && ( empty( $_GET['page'] ) || 'bp-wizard' == $_GET['page'] ) ) 
+ 		return; 
+ 	
+ 	if ( defined( 'BP_IS_UPGRADE' ) && BP_IS_UPGRADE ) 
+ 		$msg = sprintf( __( 'BuddyPress has been updated! Please run the <a href="%s">upgrade wizard</a>.', 'buddypress' ), admin_url( 'admin.php?page=bp-wizard' ) ); 
+ 	else if ( defined( 'BP_IS_INSTALL' ) && BP_IS_INSTALL ) 
+ 		$msg = sprintf( __( 'BuddyPress has been installed! Please run the <a href="%s">upgrade wizard</a>.', 'buddypress' ), admin_url( 'admin.php?page=bp-wizard' ) ); 
+                 
+ 	echo "<div class='update-nag'>$msg</div>"; 
+} 
+add_action( 'admin_notices', 'bp_core_update_nag', 5 ); 
+
 ?>
\ No newline at end of file
Index: bp-loader.php
===================================================================
--- bp-loader.php	(revision 3725)
+++ bp-loader.php	(working copy)
@@ -10,23 +10,24 @@
 */
 
 define( 'BP_VERSION', '1.3-bleeding' );
-define( 'BP_DB_VERSION', 1225 );
+define( 'BP_DB_VERSION', 3704 );
 
 // Define on which blog ID BuddyPress should run
 if ( !defined( 'BP_ROOT_BLOG' ) )
 	define( 'BP_ROOT_BLOG', 1 );
 
-/***
- * Check if this is the first time BuddyPress has been loaded, or the first time
- * since an update. If so, load the install/update routine only.
- */
-if ( get_site_option( 'bp-db-version' ) < constant( 'BP_DB_VERSION' ) ) {
+// Register BuddyPress themes contained within the bp-themes folder 
+register_theme_directory( WP_PLUGIN_DIR . '/buddypress/bp-themes' ); 
+	 
+// Test to see whether this is a new installation or an upgraded version of BuddyPress 
+$bp_db_version = get_site_option( 'bp-db-version' ); 
+if ( ! $bp_db_version ) 
+	$bp_db_version = get_site_option( 'bp-core-db-version' );  // BP 1.2 option name 
+	 
+if ( ! $bp_db_version ) {
+ 	// This is a new installation. Run the wizard before loading BP core files
+ 	define( 'BP_IS_INSTALL', true ); 
 	require_once( WP_PLUGIN_DIR . '/buddypress/bp-core/admin/bp-core-update.php' );
-
-/***
- * If the install or update routine is completed and everything is up to date
- * continue loading BuddyPress as normal.
- */
 } else {
 	/***
 	 * This file will load in each BuddyPress component based on which
@@ -64,6 +65,12 @@
 	/* Extended Profiles */
 	if ( !isset( $bp_deactivated['bp-xprofile.php'] ) && file_exists( BP_PLUGIN_DIR . '/bp-xprofile.php') )
 		include( BP_PLUGIN_DIR . '/bp-xprofile.php' );
+		
+	// If this is an upgrade, load the upgrade file 
+ 	if ( $bp_db_version < constant( 'BP_DB_VERSION' ) ) { 
+ 		define( 'BP_IS_UPGRADE', true ); 
+ 		require_once( WP_PLUGIN_DIR . '/buddypress/bp-core/admin/bp-core-update.php' ); 
+ 	} 
 
 	add_action( 'plugins_loaded', 'bp_loaded', 20 );
 }
@@ -140,11 +147,22 @@
 	return apply_filters( 'bp_core_get_site_options', $site_options );
 }
 
-/* Activation Function */
+/** 
+ * Defines BP's activation routine. 
+ * 
+ * Most of BP's crucial setup is handled by the setup wizard. This function takes care of some 
+ * issues with incompatible legacy themes, and provides a hook for other functions to know that 
+ * BP has been activated. 
+ * 
+ * @package BuddyPress Core 
+ */ 
 function bp_loader_activate() {
 	/* Force refresh theme roots. */
 	delete_site_transient( 'theme_roots' );
 
+	if ( !function_exists( 'get_blog_option' ) )
+		require ( WP_PLUGIN_DIR . '/buddypress/bp-core/bp-core-wpabstraction.php' );
+
 	/* Switch the user to the new bp-default if they are using the old bp-default on activation. */
 	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' );
Index: bp-core.php
===================================================================
--- bp-core.php	(revision 3725)
+++ bp-core.php	(working copy)
@@ -42,10 +42,7 @@
 if ( !defined( 'BP_DISABLE_ADMIN_BAR' ) )
 	require ( BP_PLUGIN_DIR . '/bp-core/bp-core-adminbar.php' );
 
-/* Register BuddyPress themes contained within the bp-theme folder */
-register_theme_directory( WP_PLUGIN_DIR . '/buddypress/bp-themes' );
 
-
 /* "And now for something completely different" .... */
 
 
@@ -313,6 +310,11 @@
 function bp_core_add_admin_menu() {
 	if ( !is_super_admin() )
 		return false;
+	
+	// Don't add this version of the admin menu if a BP upgrade is in progress 
+ 	// See bp_core_update_add_admin_menu() 
+	if ( defined( 'BP_IS_UPGRADE' ) && BP_IS_UPGRADE ) 
+ 		return false; 
 
 	// Add the administration tab under the "Site Admin" tab for site administrators
 	$hook = bp_core_add_admin_menu_page( array(
@@ -1969,7 +1971,7 @@
 	} else {
 		/* Get current theme info */
 		$ct = current_theme_info();
-
+		
 		/* The best way to remove this notice is to add a "buddypress" tag to your active theme's CSS header. */
 		if ( !defined( 'BP_SILENCE_THEME_NOTICE' ) && !in_array( 'buddypress', (array)$ct->tags ) ) { ?>
 			<div id="message" class="updated fade">
