Index: wp-includes/functions.php
===================================================================
--- wp-includes/functions.php	(revision 15292)
+++ wp-includes/functions.php	(working copy)
@@ -3017,6 +3017,28 @@
 }
 
 /**
+ * Convert a numeric array to an associative array, based on a list of keys.
+ *
+ * @since 3.1.0
+ *
+ * @param array $list Numeric array to be converted
+ * @param array $keys A list of keys
+ * @return array Resulting array
+ */
+function wp_numeric_to_associative( $vector, $keys ) {
+	$assoc = array();
+
+	foreach ( $keys as $i => $key ) {
+		if ( isset( $vector[ $i ] ) )
+			$assoc[ $key ] = $vector[ $i ];
+		else
+			break;
+	}
+
+	return $assoc;
+}
+
+/**
  * Determines if default embed handlers should be loaded.
  *
  * Checks to make sure that the embeds library hasn't already been loaded. If
Index: wp-admin/includes/template.php
===================================================================
--- wp-admin/includes/template.php	(revision 15292)
+++ wp-admin/includes/template.php	(working copy)
@@ -2760,16 +2760,42 @@
 /**
  * Add a meta box to an edit form.
  *
+ * The list of arguments is below:
+ *		'id' (string) String for use in the 'id' attribute of tags.
+ * 		'title' (string) Title of the meta box.
+ * 		'callback' (callback) Function that fills the box with the desired content. The function should echo its output.
+ *		'callback_args' (array) A list of arguments to pass to the callback.
+ * 		'page' (string) The type of edit page on which to show the box (post, page, link).
+ * 		'context' (string) The context within the page where the boxes should show ('normal', 'advanced').
+ * 		'priority' (string) The priority within the context where the boxes should show ('high', 'low').
+ *
  * @since 2.5.0
  *
- * @param string $id String for use in the 'id' attribute of tags.
- * @param string $title Title of the meta box.
- * @param string $callback Function that fills the box with the desired content. The function should echo its output.
- * @param string $page The type of edit page on which to show the box (post, page, link).
- * @param string $context The context within the page where the boxes should show ('normal', 'advanced').
- * @param string $priority The priority within the context where the boxes should show ('high', 'low').
+ * @param string|array $args List of arguments
  */
-function add_meta_box($id, $title, $callback, $page, $context = 'advanced', $priority = 'default', $callback_args=null) {
+function add_meta_box( $args ) {
+	$argc = func_num_args();
+
+	if ( $argc > 1 ) {
+		_deprecated_argument( __FUNCTION__, '3.1', __('Passing individual arguments is deprecated. Use an associative array of arguments instead.') );
+
+		$argv = func_get_args();
+
+		$args = wp_numeric_to_associative( $argv, array( 'id', 'title', 'callback', 'page', 'context', 'priority', 'callback_args' ) );
+	}
+
+	$defaults = array(
+		'id' => '',
+		'title' => '',
+		'callback' => '',
+		'callback_args' => null,
+		'page' => '',
+		'context' => 'advanced',
+		'priority' => 'default',
+	);
+
+	extract( wp_parse_args( $args, $defaults ), EXTR_SKIP );
+
 	global $wp_meta_boxes;
 
 	if ( !isset($wp_meta_boxes) )
