diff --git bp-blogs/bp-blogs-functions.php bp-blogs/bp-blogs-functions.php
index d032cfb..8bd441c 100644
--- bp-blogs/bp-blogs-functions.php
+++ bp-blogs/bp-blogs-functions.php
@@ -970,3 +970,21 @@ function bp_blogs_remove_data( $user_id ) {
 add_action( 'wpmu_delete_user',  'bp_blogs_remove_data' );
 add_action( 'delete_user',       'bp_blogs_remove_data' );
 add_action( 'bp_make_spam_user', 'bp_blogs_remove_data' );
+
+/**
+ * Display the number of blogs in user's Admin Profile.
+ *
+ * @param  int $user_id the ID of user displayed.
+ * @return string HTML for stats output.
+ */
+function bp_blogs_admin_profile_stats( $user_id = 0 ) {
+	if ( ! is_multisite() )
+		return false;
+
+	if ( $blogs_amount = bp_blogs_total_blogs_for_user( $user_id ) ) {
+		?>
+		<li><div class="dashicons dashicons-blogs"></div> <?php printf( _n( '1 site', '<strong>%s</strong> sites', $blogs_amount, 'buddypress' ), $blogs_amount );?></li>
+		<?php
+	}
+}
+add_action( 'bp_members_admin_user_stats', 'bp_blogs_admin_profile_stats', 12, 1 );
diff --git bp-friends/bp-friends-functions.php bp-friends/bp-friends-functions.php
index 859654b..d450d8a 100644
--- bp-friends/bp-friends-functions.php
+++ bp-friends/bp-friends-functions.php
@@ -546,3 +546,18 @@ function friends_remove_data( $user_id ) {
 add_action( 'wpmu_delete_user',  'friends_remove_data' );
 add_action( 'delete_user',       'friends_remove_data' );
 add_action( 'bp_make_spam_user', 'friends_remove_data' );
+
+/**
+ * Display the number of friends in user's Admin Profile.
+ *
+ * @param  int $user_id The ID of user displayed.
+ * @return string HTML for stats output.
+ */
+function friends_admin_profile_stats( $user_id = 0 ) {
+	if ( $friends_amount = friends_get_total_friend_count( $user_id ) ) {
+		?>
+		<li><div class="dashicons dashicons-friends"></div> <?php printf( _n( '1 friend', '<strong>%s</strong> friends', $friends_amount, 'buddypress' ), $friends_amount );?></li>
+		<?php
+	}
+}
+add_action( 'bp_members_admin_user_stats', 'friends_admin_profile_stats', 10, 1 );
diff --git bp-groups/bp-groups-functions.php bp-groups/bp-groups-functions.php
index 072bdd8..4686b61 100644
--- bp-groups/bp-groups-functions.php
+++ bp-groups/bp-groups-functions.php
@@ -1056,3 +1056,19 @@ function groups_remove_data_for_user( $user_id ) {
 add_action( 'wpmu_delete_user',  'groups_remove_data_for_user' );
 add_action( 'delete_user',       'groups_remove_data_for_user' );
 add_action( 'bp_make_spam_user', 'groups_remove_data_for_user' );
+
+
+/**
+ * Display the number of groups in user's Admin Profile.
+ *
+ * @param  int $user_id The ID of user displayed.
+ * @return string HTML for stats output.
+ */
+function groups_admin_profile_stats( $user_id = 0 ) {
+	if ( $groups_amount = bp_get_total_group_count_for_user( $user_id ) ) {
+		?>
+		<li><div class="dashicons dashicons-groups"></div> <?php printf( _n( '1 group', '<strong>%s</strong> groups', $groups_amount, 'buddypress' ), $groups_amount );?></li>
+		<?php
+	}
+}
+add_action( 'bp_members_admin_user_stats', 'groups_admin_profile_stats', 11, 1 );
diff --git bp-members/admin/css/admin.css bp-members/admin/css/admin.css
new file mode 100644
index 0000000..32eef85
--- /dev/null
+++ bp-members/admin/css/admin.css
@@ -0,0 +1,119 @@
+/**** BP Members Profile Administration Screens ****/
+
+div#profile-page.wrap form#your-profile {
+	position:relative;
+}
+
+div#profile-page.wrap form#your-profile h3:first-of-type {
+	margin-top:6em;
+}
+
+div#profile-page.wrap form#your-profile ul#profile-nav {
+	position:absolute;
+	top:-6em;
+	border-bottom:solid 1px #ccc;
+	width:100%;
+}
+
+div#community-profile-page h2:first-of-type {
+	margin-bottom:1em;
+}
+
+div#community-profile-page  h2.profile-section {
+	border-bottom:dotted 1px #ccc;
+}
+
+div#community-profile-page ul#profile-nav {
+	border-bottom:solid 1px #ccc;
+	width:100%;
+	margin-top:1em;
+	margin-bottom:1em;
+	padding:1em 0;
+	padding-bottom: 0;
+	height:2.4em;
+}
+
+form#your-profile ul#profile-nav li,
+div#community-profile-page ul#profile-nav li {
+	margin-left:0.4em;
+	float:left;
+	font-weight: bold;
+	font-size: 15px;
+	line-height: 24px;
+}
+
+form#your-profile ul#profile-nav li a,
+div#community-profile-page ul#profile-nav li a {
+	text-decoration: none;
+	color:#888;
+}
+
+form#your-profile ul#profile-nav li a:hover,
+form#your-profile ul#profile-nav li.nav-tab-active a,
+div#community-profile-page ul#profile-nav li a:hover,
+div#community-profile-page ul#profile-nav li.nav-tab-active a {
+	text-decoration: none;
+	color:#000;
+}
+
+div#community-profile-page div.dashicons-last-active:before {
+	content: "\f130";
+}
+
+div#community-profile-page div.dashicons-friends:before {
+	content: "\f454";
+}
+
+div#community-profile-page div.dashicons-groups:before {
+	content: "\f456";
+}
+
+div#community-profile-page div.dashicons-blogs:before {
+	content: "\f120";
+}
+
+div#community-profile-page div#bp_xprofile_user_admin_avatar div.avatar {
+	width:150px;
+	margin:0 auto;
+}
+
+div#community-profile-page div#bp_xprofile_user_admin_avatar a {
+	display:block;
+	margin:1em 0;
+	text-decoration:none;
+	color:#888;
+}
+
+div#community-profile-page p.not-activated {
+	margin:1em 1em 0;
+	color:red;
+}
+
+div#community-profile-page .form-table td.admin-field-visibility-td {
+	padding:5px 5px 15px 5px;
+}
+
+div#community-profile-page .form-table tr.admin-field-visibility-tr {
+	border-bottom:dotted 1px #ccc;
+}
+
+div#community-profile-page .form-table tr.admin-field-visibility-tr:last-child{
+	border:none;
+}
+
+div#community-profile-page .field-visibility-settings legend, 
+div#community-profile-page .field-visibility-settings-notoggle {
+	font-size: 14px;
+	font-style: italic;
+	color:#666;
+}
+
+div#community-profile-page .field-visibility-settings ul {
+	margin:0;
+	font-size: 13px;
+}
+
+div#community-profile-page .field-visibility-settings ul li {
+	display:inline-block;
+	margin-right:1em;
+}
diff --git bp-members/admin/css/admin.min.css bp-members/admin/css/admin.min.css
new file mode 100644
index 0000000..238ff55
--- /dev/null
+++ bp-members/admin/css/admin.min.css
@@ -0,0 +1 @@
+div#profile-page.wrap form#your-profile{position:relative}div#profile-page.wrap form#your-profile h3:first-of-type{margin-top:6em}div#profile-page.wrap form#your-profile ul#profile-nav{position:absolute;top:-6em;border-bottom:solid 1px #ccc;width:100%}div#community-profile-page h2:first-of-type{margin-bottom:1em}div#community-profile-page h2.profile-section{border-bottom:dotted 1px #ccc}div#community-profile-page ul#profile-nav{border-bottom:solid 1px #ccc;width:100%;margin-top:1em;margin-bottom:1em;padding:1em 0;padding-bottom:0;height:2.4em}div#community-profile-page ul#profile-nav li,form#your-profile ul#profile-nav li{margin-left:.4em;float:left;font-weight:700;font-size:15px;line-height:24px}div#community-profile-page ul#profile-nav li a,form#your-profile ul#profile-nav li a{text-decoration:none;color:#888}div#community-profile-page ul#profile-nav li a:hover,div#community-profile-page ul#profile-nav li.nav-tab-active a,form#your-profile ul#profile-nav li a:hover,form#your-profile ul#profile-nav li.nav-tab-active a{text-decoration:none;color:#000}div#community-profile-page div.dashicons-last-active:before{content:"\f130"}div#community-profile-page div.dashicons-friends:before{content:"\f454"}div#community-profile-page div.dashicons-groups:before{content:"\f456"}div#community-profile-page div.dashicons-blogs:before{content:"\f120"}div#community-profile-page div#bp_xprofile_user_admin_avatar div.avatar{width:150px;margin:0 auto}div#community-profile-page div#bp_xprofile_user_admin_avatar a{display:block;margin:1em 0;text-decoration:none;color:#888}div#community-profile-page p.not-activated{margin:1em 1em 0;color:red}div#community-profile-page .form-table td.admin-field-visibility-td{padding:5px 5px 15px}div#community-profile-page .form-table tr.admin-field-visibility-tr{border-bottom:dotted 1px #ccc}div#community-profile-page .form-table tr.admin-field-visibility-tr:last-child{border:0}div#community-profile-page .field-visibility-settings legend,div#community-profile-page .field-visibility-settings-notoggle{font-size:14px;font-style:italic;color:#666}div#community-profile-page .field-visibility-settings ul{margin:0;font-size:13px}div#community-profile-page .field-visibility-settings ul li{display:inline-block;margin-right:1em}
\ No newline at end of file
diff --git bp-members/admin/js/admin.js bp-members/admin/js/admin.js
new file mode 100644
index 0000000..df95205
--- /dev/null
+++ bp-members/admin/js/admin.js
@@ -0,0 +1,53 @@
+(function( $ ) {
+
+	/** Profile Visibility Settings *********************************/
+	$('.field-visibility-settings').hide();
+	$('.visibility-toggle-link').on( 'click', function( event ) {
+
+		event.preventDefault();
+
+		var toggle_div = $(this).parent();
+
+		$(toggle_div).fadeOut( 600, function(){
+			$(toggle_div).siblings('.field-visibility-settings').slideDown(400);
+		});
+
+	} );
+
+	$('.field-visibility-settings-close').on( 'click', function( event ) {
+
+		event.preventDefault();
+
+		var settings_div = $(this).parent();
+		var vis_setting_text = settings_div.find('input:checked').parent().text();
+
+		settings_div.slideUp( 400, function() {
+			settings_div.siblings('.field-visibility-settings-toggle').fadeIn(800);
+			settings_div.siblings('.field-visibility-settings-toggle').children('.current-visibility-level').html(vis_setting_text);
+		} );
+
+		return false;
+	} );
+
+})(jQuery);
+
+
+function clear(container) {
+	if( !document.getElementById(container) ) return;
+
+	var container = document.getElementById(container);
+
+	if ( radioButtons = container.getElementsByTagName('INPUT') ) {
+		for(var i=0; i<radioButtons.length; i++) {
+			radioButtons[i].checked = '';
+		}
+	}
+
+	if ( options = container.getElementsByTagName('OPTION') ) {
+		for(var i=0; i<options.length; i++) {
+			options[i].selected = false;
+		}
+	}
+
+	return;
+}
\ No newline at end of file
diff --git bp-members/admin/js/admin.min.js bp-members/admin/js/admin.min.js
new file mode 100644
index 0000000..8284f9b
--- /dev/null
+++ bp-members/admin/js/admin.min.js
@@ -0,0 +1 @@
+function clear(e){if(!document.getElementById(e))return;var e=document.getElementById(e);if(radioButtons=e.getElementsByTagName("INPUT")){for(var t=0;t<radioButtons.length;t++){radioButtons[t].checked=""}}if(options=e.getElementsByTagName("OPTION")){for(var t=0;t<options.length;t++){options[t].selected=false}}return}(function(e){e(".field-visibility-settings").hide();e(".visibility-toggle-link").on("click",function(t){t.preventDefault();var n=e(this).parent();e(n).fadeOut(600,function(){e(n).siblings(".field-visibility-settings").slideDown(400)})});e(".field-visibility-settings-close").on("click",function(t){t.preventDefault();var n=e(this).parent();var r=n.find("input:checked").parent().text();n.slideUp(400,function(){n.siblings(".field-visibility-settings-toggle").fadeIn(800);n.siblings(".field-visibility-settings-toggle").children(".current-visibility-level").html(r)});return false})})(jQuery)
\ No newline at end of file
diff --git bp-members/bp-members-admin.php bp-members/bp-members-admin.php
new file mode 100644
index 0000000..237712e
--- /dev/null
+++ bp-members/bp-members-admin.php
@@ -0,0 +1,664 @@
+<?php
+// Exit if accessed directly
+if ( !defined( 'ABSPATH' ) ) exit;
+
+if ( !class_exists( 'BP_Members_Admin' ) ) :
+/**
+ * Load Members admin area.
+ *
+ * @package BuddyPress
+ * @subpackage membersAdministration
+ *
+ * @since BuddyPress (2.0.0)
+ */
+class BP_Members_Admin {
+
+	/** Directory *************************************************************/
+
+	/**
+	 * Path to the BP Members Admin directory.
+	 *
+	 * @var string $admin_dir
+	 */
+	public $admin_dir = '';
+
+	/** URLs ******************************************************************/
+
+	/**
+	 * URL to the BP Members Admin directory.
+	 *
+	 * @var string $admin_url
+	 */
+	public $admin_url = '';
+
+	/**
+	 * URL to the BP Members Admin CSS directory.
+	 *
+	 * @var string $css_url
+	 */
+	public $css_url = '';
+
+	/**
+	 * URL to the BP Members Admin JS directory.
+	 *
+	 * @var string
+	 */
+	public $js_url = '';
+
+	/** Other *****************************************************************/
+
+	/**
+	 * Screen id for edit user's profile page.
+	 *
+	 * @access public
+	 * @var string
+	 */
+	public $user_page = '';
+
+	/**
+	 * Constructor method.
+	 *
+	 * @access public
+	 * @since BuddyPress (2.0.0)
+	 */
+	public function __construct() {
+		$this->setup_globals();
+		$this->setup_actions();
+	}
+
+	/**
+	 * Set admin-related globals.
+	 *
+	 * @access private
+	 * @since BuddyPress (2.0.0)
+	 */
+	private function setup_globals() {
+		$bp = buddypress();
+
+		// Paths and URLs
+		$this->admin_dir = trailingslashit( $bp->plugin_dir  . 'bp-members/admin' ); // Admin path
+		$this->admin_url = trailingslashit( $bp->plugin_url  . 'bp-members/admin' ); // Admin URL
+		$this->css_url   = trailingslashit( $this->admin_url . 'css' ); // Admin CSS URL
+		$this->js_url    = trailingslashit( $this->admin_url . 'js'  ); // Admin CSS URL
+
+		// The Edit Profile Screen id
+		$this->user_page = '';
+
+		// The screen ids to load specific css for
+		$this->screen_id = array();
+
+		// The stats metabox default position
+		$this->stats_metabox = new StdClass();
+
+		// The WordPress edit user url
+		$this->edit_url = bp_get_admin_url( 'user-edit.php' );
+
+		// BuddyPress edit user's profile url
+		$this->edit_profile_url = add_query_arg( 'page', 'bp-profile-edit', bp_get_admin_url( 'users.php' ) );
+	}
+
+	/**
+	 * Set admin-related actions and filters.
+	 *
+	 * @since BuddyPress (2.0.0)
+	 */
+	private function setup_actions() {
+
+		/** Actions ***************************************************/
+
+		// Add some page specific output to the <head>
+		add_action( 'bp_admin_head',            array( $this, 'admin_head'      ), 999    );
+
+		// Add menu item to all users menu
+		add_action( bp_core_admin_hook(),       array( $this, 'admin_menus'     ),   5    );
+
+		// Enqueue all admin JS and CSS
+		add_action( 'bp_admin_enqueue_scripts', array( $this, 'enqueue_scripts' )         );
+
+		// Create the Profile Navigation (WordPress/Community)
+		add_action( 'edit_user_profile',        array( $this, 'profile_nav'     ),  99, 1 );
+
+
+		/** Filters ***************************************************/
+
+		// Add a row action to users listing
+		add_filter( bp_core_do_network_admin() ? 'ms_user_row_actions' : 'user_row_actions', array( $this, 'row_actions' ), 10, 2 );
+
+	}
+
+	/**
+	 * Create the All Users > Edit Profile submenu.
+	 *
+	 * @access public
+	 * @since BuddyPress (2.0.0)
+	 *
+	 * @uses add_users_page() To add the Edit Profile page in Users section.
+	 */
+	public function admin_menus() {
+
+		// Manage user's profile
+		$hook = $this->user_page = add_users_page(
+			__( 'Edit Profile',  'buddypress' ),
+			__( 'Edit Profile',  'buddypress' ),
+			'bp_moderate',
+			'bp-profile-edit',
+			array( &$this, 'user_admin' )
+		);
+
+		$edit_page = 'user-edit';
+
+		if ( bp_core_do_network_admin() ) {
+			$edit_page       .= '-network';
+			$this->user_page .= '-network';
+		}
+
+		$this->screen_id = array( $edit_page, $this->user_page );
+
+		add_action( "admin_head-$hook", array( $this, 'modify_admin_menu_highlight' ) );
+		add_action( "load-$hook",       array( $this, 'user_admin_load' ) );
+
+	}
+
+	/**
+	 * Add some specific styling to the Edit User and Edit User's Profile page.
+	 *
+	 * @since BuddyPress (2.0.0)
+	 */
+	public function enqueue_scripts() {
+		if ( ! in_array( get_current_screen()->id, $this->screen_id ) ) {
+			return;
+		}
+
+		$min = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
+
+		$css = $this->css_url . "admin{$min}.css";
+		$css = apply_filters( 'bp_members_admin_css', $css );
+		wp_enqueue_style( 'bp-members-css', $css, array(), bp_get_version() );
+
+		$js = $this->js_url . "admin{$min}.js";
+		$js = apply_filters( 'bp_members_admin_js', $js );
+		wp_enqueue_script( 'bp-members-js', $js, array( 'jquery' ), bp_get_version(), true );
+
+		// Plugins may want to hook here to load some css/js
+		do_action( 'bp_members_admin_enqueue_scripts', get_current_screen()->id, $this->screen_id );
+	}
+
+	/**
+	 * Create the Profile navigation in Edit User & Edit Profile pages.
+	 *
+	 * @since BuddyPress (2.0.0)
+	 */
+	public function profile_nav( $user = null, $active = 'WordPress' ) {
+
+		if ( empty( $user->ID ) ) {
+			return;
+		}
+
+		$query_args = array( 'user_id' => $user->ID );
+
+		if ( ! empty( $_REQUEST['wp_http_referer'] ) ) {
+			$query_args['wp_http_referer'] = urlencode( wp_unslash( $_REQUEST['wp_http_referer'] ) );
+		}
+
+		$community_url = add_query_arg( $query_args, $this->edit_profile_url );
+		$wordpress_url = add_query_arg( $query_args, $this->edit_url );
+
+		$bp_active = false;
+		$wp_active = ' nav-tab-active';
+		if ( 'BuddyPress' == $active ) {
+			$bp_active = ' nav-tab-active';
+			$wp_active = false;
+		}
+
+		?>
+		<ul id="profile-nav" class="nav-tab-wrapper">
+			<li class="nav-tab<?php echo $wp_active;?>"><a href="<?php echo $wordpress_url;?>"><?php _e( 'WordPress Profile' ); ?></a></li>
+			<li class="nav-tab<?php echo $bp_active;?>"><a href="<?php echo $community_url;?>"><?php _e( 'Community Profile' ); ?></a></li>
+		</ul>
+		<?php
+	}
+
+	/**
+	 * Highlight the Users menu if on Edit Profile pages.
+	 *
+	 * @since BuddyPress (2.0.0)
+	 */
+	public function modify_admin_menu_highlight() {
+		global $plugin_page, $submenu_file;
+
+		// Only Show the All users menu
+		if ( 'bp-profile-edit' ==  $plugin_page ) {
+			$submenu_file = 'users.php';
+		}
+	}
+
+	/**
+	 * Remove the Edit Profile submenu page.
+	 *
+	 * @since BuddyPress (2.0.0)
+	 */
+	public function admin_head() {
+		// Remove submenu to force using Profile Navigation
+		remove_submenu_page( 'users.php', 'bp-profile-edit' );
+	}
+
+	/**
+	 * Set up the user's profile admin page.
+	 *
+	 * Loaded before the page is rendered, this function does all initial
+	 * setup, including: processing form requests, registering contextual
+	 * help, and setting up screen options.
+	 *
+	 * @since BuddyPress (2.0.0)
+	 */
+	public function user_admin_load() {
+
+		if ( ! $user_id = intval( $_GET['user_id'] ) ) {
+			wp_die( __( 'No users were found', 'buddypress' ) );
+		}
+
+		$bp = buddypress();
+
+		// Build redirection URL
+		$redirect_to = remove_query_arg( array( 'action', 'error', 'updated', 'spam', 'ham', 'delete_avatar' ), $_SERVER['REQUEST_URI'] );
+		$doaction = ! empty( $_REQUEST['action'] ) ? $_REQUEST['action'] : false;
+
+		if ( ! empty( $_REQUEST['user_status'] ) ) {
+			$spam = ( 'spam' == $_REQUEST['user_status'] ) ? true : false ;
+
+			if ( $spam != bp_is_user_spammer( $user_id ) ) {
+				$doaction = $_REQUEST['user_status'];
+			}
+		}
+
+		// Call an action for plugins to hook in early
+		do_action_ref_array( 'bp_members_admin_load', array( $doaction, $_REQUEST ) );
+
+		// Prepare the display of the Community Profile screen
+		if ( ! in_array( $doaction, array( 'update', 'delete_avatar', 'spam', 'ham' ) ) ) {
+			add_screen_option( 'layout_columns', array( 'default' => 2, 'max' => 2, ) );
+
+			get_current_screen()->add_help_tab( array(
+				'id'      => 'bp-profile-edit-overview',
+				'title'   => __( 'Overview', 'buddypress' ),
+				'content' =>
+				'<p>' . __( 'This is the admin view of a user&#39;s profile.', 'buddypress' ) . '</p>' .
+				'<p>' . __( 'You can edit the different fields of his extended profile from the main metabox', 'buddypress' ) . '</p>' .
+				'<p>' . __( 'You can get some interesting informations about him on right side metaboxes', 'buddypress' ) . '</p>'
+			) );
+
+			// Help panel - sidebar links
+			get_current_screen()->set_help_sidebar(
+				'<p><strong>' . __( 'For more information:', 'buddypress' ) . '</strong></p>' .
+				'<p>' . __( '<a href="http://codex.buddypress.org/buddypress-site-administration/managing-user-profiles/">Managing Profiles</a>', 'buddypress' ) . '</p>' .
+				'<p>' . __( '<a href="http://buddypress.org/support/">Support Forums</a>', 'buddypress' ) . '</p>'
+			);
+
+			// Register metaboxes for the edit screen.
+			add_meta_box( 'submitdiv', _x( 'Status', 'members user-admin edit screen', 'buddypress' ), array( &$this, 'user_admin_status_metabox' ), get_current_screen()->id, 'side', 'core' );
+
+			// In case xprofile is not active
+			$this->stats_metabox->context = 'normal';
+			$this->stats_metabox->priority = 'core';
+
+			/**
+			 * xProfile Hooks to load the profile fields if component is active
+			 * Plugins should not use this hook, please use 'bp_members_admin_user_metaboxes' instead
+			 */
+			do_action_ref_array( 'bp_members_admin_xprofile_metabox', array( $user_id, get_current_screen()->id, $this->stats_metabox ) );
+
+			// If xProfile is inactive, difficult to know what's profile we're on
+			$display_name = false;
+			if ( 'normal' == $this->stats_metabox->context ) {
+				$display_name = ' - ' . esc_html( bp_core_get_user_displayname( $user_id ) );
+			}
+
+			// User Stat metabox
+			add_meta_box( 'bp_members_admin_user_stats',    _x( 'Stats' . $display_name, 'members user-admin edit screen', 'buddypress' ), array( &$this, 'user_admin_stats_metabox' ), get_current_screen()->id, $this->stats_metabox->context, $this->stats_metabox->priority );
+
+			// Custom metabox ?
+			do_action( 'bp_members_admin_user_metaboxes' );
+
+			// Enqueue javascripts
+			wp_enqueue_script( 'postbox' );
+			wp_enqueue_script( 'dashboard' );
+			wp_enqueue_script( 'comment' );
+
+		// Spam or Ham user
+		} else if ( in_array( $doaction, array( 'spam', 'ham' ) ) ) {
+
+			check_admin_referer( 'edit-bp-profile_' . $user_id );
+
+			if ( bp_core_process_spammer_status( $user_id, $doaction ) ) {
+				$redirect_to = add_query_arg( 'updated', $doaction, $redirect_to );
+			} else {
+				$redirect_to = add_query_arg( 'error', $doaction, $redirect_to );
+			}
+
+			bp_core_redirect( $redirect_to );
+
+		// Update other stuff once above ones are done
+		} else {
+			$this->redirect = $redirect_to;
+
+			do_action_ref_array( 'bp_members_admin_update_user', array( $doaction, $user_id, $_REQUEST, $this->redirect ) );
+
+			bp_core_redirect( $this->redirect );
+		}
+	}
+
+	/**
+	 * Display the user's profile.
+	 *
+	 * @since BuddyPress (2.0.0)
+	 */
+	public function user_admin() {
+
+		if ( ! current_user_can( 'bp_moderate' ) ) {
+			die( '-1' );
+		}
+
+		$user = get_user_to_edit( $_GET['user_id'] );
+
+		// Construct URL for form
+		$form_url        = remove_query_arg( array( 'action', 'error', 'updated', 'spam', 'ham' ), $_SERVER['REQUEST_URI'] );
+		$form_url        = add_query_arg( 'action', 'update', $form_url );
+		$wp_http_referer = remove_query_arg( array( 'action', 'updated' ), $_REQUEST['wp_http_referer'] );
+
+		// Prepare notice for admin
+		$notice = array();
+
+		if ( ! empty( $_REQUEST['updated'] ) ) {
+			switch ( $_REQUEST['updated'] ) {
+			case 'avatar':
+				$notice = array(
+					'class'   => 'updated',
+					'message' => __( 'Avatar was deleted successfully!', 'buddypress' )
+				);
+				break;
+			case 'ham' :
+				$notice = array(
+					'class'   => 'updated',
+					'message' => __( 'User removed as spammer.', 'buddypress' )
+				);
+				break;
+			case 'spam' :
+				$notice = array(
+					'class'   => 'updated',
+					'message' => __( 'User marked as spammer. Spam users are visible only to site admins.', 'buddypress' )
+				);
+				break;
+			case 1 :
+				$notice = array(
+					'class'   => 'updated',
+					'message' => __( 'Profile updated.', 'buddypress' )
+				);
+				break;
+			}
+		}
+
+		if ( ! empty( $_REQUEST['error'] ) ) {
+			switch ( $_REQUEST['error'] ) {
+			case 'avatar':
+				$notice = array(
+					'class'   => 'error',
+					'message' => __( 'There was a problem deleting that avatar, please try again.', 'buddypress' )
+				);
+				break;
+			case 'ham' :
+				$notice = array(
+					'class'   => 'error',
+					'message' => __( 'User could not be removed as spammer.', 'buddypress' )
+				);
+				break;
+			case 'spam' :
+				$notice = array(
+					'class'   => 'error',
+					'message' => __( 'User could not be marked as spammer.', 'buddypress' )
+				);
+				break;
+			case 1 :
+				$notice = array(
+					'class'   => 'error',
+					'message' => __( 'An error occured while trying to update the profile.', 'buddypress' )
+				);
+				break;
+			case 2:
+				$notice = array(
+					'class'   => 'error',
+					'message' => __( 'Please make sure you fill in all required fields in this profile field group before saving.', 'buddypress' )
+				);
+				break;
+			case 3:
+				$notice = array(
+					'class'   => 'error',
+					'message' => __( 'There was a problem updating some of your profile information, please try again.', 'buddypress' )
+				);
+				break;
+			}
+		}
+
+		if ( ! empty( $notice ) ) :
+			if ( 'updated' === $notice['class'] ) : ?>
+				<div id="message" class="<?php echo esc_attr( $notice['class'] ); ?>">
+			<?php else: ?>
+				<div class="<?php echo esc_attr( $notice['class'] ); ?>">
+			<?php endif; ?>
+				<p><?php echo $notice['message']; ?></p>
+				<?php if ( !empty( $wp_http_referer ) && ( 'updated' === $notice['class'] ) ) : ?>
+					<p><a href="<?php echo esc_url( $wp_http_referer ); ?>"><?php _e( '&larr; Back to Users', 'buddypress' ); ?></a></p>
+				<?php endif; ?>
+			</div>
+		<?php endif; ?>
+
+		<div class="wrap"  id="community-profile-page">
+			<?php screen_icon( 'users' ); ?>
+			<h2>
+				<?php
+				_e( 'Edit User', 'buddypress' );
+				if ( current_user_can( 'create_users' ) ) { ?>
+					<a href="user-new.php" class="add-new-h2"><?php echo esc_html_x( 'Add New', 'user', 'buddypress' ); ?></a>
+				<?php } elseif ( is_multisite() && current_user_can( 'promote_users' ) ) { ?>
+					<a href="user-new.php" class="add-new-h2"><?php echo esc_html_x( 'Add Existing', 'user', 'buddypress' ); ?></a>
+				<?php }
+				?>
+			</h2>
+
+			<?php if ( ! empty( $user ) ) :
+
+				$this->profile_nav( $user, 'BuddyPress' ); ?>
+
+				<form action="<?php echo esc_attr( $form_url ); ?>" id="your-profile" method="post">
+					<div id="poststuff">
+
+						<div id="post-body" class="metabox-holder columns-<?php echo 1 == get_current_screen()->get_columns() ? '1' : '2'; ?>">
+							<div id="post-body-content">
+							</div><!-- #post-body-content -->
+
+							<div id="postbox-container-1" class="postbox-container">
+								<?php do_meta_boxes( get_current_screen()->id, 'side', $user ); ?>
+							</div>
+
+							<div id="postbox-container-2" class="postbox-container">
+								<?php do_meta_boxes( get_current_screen()->id, 'normal',   $user ); ?>
+								<?php do_meta_boxes( get_current_screen()->id, 'advanced', $user ); ?>
+							</div>
+						</div><!-- #post-body -->
+
+					</div><!-- #poststuff -->
+
+					<?php wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); ?>
+					<?php wp_nonce_field( 'meta-box-order',  'meta-box-order-nonce', false ); ?>
+					<?php wp_nonce_field( 'edit-bp-profile_' . $user->ID ); ?>
+
+				</form>
+
+			<?php else : ?>
+				<p><?php printf( __( 'No user found with this ID. <a href="%s">Go back and try again</a>.', 'buddypress' ), esc_url( bp_get_admin_url( 'users.php' ) ) ); ?></p>
+			<?php endif; ?>
+
+		</div><!-- .wrap -->
+		<?php
+	}
+
+	/**
+	 * Render the Status metabox for user's profile screen.
+	 *
+	 * Actions are:
+	 * - Update profile fields if xProfile component is active
+	 * - Spam/Unspam user
+	 *
+	 * @since BuddyPress (2.0.0)
+	 *
+	 * @param WP_User $user The WP_User object to be edited.
+	 */
+	public function user_admin_status_metabox( $user = null ) {
+
+		// bail if no user id or if the user has not activated his account yet..
+		if ( empty( $user->ID ) ) {
+			return;
+		}
+
+
+		if ( ( isset( $user->user_status ) && 2 == $user->user_status ) ) {
+			echo '<p class="not-activated">' . sprintf( 'User has not activated his account yet', 'buddypress' ) . '</p><br/>';
+			return;
+		}
+		?>
+
+		<div class="submitbox" id="submitcomment">
+			<div id="minor-publishing">
+				<div id="minor-publishing-actions">
+					<div id="preview-action">
+						<a class="button preview" href="<?php echo esc_attr( bp_core_get_user_domain( $user->ID ) ); ?>" target="_blank"><?php _e( 'View Profile', 'buddypress' ); ?></a>
+					</div>
+
+					<div class="clear"></div>
+				</div><!-- #minor-publishing-actions -->
+
+				<div id="misc-publishing-actions">
+					<div class="misc-pub-section" id="comment-status-radio">
+						<label class="approved"><input type="radio" name="user_status" value="ham" <?php checked( bp_is_user_spammer( $user->ID ), false ); ?>><?php _e( 'Active', 'buddypress' ); ?></label><br />
+						<label class="spam"><input type="radio" name="user_status" value="spam" <?php checked( bp_is_user_spammer( $user->ID ), true ); ?>><?php _e( 'Spammer', 'buddypress' ); ?></label>
+					</div>
+
+					<div class="misc-pub-section curtime misc-pub-section-last">
+						<?php
+						// translators: Publish box date format, see http://php.net/date
+						$datef = __( 'M j, Y @ G:i', 'buddypress' );
+						$date  = date_i18n( $datef, strtotime( $user->user_registered ) );
+						?>
+						<span id="timestamp"><?php printf( __( 'Registered on: <strong>%1$s</strong>', 'buddypress' ), $date ); ?></span>
+					</div>
+				</div> <!-- #misc-publishing-actions -->
+
+				<div class="clear"></div>
+			</div><!-- #minor-publishing -->
+
+			<div id="major-publishing-actions">
+				<div id="publishing-action">
+					<?php submit_button( __( 'Update Profile', 'buddypress' ), 'primary', 'save', false, array( 'tabindex' => '4' ) ); ?>
+				</div>
+				<div class="clear"></div>
+			</div><!-- #major-publishing-actions -->
+
+		</div><!-- #submitcomment -->
+
+		<?php
+	}
+
+	/**
+	 * Render the fallback metabox in case a user has been marked as a spammer.
+	 *
+	 * @since BuddyPress (2.0.0)
+	 *
+	 * @param WP_User $user The WP_User object to be edited.
+	 */
+	public function user_admin_spammer_metabox( $user = null ) {
+		?>
+		<p><?php printf( __( '%s has been marked as a spammer, this user&#39;s BuddyPress datas were removed', 'buddypress' ), bp_core_get_user_displayname( $user->ID ) ) ;?></p>
+		<?php
+	}
+
+	/**
+	 * Render the Stats metabox to moderate inappropriate images.
+	 *
+	 * @since BuddyPress (2.0.0)
+	 *
+	 * @param WP_User $user The WP_User object to be edited.
+	 */
+	public function user_admin_stats_metabox( $user = null ) {
+
+		if ( empty( $user->ID ) ) {
+			return;
+		}
+
+		// If account is not activated last activity is the time user registered
+		if ( isset( $user->user_status ) && 2 == $user->user_status ) {
+			$last_active = $user->user_registered;
+		// Account is activated, getting user's last activity
+		} else {
+			$last_active = bp_get_user_last_activity( $user->ID );
+		}
+
+		$datef = __( 'M j, Y @ G:i', 'buddypress' );
+		$date  = date_i18n( $datef, strtotime( $last_active ) ); ?>
+
+		<ul>
+			<li><div class="dashicons dashicons-last-active"></div> <?php printf( __( 'Last active: <strong>%1$s</strong>', 'buddypress' ), $date ); ?></li>
+
+			<?php
+			// Loading other stats only if user has activated his account
+			if ( empty( $user->user_status ) ) {
+				do_action( 'bp_members_admin_user_stats', $user->ID, $user );
+			}
+			?>
+		</ul>
+		<?php
+	}
+
+	/**
+	 * Add a link to Profile in Users listing row actions.
+	 *
+	 * @since BuddyPress (2.0.0)
+	 *
+	 * @param array $actions WordPress row actions (edit, delete).
+	 * @param object $user The object for the user row.
+	 * @return array Merged actions.
+	 */
+	public function row_actions( $actions = '', $user = null ) {
+
+		$edit_profile = add_query_arg( array(
+			'user_id'         => $user->ID,
+			'wp_http_referer' => urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ),
+		), $this->edit_profile_url );
+
+		$edit_action = $actions['edit'];
+		unset( $actions['edit'] );
+
+		$new_edit_actions = array(
+			'edit'         => $edit_action,
+			'edit-profile' => '<a href="' . esc_url( $edit_profile ) . '">' . __( 'Profile', 'buddypress' ) . '</a>'
+		);
+
+		return array_merge( $new_edit_actions, $actions );
+	}
+
+}
+endif; // class_exists check
+
+/**
+ * Setup BP Members Admin.
+ *
+ * @since BuddyPress (2.0.0)
+ *
+ * @uses buddypress() to get BuddyPress main instance
+ */
+function bp_members_admin() {
+	buddypress()->members->admin = new BP_Members_Admin();
+}
+
+// Load the BP Members admin
+if ( is_admin() ) {
+	add_action( 'bp_init', 'bp_members_admin' );
+}
diff --git bp-members/bp-members-functions.php bp-members/bp-members-functions.php
index 795c228..d7744fa 100644
--- bp-members/bp-members-functions.php
+++ bp-members/bp-members-functions.php
@@ -563,8 +563,14 @@ function bp_core_process_spammer_status( $user_id, $status ) {
 	remove_action( 'make_spam_user', 'bp_core_mark_user_spam_admin' );
 	remove_action( 'make_ham_user',  'bp_core_mark_user_ham_admin'  );
 
+	// Determine if we are on an admin page
+	$is_admin = is_admin();
+	if ( $is_admin && ! defined( 'DOING_AJAX' ) ) {
+		$is_admin = (bool) ( buddypress()->members->admin->user_page !== get_current_screen()->id );
+	}
+
 	// When marking as spam in the Dashboard, these actions are handled by WordPress
-	if ( !is_admin() ) {
+	if ( ! $is_admin ) {
 
 		// Get the blogs for the user
 		$blogs = get_blogs_of_user( $user_id, true );
diff --git bp-members/bp-members-loader.php bp-members/bp-members-loader.php
index d87683d..c654240 100644
--- bp-members/bp-members-loader.php
+++ bp-members/bp-members-loader.php
@@ -45,6 +45,11 @@ class BP_Members_Component extends BP_Component {
 			'functions',
 			'notifications',
 		);
+
+		if ( is_admin() ) {
+			$includes[] = 'admin';
+		}
+
 		parent::includes( $includes );
 	}
 
diff --git bp-xprofile/bp-xprofile-admin.php bp-xprofile/bp-xprofile-admin.php
index 95151ea..a658e4a 100644
--- bp-xprofile/bp-xprofile-admin.php
+++ bp-xprofile/bp-xprofile-admin.php
@@ -466,3 +466,455 @@ function xprofile_admin_field( $admin_field, $admin_group, $class = '' ) {
 
 <?php
 }
+
+if ( ! class_exists( 'BP_XProfile_User_Admin' ) ) :
+/**
+ * Load xProfile Profile admin area.
+ *
+ * @package BuddyPress
+ * @subpackage xProfileAdministration
+ *
+ * @since BuddyPress (2.0.0)
+ */
+class BP_XProfile_User_Admin {
+
+	/**
+	 * Constructor method.
+	 *
+	 * @since BuddyPress (2.0.0)
+	 */
+	public function __construct() {
+		$this->setup_actions();
+	}
+
+	/**
+	 * Set admin-related actions and filters.
+	 *
+	 * @since BuddyPress (2.0.0)
+	 */
+	private function setup_actions() {
+
+		/** Actions ***************************************************/
+
+		// Register the metabox in Member's community admin profile
+		add_action( 'bp_members_admin_xprofile_metabox', array( $this, 'register_metaboxes' ), 10, 3 );
+
+		// Saves the profile actions for user ( avatar, profile fields )
+		add_action( 'bp_members_admin_update_user',      array( $this, 'user_admin_load' ),    10, 4 );
+
+	}
+
+	/**
+	 * Register the xProfile metabox on Community Profile admin page.
+	 *
+	 * @since BuddyPress (2.0.0)
+	 *
+	 * @param int $user_id ID of the user being edited.
+	 * @param string $screen_id Screen ID to load the metabox in.
+	 * @param object $stats_metabox Context and priority for the stats metabox.
+	 */
+	public function register_metaboxes( $user_id = 0, $screen_id = '', $stats_metabox = null ) {
+
+		if ( empty( $screen_id ) ) {
+			$screen_id = buddypress()->members->admin->user_page;
+		}
+
+		if ( empty( $stats_metabox ) ) {
+			$stats_metabox = new StdClass();
+		}
+
+		// Moving the Stats Metabox
+		$stats_metabox->context = 'side';
+		$stats_metabox->priority = 'low';
+
+		// Each Group of fields will have his own metabox
+		if ( false == bp_is_user_spammer( $user_id ) && bp_has_profile( array( 'fetch_fields' => false ) ) ) {
+			while ( bp_profile_groups() ) : bp_the_profile_group();
+				add_meta_box( 'bp_xprofile_user_admin_fields_' . bp_get_the_profile_group_slug(), bp_get_the_profile_group_name(), array( &$this, 'user_admin_profile_metaboxes' ), $screen_id, 'normal', 'core', array( 'profile_group_id' => bp_get_the_profile_group_id() ) );
+			endwhile;
+
+		// if a user has been mark as a spammer, his BuddyPress datas are removed !
+		} else {
+			add_meta_box( 'bp_xprofile_user_admin_empty_profile', _x( 'User marked as a spammer', 'xprofile user-admin edit screen', 'buddypress' ), array( &$this, 'user_admin_spammer_metabox' ), $screen_id, 'normal', 'core' );
+		}
+
+		// Avatar Metabox
+		add_meta_box( 'bp_xprofile_user_admin_avatar',  _x( 'Avatar', 'xprofile user-admin edit screen', 'buddypress' ), array( &$this, 'user_admin_avatar_metabox' ), $screen_id, 'side', 'low' );
+
+	}
+
+	/**
+	 * Save the profile fields in Members community profile page.
+	 *
+	 * Loaded before the page is rendered, this function is processing form
+	 * requests.
+	 *
+	 * @since BuddyPress (2.0.0)
+	 */
+	public function user_admin_load( $doaction = '', $user_id = 0, $request = array(), $redirect_to = '' ) {
+
+		// Eventually delete avatar
+		if ( 'delete_avatar' == $doaction ) {
+
+			check_admin_referer( 'delete_avatar' );
+
+			$redirect_to = remove_query_arg( '_wpnonce', $redirect_to );
+
+			if ( bp_core_delete_existing_avatar( array( 'item_id' => $user_id ) ) ) {
+				$redirect_to = add_query_arg( 'updated', 'avatar', $redirect_to );
+			} else {
+				$redirect_to = add_query_arg( 'error', 'avatar', $redirect_to );
+			}
+
+			bp_core_redirect( $redirect_to );
+
+		// Update profile fields
+		} else {
+			// Check to see if any new information has been submitted
+			if ( isset( $_POST['field_ids'] ) ) {
+
+				// Check the nonce
+				check_admin_referer( 'edit-bp-profile_' . $user_id );
+
+				// Check we have field ID's
+				if ( empty( $_POST['field_ids'] ) ) {
+					$redirect_to = add_query_arg( 'error', '1', $redirect_to );
+					bp_core_redirect( $redirect_to );
+				}
+
+				$merge_ids = '';
+				foreach ( $_POST['field_ids'] as $ids ) {
+					$merge_ids .= $ids . ',';
+				}
+
+				// Explode the posted field IDs into an array so we know which
+				// fields have been submitted
+				$posted_field_ids = array_filter( wp_parse_id_list( $merge_ids ) );
+				$is_required      = array();
+
+				// Loop through the posted fields formatting any datebox values
+				// then validate the field
+				foreach ( (array) $posted_field_ids as $field_id ) {
+					if ( ! isset( $_POST['field_' . $field_id] ) ) {
+						if ( ! empty( $_POST['field_' . $field_id . '_day'] ) && ! empty( $_POST['field_' . $field_id . '_month'] ) && ! empty( $_POST['field_' . $field_id . '_year'] ) ) {
+							// Concatenate the values
+							$date_value =   $_POST['field_' . $field_id . '_day'] . ' ' . $_POST['field_' . $field_id . '_month'] . ' ' . $_POST['field_' . $field_id . '_year'];
+
+							// Turn the concatenated value into a timestamp
+							$_POST['field_' . $field_id] = date( 'Y-m-d H:i:s', strtotime( $date_value ) );
+						}
+					}
+
+					$is_required[ $field_id ] = xprofile_check_is_required_field( $field_id );
+					if ( $is_required[ $field_id ] && empty( $_POST['field_' . $field_id] ) ) {
+						$redirect_to = add_query_arg( 'error', '2', $redirect_to );
+						bp_core_redirect( $redirect_to );
+					}
+				}
+
+				// Set the errors var
+				$errors = false;
+var_dump( $posted_field_ids ); die();
+				// Now we've checked for required fields, lets save the values.
+				foreach ( (array) $posted_field_ids as $field_id ) {
+
+					// Certain types of fields (checkboxes, multiselects) may come through empty. Save them as an empty array so that they don't get overwritten by the default on the next edit.
+					if ( empty( $_POST['field_' . $field_id] ) ) {
+						$value = array();
+					} else {
+						$value = $_POST['field_' . $field_id];
+					}
+
+					if ( ! xprofile_set_field_data( $field_id, $user_id, $value, $is_required[ $field_id ] ) ) {
+						$errors = true;
+					} else {
+						do_action( 'xprofile_profile_field_data_updated', $field_id, $value );
+					}
+
+					// Save the visibility level
+					$visibility_level = ! empty( $_POST['field_' . $field_id . '_visibility'] ) ? $_POST['field_' . $field_id . '_visibility'] : 'public';
+					xprofile_set_field_visibility_level( $field_id, $user_id, $visibility_level );
+				}
+
+				do_action( 'xprofile_updated_profile', $user_id, $posted_field_ids, $errors );
+
+				// Set the feedback messages
+				if ( ! empty( $errors ) ) {
+					$redirect_to = add_query_arg( 'error', '3', $redirect_to );
+				} else {
+					$redirect_to = add_query_arg( 'updated', '1', $redirect_to );
+				}
+
+				bp_core_redirect( $redirect_to );
+			}
+		}
+	}
+
+	/**
+	 * Render the xprofile metabox for Community Profile screen.
+	 *
+	 * @since BuddyPress (2.0.0)
+	 *
+	 * @param WP_User $user The WP_User object for the user being edited.
+	 */
+	public function user_admin_profile_metaboxes( $user = null, $args = array() ) {
+
+		if ( empty( $user->ID ) ) {
+			return;
+		}
+
+		$r = bp_parse_args( $args['args'], array(
+			'profile_group_id' => 0,
+			'user_id'          => $user->ID
+		), 'bp_xprofile_user_admin_profile_loop_args' );
+
+		// We really need these args
+		if ( empty( $r['profile_group_id'] ) || empty( $r['user_id'] ) ) {
+			return;
+		}
+
+		if ( bp_has_profile( $r ) ) :
+
+			while ( bp_profile_groups() ) : bp_the_profile_group(); ?>
+
+				<p class="description"><?php bp_the_profile_group_description(); ?></p>
+
+				<table class="form-table">
+					<tbody>
+
+					<?php while ( bp_profile_fields() ) : bp_the_profile_field(); ?>
+
+						<tr>
+
+							<?php if ( 'textbox' === bp_get_the_profile_field_type() ) : ?>
+
+								<th><label for="<?php bp_the_profile_field_input_name(); ?>"><?php bp_the_profile_field_name(); ?> <?php if ( bp_get_the_profile_field_is_required() ) : ?><?php _e( '(required)', 'buddypress' ); ?><?php endif; ?></label></th>
+								<td>
+									<input type="text" name="<?php bp_the_profile_field_input_name(); ?>" id="<?php bp_the_profile_field_input_name(); ?>" value="<?php bp_the_profile_field_edit_value(); ?>" <?php if ( bp_get_the_profile_field_is_required() ) : ?>aria-required="true"<?php endif; ?>/>
+									<span class="description"><?php bp_the_profile_field_description(); ?></span>
+								</td>
+
+							<?php endif; ?>
+
+							<?php if ( 'textarea' === bp_get_the_profile_field_type() ) : ?>
+
+								<th><label for="<?php bp_the_profile_field_input_name(); ?>"><?php bp_the_profile_field_name(); ?> <?php if ( bp_get_the_profile_field_is_required() ) : ?><?php _e( '(required)', 'buddypress' ); ?><?php endif; ?></label></th>
+								<td>
+									<textarea rows="5" cols="40" name="<?php bp_the_profile_field_input_name(); ?>" id="<?php bp_the_profile_field_input_name(); ?>" <?php if ( bp_get_the_profile_field_is_required() ) : ?>aria-required="true"<?php endif; ?>><?php bp_the_profile_field_edit_value(); ?></textarea>
+									<p class="description"><?php bp_the_profile_field_description(); ?></p>
+								</td>
+
+							<?php endif; ?>
+
+							<?php if ( 'selectbox' === bp_get_the_profile_field_type() ) : ?>
+
+								<th><label for="<?php bp_the_profile_field_input_name(); ?>"><?php bp_the_profile_field_name(); ?> <?php if ( bp_get_the_profile_field_is_required() ) : ?><?php _e( '(required)', 'buddypress' ); ?><?php endif; ?></label></th>
+								<td>
+									<select name="<?php bp_the_profile_field_input_name(); ?>" id="<?php bp_the_profile_field_input_name(); ?>" <?php if ( bp_get_the_profile_field_is_required() ) : ?>aria-required="true"<?php endif; ?>>
+										<?php bp_the_profile_field_options( array( 'user_id' => $r['user_id'], ) ); ?>
+									</select>
+									<span class="description"><?php bp_the_profile_field_description(); ?></span>
+								</td>
+
+							<?php endif; ?>
+
+							<?php if ( 'multiselectbox' === bp_get_the_profile_field_type() ) : ?>
+
+								<th><label for="<?php bp_the_profile_field_input_name(); ?>"><?php bp_the_profile_field_name(); ?> <?php if ( bp_get_the_profile_field_is_required() ) : ?><?php _e( '(required)', 'buddypress' ); ?><?php endif; ?></label></th>
+								<td>
+									<select name="<?php bp_the_profile_field_input_name(); ?>" id="<?php bp_the_profile_field_input_name(); ?>" multiple="multiple" <?php if ( bp_get_the_profile_field_is_required() ) : ?>aria-required="true"<?php endif; ?>>
+
+										<?php bp_the_profile_field_options( array( 'user_id' => $r['user_id'], ) ); ?>
+
+									</select>
+
+
+									<?php if ( !bp_get_the_profile_field_is_required() ) : ?>
+
+										<p><a class="clear-value" href="javascript:clear( '<?php bp_the_profile_field_input_name(); ?>' );"><?php _e( 'Clear', 'buddypress' ); ?></a></p>
+
+									<?php endif; ?>
+									<p class="description"><?php bp_the_profile_field_description(); ?></p>
+								</td>
+
+							<?php endif; ?>
+
+							<?php if ( 'radio' === bp_get_the_profile_field_type() ) : ?>
+
+								<th>
+									<span class="label"><?php bp_the_profile_field_name(); ?> <?php if ( bp_get_the_profile_field_is_required() ) : ?><?php _e( '(required)', 'buddypress' ); ?><?php endif; ?></span>
+								</th>
+								<td>
+									<fieldset>
+										<legend class="screen-reader-text"><span><?php bp_the_profile_field_name(); ?></span></legend>
+										<?php bp_the_profile_field_options( array( 'user_id' => $r['user_id'], ) ); ?>
+									</fieldset>
+
+									<?php if ( !bp_get_the_profile_field_is_required() ) : ?>
+
+										<p><a class="clear-value" href="javascript:clear( '<?php bp_the_profile_field_input_name(); ?>' );"><?php _e( 'Clear', 'buddypress' ); ?></a></p>
+
+									<?php endif; ?>
+									<p class="description"><?php bp_the_profile_field_description(); ?></p>
+								</td>
+
+							<?php endif; ?>
+
+							<?php if ( 'checkbox' === bp_get_the_profile_field_type() ) : ?>
+
+								<th>
+									<span class="label"><?php bp_the_profile_field_name(); ?> <?php if ( bp_get_the_profile_field_is_required() ) : ?><?php _e( '(required)', 'buddypress' ); ?><?php endif; ?></span>
+								</th>
+								<td>
+									<?php bp_the_profile_field_options( array( 'user_id' => $r['user_id'], ) ); ?>
+									<p class="description"><?php bp_the_profile_field_description(); ?></p>
+								</td>
+
+							<?php endif; ?>
+
+							<?php if ( 'datebox' === bp_get_the_profile_field_type() ) : ?>
+
+								<th>
+									<label for="<?php bp_the_profile_field_input_name(); ?>_day"><?php bp_the_profile_field_name(); ?> <?php if ( bp_get_the_profile_field_is_required() ) : ?><?php _e( '(required)', 'buddypress' ); ?><?php endif; ?></label>
+								</th>
+								<td>
+									<select name="<?php bp_the_profile_field_input_name(); ?>_day" id="<?php bp_the_profile_field_input_name(); ?>_day" <?php if ( bp_get_the_profile_field_is_required() ) : ?>aria-required="true"<?php endif; ?>>
+
+										<?php bp_the_profile_field_options( array( 'user_id' => $r['user_id'], 'type' => 'day', ) ); ?>
+
+									</select>
+
+									<select name="<?php bp_the_profile_field_input_name(); ?>_month" id="<?php bp_the_profile_field_input_name(); ?>_month" <?php if ( bp_get_the_profile_field_is_required() ) : ?>aria-required="true"<?php endif; ?>>
+
+										<?php bp_the_profile_field_options( array( 'user_id' => $r['user_id'], 'type' => 'month', ) ); ?>
+
+									</select>
+
+									<select name="<?php bp_the_profile_field_input_name(); ?>_year" id="<?php bp_the_profile_field_input_name(); ?>_year" <?php if ( bp_get_the_profile_field_is_required() ) : ?>aria-required="true"<?php endif; ?>>
+
+										<?php bp_the_profile_field_options( array( 'user_id' => $r['user_id'], 'type' => 'year', ) ); ?>
+
+									</select>
+									<p class="description"><?php bp_the_profile_field_description(); ?></p>
+								</td>
+
+							<?php endif; ?>
+
+						</tr>
+
+						<tr class="admin-field-visibility-tr">
+							<td class="admin-field-visibility-td">&nbsp;</td>
+							<td class="admin-field-visibility-td">
+
+								<?php do_action( 'bp_custom_profile_edit_fields_pre_visibility' ); ?>
+
+								<?php if ( bp_current_user_can( 'bp_xprofile_change_field_visibility' ) ) : ?>
+									<p class="description field-visibility-settings-toggle" id="field-visibility-settings-toggle-<?php bp_the_profile_field_id() ?>">
+										<?php printf( __( 'This field can be seen by: <span class="current-visibility-level">%s</span>', 'buddypress' ), bp_get_the_profile_field_visibility_level_label() ) ?> <a href="#" class="visibility-toggle-link"><?php _e( 'Change', 'buddypress' ); ?></a>
+									</p>
+
+									<div class="field-visibility-settings" id="field-visibility-settings-<?php bp_the_profile_field_id() ?>">
+										<fieldset>
+											<legend><?php _e( 'Who can see this field?', 'buddypress' ) ?></legend>
+
+											<?php bp_profile_visibility_radio_buttons() ?>
+
+										</fieldset>
+										<a class="field-visibility-settings-close" href="#"><?php _e( 'Close', 'buddypress' ) ?></a>
+									</div>
+								<?php else : ?>
+									<div class="field-visibility-settings-notoggle" id="field-visibility-settings-toggle-<?php bp_the_profile_field_id() ?>">
+										<?php printf( __( 'This field can be seen by: <span class="current-visibility-level">%s</span>', 'buddypress' ), bp_get_the_profile_field_visibility_level_label() ) ?>
+									</div>
+								<?php endif ?>
+
+							</td>
+						</tr>
+
+					<?php endwhile; ?>
+					</tbody>
+
+				</table>
+				<input type="hidden" name="field_ids[]" id="field_ids_<?php bp_the_profile_group_slug(); ?>" value="<?php bp_the_profile_group_field_ids(); ?>" />
+			<?php endwhile;
+		endif;
+	}
+
+	/**
+	 * Render the fallback metabox in case a user has been marked as a spammer.
+	 *
+	 * @since BuddyPress (2.0.0)
+	 *
+	 * @param WP_User $user The WP_User object for the user being edited.
+	 */
+	public function user_admin_spammer_metabox( $user = null ) {
+		?>
+		<p><?php printf( __( '%s has been marked as a spammer, this user&#39;s BuddyPress datas were removed', 'buddypress' ), bp_core_get_user_displayname( $user->ID ) ) ;?></p>
+		<?php
+	}
+
+	/**
+	 * Render the Avatar metabox to moderate inappropriate images.
+	 *
+	 * @since BuddyPress (2.0.0)
+	 *
+	 * @param WP_User $user The WP_User object for the user being edited.
+	 */
+	public function user_admin_avatar_metabox( $user = null ) {
+
+		if ( empty( $user->ID ) ) {
+			return;
+		}
+
+		$args = array(
+			'item_id' => $user->ID,
+			'object'  => 'user',
+			'type'    => 'full',
+			'title'   => $user->display_name
+		);
+
+		?>
+
+		<div class="avatar">
+
+			<?php echo bp_core_fetch_avatar( $args ); ?>
+
+			<?php if ( bp_get_user_has_avatar( $user->ID ) ) :
+
+				$query_args = array(
+					'user_id' => $user->ID,
+					'action'  => 'delete_avatar'
+				);
+
+				if ( ! empty( $_REQUEST['wp_http_referer'] ) )
+					$query_args['wp_http_referer'] = urlencode( wp_unslash( $_REQUEST['wp_http_referer'] ) );
+
+					$community_url = add_query_arg( $query_args, buddypress()->members->admin->edit_profile_url );
+					$delete_link   = wp_nonce_url( $community_url, 'delete_avatar' ); ?>
+
+				<a href="<?php echo esc_url( $delete_link ); ?>" title="<?php _e( 'Delete Avatar', 'buddypress' ); ?>"><span class="dashicons dashicons dashicons-trash"></span> <?php _e( 'Delete Avatar', 'buddypress' ); ?></a></li>
+
+			<?php endif; ?>
+
+		</div>
+		<?php
+	}
+
+}
+endif; // class_exists check
+
+/**
+ * Setup xProfile User Admin.
+ *
+ * @since BuddyPress (2.0.0)
+ *
+ * @uses buddypress() to get BuddyPress main instance
+ */
+function xprofile_user_admin() {
+	buddypress()->profile->admin = new BP_XProfile_User_Admin();
+}
+
+// Load the xprofile user admin
+if ( is_admin() ) {
+	add_action( 'bp_init', 'xprofile_user_admin', 11 );
+}
diff --git bp-xprofile/bp-xprofile-filters.php bp-xprofile/bp-xprofile-filters.php
index bde9c50..05641fa 100644
--- bp-xprofile/bp-xprofile-filters.php
+++ bp-xprofile/bp-xprofile-filters.php
@@ -247,16 +247,59 @@ add_filter( 'comments_array', 'xprofile_filter_comments', 10, 2 );
 function bp_xprofile_filter_user_query_populate_extras( BP_User_Query $user_query, $user_ids_sql ) {
 	global $bp, $wpdb;
 
-	if ( bp_is_active( 'xprofile' ) ) {
-		$fullname_field_id = $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$bp->profile->table_name_fields} WHERE name = %s", bp_xprofile_fullname_field_name() ) );
-		$user_id_names     = $wpdb->get_results( $wpdb->prepare( "SELECT user_id, value as fullname FROM {$bp->profile->table_name_data} WHERE user_id IN ({$user_ids_sql}) AND field_id = %d", $fullname_field_id ) );
-
-		// Loop through names and override each user's fullname
-		foreach ( $user_id_names as $user ) {
-			if ( isset( $user_query->results[ $user->user_id ] ) ) {
-				$user_query->results[ $user->user_id ]->fullname = $user->fullname;
-			}
+	if ( ! bp_is_active( 'xprofile' ) ) {
+		return;
+	}
+
+	$fullname_field_id = $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$bp->profile->table_name_fields} WHERE name = %s", bp_xprofile_fullname_field_name() ) );
+	$user_id_names     = $wpdb->get_results( $wpdb->prepare( "SELECT user_id, value as fullname FROM {$bp->profile->table_name_data} WHERE user_id IN ({$user_ids_sql}) AND field_id = %d", $fullname_field_id ) );
+
+	// Loop through names and override each user's fullname
+	foreach ( $user_id_names as $user ) {
+		if ( isset( $user_query->results[ $user->user_id ] ) ) {
+			$user_query->results[ $user->user_id ]->fullname = $user->fullname;
 		}
 	}
 }
 add_filter( 'bp_user_query_populate_extras', 'bp_xprofile_filter_user_query_populate_extras', 2, 2 );
+
+/**
+ * Filter radio profile fields output in administration screens.
+ *
+ * @since BuddyPress (2.0.0)
+ *
+ * @param string  $output
+ * @param object  $option
+ * @param integer $field_id
+ * @param boolean $selected
+ * @return string HTML output.
+ */
+function bp_xprofile_admin_format_radio( $output = '', $option = null, $field_id = 0, $selected = false ) {
+	if ( is_admin() && ! defined( 'DOING_AJAX' ) ) {
+		$output = '<label><input' . $selected . ' type="radio" name="field_' . absint( $field_id ) . '" id="option_' . esc_attr( $option->id ) . '" value="' . esc_attr( stripslashes( $option->name ) ) . '"> ' . esc_attr( stripslashes( $option->name ) ) . '</label><br/>';
+	}
+
+	return $output;
+}
+add_filter( 'bp_get_the_profile_field_options_radio', 'bp_xprofile_admin_format_radio', 10, 4 );
+
+/**
+ * Filter checkbox profile fields output in administration screens.
+ *
+ * @since BuddyPress (2.0.0)
+ *
+ * @param string  $output
+ * @param object  $option
+ * @param integer $field_id
+ * @param boolean $selected
+ * @param integer $k
+ * @return string HTML output.
+ */
+function bp_xprofile_admin_format_checkbox( $output= '', $option = null, $field_id = 0, $selected = false, $k = 0 ) {
+	if ( is_admin() && ! defined( 'DOING_AJAX' ) ) {
+		$output = '<label><input' . $selected . ' type="checkbox" name="field_' . absint( $field_id ) . '[]" id="field_' . esc_attr( $option->id ) . '_' . absint( $k ) . '" value="' . esc_attr( stripslashes( $option->name ) ) . '"> ' . esc_attr( stripslashes( $option->name ) ) . '</label><br/>';
+	}
+
+	return $output;
+}
+add_filter( 'bp_get_the_profile_field_options_checkbox', 'bp_xprofile_admin_format_checkbox', 10, 5 );
diff --git bp-xprofile/bp-xprofile-template.php bp-xprofile/bp-xprofile-template.php
index 4f684dc..4bd59c7 100644
--- bp-xprofile/bp-xprofile-template.php
+++ bp-xprofile/bp-xprofile-template.php
@@ -51,9 +51,13 @@ class BP_XProfile_Data_Template {
 	function next_group() {
 		$this->current_group++;
 
-		$this->group         = $this->groups[$this->current_group];
-		$this->group->fields = apply_filters( 'xprofile_group_fields', $this->group->fields, $this->group->id );
-		$this->field_count   = count( $this->group->fields );
+		$this->group       = $this->groups[$this->current_group];
+		$this->field_count = 0;
+
+		if( ! empty( $this->group->fields ) ) {
+			$this->group->fields = apply_filters( 'xprofile_group_fields', $this->group->fields, $this->group->id );
+			$this->field_count   = count( $this->group->fields );
+		}
 
 		return $this->group;
 	}
