Index: public/wp-admin/includes/plugin.php
===================================================================
--- public/wp-admin/includes/plugin.php	(revision 18004)
+++ public/wp-admin/includes/plugin.php	(working copy)
@@ -1593,10 +1593,11 @@
  * 	Default whitelisted option key names include "general," "discussion," and "reading," among others.
  * @param string $option_name The name of an option to sanitize and save.
  * @param unknown_type $sanitize_callback A callback function that sanitizes the option's value.
+ * @param string $capability The capability required to edit this option.
  * @return unknown
  */
-function register_setting( $option_group, $option_name, $sanitize_callback = '' ) {
-	global $new_whitelist_options;
+function register_setting( $option_group, $option_name, $sanitize_callback = '', $capability = '' ) {
+	global $new_whitelist_options, $option_group_caps;
 
 	if ( 'misc' == $option_group ) {
 		_deprecated_argument( __FUNCTION__, '3.0', __( 'The miscellaneous options group has been removed. Use another settings group.' ) );
@@ -1606,6 +1607,10 @@
 	$new_whitelist_options[ $option_group ][] = $option_name;
 	if ( $sanitize_callback != '' )
 		add_filter( "sanitize_option_{$option_name}", $sanitize_callback );
+
+	// Set the capability on the group for now - in the long run this could support per option caps
+	if ( $capability != '' )
+		$option_group_caps[ $option_group ] = $capability;
 }
 
 /**
Index: public/wp-admin/options.php
===================================================================
--- public/wp-admin/options.php	(revision 18004)
+++ public/wp-admin/options.php	(working copy)
@@ -24,12 +24,12 @@
 
 wp_reset_vars(array('action', 'option_page'));
 
-$capability = 'manage_options';
-
 if ( empty($option_page) ) // This is for back compat and will eventually be removed.
 	$option_page = 'options';
-else
-	$capability = apply_filters( "option_page_capability_{$option_page}", $capability );
+
+$capability = 'manage_options';
+if ( isset( $option_group_caps[ $option_page ] ) )
+	$capability = $option_group_caps[ $option_page ];
 
 if ( !current_user_can( $capability ) )
 	wp_die(__('Cheatin&#8217; uh?'));
Index: public/wp-content/themes/twentyeleven/inc/theme-options.php
===================================================================
--- public/wp-content/themes/twentyeleven/inc/theme-options.php	(revision 18004)
+++ public/wp-content/themes/twentyeleven/inc/theme-options.php	(working copy)
@@ -47,33 +47,15 @@
 		add_option( 'twentyeleven_theme_options', twentyeleven_get_default_theme_options() );
 
 	register_setting(
-		'twentyeleven_options',       // Options group, see settings_fields() call in theme_options_render_page()
-		'twentyeleven_theme_options', // Database option, see twentyeleven_get_theme_options()
-		'twentyeleven_theme_options_validate' // The sanitization callback, see twentyeleven_theme_options_validate()
+		'twentyeleven_options',                // Options group, see settings_fields() call in theme_options_render_page()
+		'twentyeleven_theme_options',          // Database option, see twentyeleven_get_theme_options()
+		'twentyeleven_theme_options_validate', // The sanitization callback, see twentyeleven_theme_options_validate()
+		'edit_theme_options'                        // The capability required to modify this option
 	);
 }
 add_action( 'admin_init', 'twentyeleven_theme_options_init' );
 
 /**
- * Change the capability required to save the 'twentyeleven_options' options group.
- *
- * @see twentyeleven_theme_options_init() First parameter to register_setting() is the name of the options group.
- * @see twentyeleven_theme_options_add_page() The edit_theme_options capability is used for viewing the page.
- *
- * By default, the options groups for all registered settings require the manage_options capability.
- * This filter is required to change our theme options page to edit_theme_options instead.
- * By default, only administrators have either of these capabilities, but the desire here is
- * to allow for finer-grained control for roles and users.
- *
- * @param string $capability The capability used for the page, which is manage_options by default.
- * @return string The capability to actually use.
- */
-function twentyeleven_option_page_capability( $capability ) {
-	return 'edit_theme_options';
-}
-add_filter( 'option_page_capability_twentyeleven_options', 'twentyeleven_option_page_capability' );
-
-/**
  * Add our theme options page to the admin menu.
  *
  * This function is attached to the admin_menu action hook.
