Index: wp-admin/includes/template.php
===================================================================
--- wp-admin/includes/template.php	(revision 18372)
+++ wp-admin/includes/template.php	(working copy)
@@ -1336,6 +1336,27 @@
 	echo $output;
 }
 
+class WP_Settings_Page {
+	protected $settings_group;
+
+	function add_section( $section_id, $section_title, $fields = array() ) {
+		if ( method_exists( $this, 'section_' . $section_id ) )
+			$callback = array( $this, 'section_' . $section_id );
+		else
+			$callback = '__return_false';
+
+		add_settings_section( $section_id, $section_title, $callback, $this->settings_group );
+
+		foreach ( $fields as $id => $title ) {
+			$this->add_field( $id, $title, $section_id );
+		}
+	}
+
+	function add_field( $id, $title, $section ) {
+		add_settings_field( $id, $title, array( $this, 'field_' . $id ), $this->settings_group, $section );
+	}
+}
+
 /**
  * {@internal Missing Short Description}}
  *
Index: wp-admin/options-media.php
===================================================================
--- wp-admin/options-media.php	(revision 18372)
+++ wp-admin/options-media.php	(working copy)
@@ -27,115 +27,125 @@
 
 include('./admin-header.php');
 
-?>
+class WP_Settings_Media extends WP_Settings_Page {
+	protected $settings_group = 'media';
 
-<div class="wrap">
-<?php screen_icon(); ?>
-<h2><?php echo esc_html( $title ); ?></h2>
+	function __construct() {
+		$this->add_section( 'media', __( 'Image sizes' ), array(
+			'thumbnail_size' => __( 'Thumbnail size' ),
+			'medium_size' => __( 'Medium size' ),
+			'large_size' => __( 'Large size' ),
+		) );
 
-<form action="options.php" method="post">
-<?php settings_fields('media'); ?>
+		$this->add_section( 'embeds', __( 'Embeds' ), array(
+			'auto_embeds' => __( 'Auto-embeds' ),
+			'maximum_embed_size' => __( 'Maximum embed size' ),
+		) );
 
-<h3><?php _e('Image sizes') ?></h3>
-<p><?php _e('The sizes listed below determine the maximum dimensions in pixels to use when inserting an image into the body of a post.'); ?></p>
+		if ( !is_multisite() ) {
+			$this->add_section( 'uploads', __( 'Uploading files' ), array(
+				'upload_path' => __( 'Store uploads in this folder' ),
+				'upload_url_path' => __( 'Full URL path to files' ),
+				'upload_folders' => __( 'Uploads organization' ),
+			) );
+		}
+	}
 
-<table class="form-table">
-<tr valign="top">
-<th scope="row"><?php _e('Thumbnail size') ?></th>
-<td>
+
+	function section_media() {
+?>
+	<p><?php _e( 'The sizes listed below determine the maximum dimensions in pixels to use when inserting an image into the body of a post.' ); ?></p>
+<?php
+	}
+
+	function field_thumbnail_size() {
+?>
 <label for="thumbnail_size_w"><?php _e('Width'); ?></label>
 <input name="thumbnail_size_w" type="text" id="thumbnail_size_w" value="<?php form_option('thumbnail_size_w'); ?>" class="small-text" />
 <label for="thumbnail_size_h"><?php _e('Height'); ?></label>
 <input name="thumbnail_size_h" type="text" id="thumbnail_size_h" value="<?php form_option('thumbnail_size_h'); ?>" class="small-text" /><br />
 <input name="thumbnail_crop" type="checkbox" id="thumbnail_crop" value="1" <?php checked('1', get_option('thumbnail_crop')); ?>/>
 <label for="thumbnail_crop"><?php _e('Crop thumbnail to exact dimensions (normally thumbnails are proportional)'); ?></label>
-</td>
-</tr>
+<?php
+	}
 
-<tr valign="top">
-<th scope="row"><?php _e('Medium size') ?></th>
-<td><fieldset><legend class="screen-reader-text"><span><?php _e('Medium size'); ?></span></legend>
+	function field_medium_size() {
+?>
+<fieldset><legend class="screen-reader-text"><span><?php _e('Medium size'); ?></span></legend>
 <label for="medium_size_w"><?php _e('Max Width'); ?></label>
 <input name="medium_size_w" type="text" id="medium_size_w" value="<?php form_option('medium_size_w'); ?>" class="small-text" />
 <label for="medium_size_h"><?php _e('Max Height'); ?></label>
 <input name="medium_size_h" type="text" id="medium_size_h" value="<?php form_option('medium_size_h'); ?>" class="small-text" />
-</fieldset></td>
-</tr>
+</fieldset>
+<?php
+	}
 
-<tr valign="top">
-<th scope="row"><?php _e('Large size') ?></th>
-<td><fieldset><legend class="screen-reader-text"><span><?php _e('Large size'); ?></span></legend>
+	function field_large_size() {
+?>
+<fieldset><legend class="screen-reader-text"><span><?php _e('Large size'); ?></span></legend>
 <label for="large_size_w"><?php _e('Max Width'); ?></label>
 <input name="large_size_w" type="text" id="large_size_w" value="<?php form_option('large_size_w'); ?>" class="small-text" />
 <label for="large_size_h"><?php _e('Max Height'); ?></label>
 <input name="large_size_h" type="text" id="large_size_h" value="<?php form_option('large_size_h'); ?>" class="small-text" />
-</fieldset></td>
-</tr>
+</fieldset>
+<?php
+	}
 
-<?php do_settings_fields('media', 'default'); ?>
-</table>
-
-<h3><?php _e('Embeds') ?></h3>
-
-<table class="form-table">
-
-<tr valign="top">
-<th scope="row"><?php _e('Auto-embeds'); ?></th>
-<td><fieldset><legend class="screen-reader-text"><span><?php _e('When possible, embed the media content from a URL directly onto the page. For example: links to Flickr and YouTube.'); ?></span></legend>
+	function field_auto_embeds() {
+?>
+<fieldset><legend class="screen-reader-text"><span><?php _e('When possible, embed the media content from a URL directly onto the page. For example: links to Flickr and YouTube.'); ?></span></legend>
 <label for="embed_autourls"><input name="embed_autourls" type="checkbox" id="embed_autourls" value="1" <?php checked( '1', get_option('embed_autourls') ); ?>/> <?php _e('When possible, embed the media content from a URL directly onto the page. For example: links to Flickr and YouTube.'); ?></label>
-</fieldset></td>
-</tr>
+</fieldset>
+<?php
+	}
 
-<tr valign="top">
-<th scope="row"><?php _e('Maximum embed size') ?></th>
-<td>
+	function field_maximum_embed_size() {
+?>
 <label for="embed_size_w"><?php _e('Width'); ?></label>
 <input name="embed_size_w" type="text" id="embed_size_w" value="<?php form_option('embed_size_w'); ?>" class="small-text" />
 <label for="embed_size_h"><?php _e('Height'); ?></label>
 <input name="embed_size_h" type="text" id="embed_size_h" value="<?php form_option('embed_size_h'); ?>" class="small-text" />
 <?php if ( !empty($content_width) ) echo '<br />' . __("If the width value is left blank, embeds will default to the max width of your theme."); ?>
-</td>
-</tr>
+<?php
+	}
 
-<?php do_settings_fields('media', 'embeds'); ?>
-</table>
-
-<?php if ( !is_multisite() ) : ?>
-<h3><?php _e('Uploading Files'); ?></h3>
-<table class="form-table">
-<tr valign="top">
-<th scope="row"><label for="upload_path"><?php _e('Store uploads in this folder'); ?></label></th>
-<td><input name="upload_path" type="text" id="upload_path" value="<?php echo esc_attr(get_option('upload_path')); ?>" class="regular-text code" />
+	function field_upload_path() {
+?>
+<input name="upload_path" type="text" id="upload_path" value="<?php echo esc_attr(get_option('upload_path')); ?>" class="regular-text code" />
 <span class="description"><?php _e('Default is <code>wp-content/uploads</code>'); ?></span>
-</td>
-</tr>
+<?php
+	}
 
-<tr valign="top">
-<th scope="row"><label for="upload_url_path"><?php _e('Full URL path to files'); ?></label></th>
-<td><input name="upload_url_path" type="text" id="upload_url_path" value="<?php echo esc_attr( get_option('upload_url_path')); ?>" class="regular-text code" />
+	function field_upload_url_path() {
+?>
+<input name="upload_url_path" type="text" id="upload_url_path" value="<?php echo esc_attr( get_option('upload_url_path')); ?>" class="regular-text code" />
 <span class="description"><?php _e('Configuring this is optional. By default, it should be blank.'); ?></span>
-</td>
-</tr>
+<?php
+	}
 
-<tr>
-<th scope="row" colspan="2" class="th-full">
+	function field_upload_folders() {
+?>
 <label for="uploads_use_yearmonth_folders">
 <input name="uploads_use_yearmonth_folders" type="checkbox" id="uploads_use_yearmonth_folders" value="1"<?php checked('1', get_option('uploads_use_yearmonth_folders')); ?> />
 <?php _e('Organize my uploads into month- and year-based folders'); ?>
-</label>
-</th>
-</tr>
+<?php
+	}
+}
 
-<?php do_settings_fields('media', 'uploads'); ?>
-</table>
-<?php endif; ?>
+$wp_settings_page = new WP_Settings_Media;
+?>
 
+<div class="wrap">
+<?php screen_icon(); ?>
+<h2><?php echo esc_html( $title ); ?></h2>
+
+<form action="options.php" method="post">
+<?php settings_fields('media'); ?>
 <?php do_settings_sections('media'); ?>
 
 <?php submit_button(); ?>
 
 </form>
-
 </div>
 
 <?php include('./admin-footer.php'); ?>
