diff --git a/wp-admin/comment.php b/wp-admin/comment.php
index f5d662966f..30953f1d34 100644
--- a/wp-admin/comment.php
+++ b/wp-admin/comment.php
@@ -180,7 +180,7 @@ if ( $comment->comment_approved != '0' ) { // if not unapproved
 <table width="100%">
 <tr>
 <td><a class="button" href="<?php echo admin_url('edit-comments.php'); ?>"><?php esc_attr_e('No'); ?></a></td>
-<td class="textright"><input type='submit' class="button" value='<?php echo esc_attr($button); ?>' /></td>
+<td class="textright"><?php submit_button( $button, 'button' ); ?></td>
 </tr>
 </table>
 
diff --git a/wp-admin/custom-background.php b/wp-admin/custom-background.php
index ba9391ca56..6d974feff5 100644
--- a/wp-admin/custom-background.php
+++ b/wp-admin/custom-background.php
@@ -210,7 +210,7 @@ if ( get_background_image() ) {
 <td>
 <form method="post" action="">
 <?php wp_nonce_field('custom-background-remove', '_wpnonce-custom-background-remove'); ?>
-<input type="submit" class="button" name="remove-background" value="<?php esc_attr_e('Remove Background Image'); ?>" /><br/>
+<?php submit_button( __( 'Remove Background Image' ), 'button', 'remove-background', false ); ?><br/>
 <?php _e('This will remove the background image. You will not be able to restore any customizations.') ?>
 </form>
 </td>
@@ -223,7 +223,7 @@ if ( get_background_image() ) {
 <td>
 <form method="post" action="">
 <?php wp_nonce_field('custom-background-reset', '_wpnonce-custom-background-reset'); ?>
-<input type="submit" class="button" name="reset-background" value="<?php esc_attr_e('Restore Original Image'); ?>" /><br/>
+<?php submit_button( __( 'Restore Original Image' ), 'button', 'reset-background', false ); ?><br/>
 <?php _e('This will restore the original background image. You will not be able to restore any customizations.') ?>
 </form>
 </td>
@@ -236,7 +236,7 @@ if ( get_background_image() ) {
 <label for="upload"><?php _e('Choose an image from your computer:'); ?></label><br /><input type="file" id="upload" name="import" />
 <input type="hidden" name="action" value="save" />
 <?php wp_nonce_field('custom-background-upload', '_wpnonce-custom-background-upload') ?>
-<input type="submit" class="button" value="<?php esc_attr_e('Upload'); ?>" />
+<?php submit_button( __( 'Upload' ), 'button', 'submit', false ); ?>
 </p>
 </form>
 </td>
diff --git a/wp-admin/custom-header.php b/wp-admin/custom-header.php
index c085d6fc41..f1567f09df 100644
--- a/wp-admin/custom-header.php
+++ b/wp-admin/custom-header.php
@@ -468,7 +468,7 @@ class Custom_Image_Header {
 		<input type="file" id="upload" name="import" />
 		<input type="hidden" name="action" value="save" />
 		<?php wp_nonce_field( 'custom-header-upload', '_wpnonce-custom-header-upload' ) ?>
-		<input type="submit" class="button" value="<?php esc_attr_e( 'Upload' ); ?>" />
+		<?php submit_button( __( 'Upload' ), 'button', 'submit', false ); ?>
 	</p>
 	</form>
 </td>
@@ -501,7 +501,7 @@ class Custom_Image_Header {
 <th scope="row"><?php _e( 'Remove Image' ); ?></th>
 <td>
 	<p><?php _e( 'This will remove the header image. You will not be able to restore any customizations.' ) ?></p>
-	<input type="submit" class="button" name="removeheader" value="<?php esc_attr_e( 'Remove Header Image' ); ?>" />
+	<?php submit_button( __( 'Remove Header Image' ), 'button', 'removeheader', false ); ?>
 </td>
 </tr>
 	<?php endif;
@@ -511,7 +511,7 @@ class Custom_Image_Header {
 <th scope="row"><?php _e( 'Reset Image' ); ?></th>
 <td>
 	<p><?php _e( 'This will restore the original header image. You will not be able to restore any customizations.' ) ?></p>
-	<input type="submit" class="button" name="resetheader" value="<?php esc_attr_e( 'Restore Original Header Image' ); ?>" />
+	<?php submit_button( __( 'Restore Original Header Image' ), 'button', 'resetheader', false ); ?>
 </td>
 </tr>
 	<?php endif; ?>
@@ -550,7 +550,7 @@ class Custom_Image_Header {
 <th scope="row"><?php _e('Reset Text Color'); ?></th>
 <td>
 	<p><?php _e( 'This will restore the original header text. You will not be able to restore any customizations.' ) ?></p>
-	<input type="submit" class="button" name="resettext" value="<?php esc_attr_e( 'Restore Original Header Text' ); ?>" />
+	<?php submit_button( __( 'Restore Original Header Text' ), 'button', 'resettext', false ); ?>
 </td>
 </tr>
 	<?php } ?>
@@ -563,7 +563,7 @@ do_action( 'custom_header_options' );
 
 wp_nonce_field( 'custom-header-options', '_wpnonce-custom-header-options' ); ?>
 
-<?php submit_button(); ?>
+<?php submit_button( null, 'primary', 'save-header-options' ); ?>
 </form>
 </div>
 
diff --git a/wp-admin/edit-comments.php b/wp-admin/edit-comments.php
index fee37b57d4..a7ed3c7cec 100644
--- a/wp-admin/edit-comments.php
+++ b/wp-admin/edit-comments.php
@@ -202,7 +202,7 @@ if ( isset($_REQUEST['approved']) || isset($_REQUEST['deleted']) || isset($_REQU
 <p class="search-box">
 	<label class="screen-reader-text" for="comment-search-input"><?php _e( 'Search Comments' ); ?>:</label>
 	<input type="text" id="comment-search-input" name="s" value="<?php _admin_search_query(); ?>" />
-	<input type="submit" value="<?php esc_attr_e( 'Search Comments' ); ?>" class="button" />
+	<?php submit_button( __( 'Search Comments' ), 'button', 'submit', false ); ?>
 </p>
 
 <input type="hidden" name="mode" value="<?php echo esc_attr($mode); ?>" />
diff --git a/wp-admin/edit-form-comment.php b/wp-admin/edit-form-comment.php
index 42f3e9d846..c299e52165 100644
--- a/wp-admin/edit-form-comment.php
+++ b/wp-admin/edit-form-comment.php
@@ -71,7 +71,7 @@ $date = date_i18n( $datef, strtotime( $comment->comment_date ) );
 <?php echo "<a class='submitdelete deletion' href='" . wp_nonce_url("comment.php?action=" . ( !EMPTY_TRASH_DAYS ? 'deletecomment' : 'trashcomment' ) . "&amp;c=$comment->comment_ID&amp;_wp_original_http_referer=" . urlencode(wp_get_referer()), 'delete-comment_' . $comment->comment_ID) . "'>" . ( !EMPTY_TRASH_DAYS ? __('Delete Permanently') : __('Move to Trash') ) . "</a>\n"; ?>
 </div>
 <div id="publishing-action">
-<input type="submit" name="save" value="<?php esc_attr_e('Update Comment'); ?>" tabindex="4" class="button-primary" />
+<?php submit_button( __( 'Update Comment' ), 'primary', 'save', true, array( 'tabindex' => '4' ) ); ?>
 </div>
 <div class="clear"></div>
 </div>
diff --git a/wp-admin/edit-tags.php b/wp-admin/edit-tags.php
index 6649a3fc9f..37b169a4b5 100644
--- a/wp-admin/edit-tags.php
+++ b/wp-admin/edit-tags.php
@@ -225,7 +225,7 @@ endif; ?>
 <p class="search-box">
 	<label class="screen-reader-text" for="tag-search-input"><?php echo $tax->labels->search_items; ?>:</label>
 	<input type="text" id="tag-search-input" name="s" value="<?php _admin_search_query(); ?>" />
-	<input type="submit" value="<?php echo esc_attr( $tax->labels->search_items );  ?>" class="button" />
+	<?php submit_button( $tax->labels->search_items, 'button', 'submit', false ); ?>
 </p>
 </form>
 <br class="clear" />
@@ -334,9 +334,9 @@ if ( current_user_can($tax->cap->edit_terms) ) {
 if ( ! is_taxonomy_hierarchical($taxonomy) )
 	do_action('add_tag_form_fields', $taxonomy);
 do_action($taxonomy . '_add_form_fields', $taxonomy);
-?>
-<p class="submit"><input type="submit" class="button" name="submit" id="submit" value="<?php echo esc_attr( $tax->labels->add_new_item ); ?>" /></p>
-<?php
+
+submit_button( $tax->labels->add_new_item );
+
 // Back compat hooks. Deprecated in preference to {$taxonomy}_add_form
 if ( 'category' == $taxonomy )
 	do_action('edit_category_form', (object)array('parent' => 0) );
diff --git a/wp-admin/edit.php b/wp-admin/edit.php
index 659bdafcd8..3645ccf54e 100644
--- a/wp-admin/edit.php
+++ b/wp-admin/edit.php
@@ -223,7 +223,7 @@ $_SERVER['REQUEST_URI'] = remove_query_arg( array('locked', 'skipped', 'updated'
 <p class="search-box">
 	<label class="screen-reader-text" for="post-search-input"><?php echo $post_type_object->labels->search_items; ?>:</label>
 	<input type="text" id="post-search-input" name="s" value="<?php the_search_query(); ?>" />
-	<input type="submit" value="<?php echo esc_attr( $post_type_object->labels->search_items  ); ?>" class="button" />
+	<?php submit_button( $post_type_object->labels->search_items, 'button', 'submit', false ); ?>
 </p>
 
 <input type="hidden" name="post_status" class="post_status_page" value="<?php echo !empty($_REQUEST['post_status']) ? esc_attr($_REQUEST['post_status']) : 'all'; ?>" />
diff --git a/wp-admin/export.php b/wp-admin/export.php
index 492b4394fc..402d4b18bf 100644
--- a/wp-admin/export.php
+++ b/wp-admin/export.php
@@ -53,7 +53,7 @@ if ( $monthyears = $wpdb->get_results("SELECT DISTINCT YEAR(post_date) AS `year`
 <p><?php _e('This format, which we call WordPress eXtended RSS or WXR, will contain your posts, pages, comments, custom fields, categories, and tags.'); ?></p>
 <p><?php _e('Once you&#8217;ve saved the download file, you can use the Import function on another WordPress site to import this site.'); ?></p>
 <form action="" method="get">
-<?php submit_button( __('Download Export File'), 'secondary' ); ?>
+<?php submit_button( __('Download Export File'), 'button' ); ?>
 <input type="hidden" name="download" value="true" />
 </p>
 </form>
diff --git a/wp-admin/includes/class-wp-list-table.php b/wp-admin/includes/class-wp-list-table.php
index 90ca60cdcb..90cbfc72c7 100644
--- a/wp-admin/includes/class-wp-list-table.php
+++ b/wp-admin/includes/class-wp-list-table.php
@@ -253,7 +253,8 @@ class WP_List_Table {
 			echo "\t<option value='$name'>$title</option>\n";
 		echo "</select>\n";
 
-		echo "<input type='submit' value='" . esc_attr__( 'Apply' ) . "' name='doaction$two' id='doaction$two' class='button-secondary action' />\n";
+		submit_button( __( 'Apply' ), 'button-secondary action', "doaction$two", false );
+		echo "\n";
 	}
 
 	/**
diff --git a/wp-admin/includes/dashboard.php b/wp-admin/includes/dashboard.php
index 860c8ae503..035b3fe860 100644
--- a/wp-admin/includes/dashboard.php
+++ b/wp-admin/includes/dashboard.php
@@ -479,7 +479,7 @@ function wp_dashboard_quick_press_output() {
 			<input type="hidden" name="quickpress_post_ID" value="<?php echo $post_ID; ?>" />
 			<input type="hidden" name="post_type" value="post" />
 			<?php wp_nonce_field('add-post'); ?>
-			<input type="submit" name="save" id="save-post" class="button" tabindex="4" value="<?php esc_attr_e('Save Draft'); ?>" />
+			<?php submit_button( __( 'Save Draft' ), 'button', 'save', false, array( 'id' => 'save-post', 'tabindex'=> 4 ) ); ?>
 			<input type="reset" value="<?php esc_attr_e( 'Reset' ); ?>" class="button" />
 			<span id="publishing-action">
 				<input type="submit" name="publish" id="publish" accesskey="p" tabindex="5" class="button-primary" value="<?php current_user_can('publish_posts') ? esc_attr_e('Publish') : esc_attr_e('Submit for Review'); ?>" />
diff --git a/wp-admin/includes/file.php b/wp-admin/includes/file.php
index 2d3b282e28..6fa2310d8c 100644
--- a/wp-admin/includes/file.php
+++ b/wp-admin/includes/file.php
@@ -1066,10 +1066,8 @@ foreach ( (array) $extra_fields as $field ) {
 	if ( isset( $_POST[ $field ] ) )
 		echo '<input type="hidden" name="' . esc_attr( $field ) . '" value="' . esc_attr( stripslashes( $_POST[ $field ] ) ) . '" />';
 }
+submit_button( __( 'Proceed' ), 'button', 'upgrade' );
 ?>
-<p class="submit">
-<input id="upgrade" name="upgrade" type="submit" class="button" value="<?php esc_attr_e('Proceed'); ?>" />
-</p>
 </div>
 </form>
 <?php
diff --git a/wp-admin/includes/list-table-comments.php b/wp-admin/includes/list-table-comments.php
index 29dd0acb3b..5f5255c40b 100644
--- a/wp-admin/includes/list-table-comments.php
+++ b/wp-admin/includes/list-table-comments.php
@@ -201,19 +201,15 @@ class WP_Comments_Table extends WP_List_Table {
 					echo "\t<option value='" . esc_attr( $type ) . "'" . selected( $comment_type, $type, false ) . ">$label</option>\n";
 			?>
 			</select>
-			<input type="submit" id="post-query-submit" value="<?php esc_attr_e( 'Filter' ); ?>" class="button-secondary" />
 <?php
+			submit_button( __( 'Filter' ), 'secondary', 'post-query-submit', false );
 		}
 
 		if ( ( 'spam' == $comment_status || 'trash' == $comment_status ) && current_user_can( 'moderate_comments' ) ) {
 			wp_nonce_field( 'bulk-destroy', '_destroy_nonce' );
 			$title = ( 'spam' == $comment_status ) ? esc_attr__( 'Empty Spam' ) : esc_attr__( 'Empty Trash' );
-?>
-			<input type="submit" name="delete_all" id="delete_all" value="<?php echo $title ?>" class="button-secondary apply" />
-<?php
+			submit_button( $title, 'button-secondary apply', 'delete_all', false );
 		}
-?>
-<?php
 		do_action( 'manage_comments_nav', $comment_status );
 		echo '</div>';
 	}
diff --git a/wp-admin/includes/list-table-links.php b/wp-admin/includes/list-table-links.php
index 635a6c61ef..c9004fc3f1 100644
--- a/wp-admin/includes/list-table-links.php
+++ b/wp-admin/includes/list-table-links.php
@@ -69,8 +69,8 @@ class WP_Links_Table extends WP_List_Table {
 				'orderby' => 'name',
 			);
 			wp_dropdown_categories( $dropdown_options );
+			submit_button( __( 'Filter' ), 'secondary', 'post-query-submit', false );
 ?>
-			<input type="submit" id="post-query-submit" value="<?php esc_attr_e( 'Filter' ); ?>" class="button-secondary" />
 		</div>
 <?php
 	}
diff --git a/wp-admin/includes/list-table-media.php b/wp-admin/includes/list-table-media.php
index 4684dd7269..ff08d254a7 100644
--- a/wp-admin/includes/list-table-media.php
+++ b/wp-admin/includes/list-table-media.php
@@ -98,16 +98,14 @@ class WP_Media_Table extends WP_List_Table {
 			$this->months_dropdown( $post_type );
 
 			do_action( 'restrict_manage_posts' );
-?>
-			<input type="submit" id="post-query-submit" value="<?php esc_attr_e( 'Filter' ); ?>" class="button-secondary" />
-<?php
+			submit_button( __( 'Filter' ), 'secondary', 'post-query-submit', false );
 		}
 
-		if ( $detached ) { ?>
-			<input type="submit" id="find_detached" name="find_detached" value="<?php esc_attr_e( 'Scan for lost attachments' ); ?>" class="button-secondary" />
-		<?php } elseif ( $this->is_trash && current_user_can( $post_type_obj->cap->edit_others_posts ) ) { ?>
-			<input type="submit" id="delete_all" name="delete_all" value="<?php esc_attr_e( 'Empty Trash' ); ?>" class="button-secondary apply" />
-		<?php } ?>
+		if ( $detached ) {
+			submit_button( __( 'Scan for lost attachments' ), 'secondary', 'find_detached', false );
+		} elseif ( $this->is_trash && current_user_can( 'edit_others_posts' ) ) { 
+			submit_button( __( 'Empty Trash' ), 'button-secondary apply', 'delete_all', false );
+		} ?>
 		</div>
 <?php
 	}
diff --git a/wp-admin/includes/list-table-plugins.php b/wp-admin/includes/list-table-plugins.php
index b407499366..e83f907e3d 100644
--- a/wp-admin/includes/list-table-plugins.php
+++ b/wp-admin/includes/list-table-plugins.php
@@ -287,7 +287,7 @@ class WP_Plugins_Table extends WP_List_Table {
 
 		if ( 'recently_activated' == $status ) { ?>
 			<div class="alignleft actions">
-				<input type="submit" name="clear-recent-list" value="<?php esc_attr_e( 'Clear List' ) ?>" class="button-secondary" />
+				<?php submit_button( __( 'Clear List' ), 'secondary', 'clear-recent-list', false ); ?>
 			</div>
 		<?php }
 	}
diff --git a/wp-admin/includes/list-table-posts.php b/wp-admin/includes/list-table-posts.php
index 1275c2af14..07015292a9 100644
--- a/wp-admin/includes/list-table-posts.php
+++ b/wp-admin/includes/list-table-posts.php
@@ -223,16 +223,14 @@ class WP_Posts_Table extends WP_List_Table {
 				wp_dropdown_categories( $dropdown_options );
 			}
 			do_action( 'restrict_manage_posts' );
+			submit_button( __( 'Filter' ), 'secondary', 'post-query-submit', false );
 ?>
-			<input type="submit" id="post-query-submit" value="<?php esc_attr_e( 'Filter' ); ?>" class="button-secondary" />
 		</div>
 <?php
 		}
 
 		if ( $this->is_trash && current_user_can( $post_type_object->cap->edit_others_posts ) ) {
-?>
-		<input type="submit" name="delete_all" id="delete_all" value="<?php esc_attr_e( 'Empty Trash' ); ?>" class="button-secondary apply" />
-<?php
+			submit_button( __( 'Empty Trash' ), 'button-secondary apply', 'delete_all', false );
 		}
 	}
 
@@ -985,10 +983,8 @@ class WP_Posts_Table extends WP_List_Table {
 				<a accesskey="s" href="#inline-edit" title="<?php _e( 'Update' ); ?>" class="button-primary save alignright"><?php echo esc_attr( $update_text ); ?></a>
 				<img class="waiting" style="display:none;" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
 			<?php } else {
-				$update_text = __( 'Update' );
-			?>
-				<input accesskey="s" class="button-primary alignright" type="submit" name="bulk_edit" value="<?php echo esc_attr( $update_text ); ?>" />
-			<?php } ?>
+				submit_button( __( 'Update' ), 'button-primary alignright', 'bulk_edit', false, array( 'accesskey' => 's' ) );
+			} ?>
 			<input type="hidden" name="post_view" value="<?php echo esc_attr( $m ); ?>" />
 			<input type="hidden" name="screen" value="<?php echo esc_attr( $screen->id ); ?>" />
 			<br class="clear" />
diff --git a/wp-admin/includes/list-table-users.php b/wp-admin/includes/list-table-users.php
index a3858c4522..124cc11548 100644
--- a/wp-admin/includes/list-table-users.php
+++ b/wp-admin/includes/list-table-users.php
@@ -112,7 +112,7 @@ class WP_Users_Table extends WP_List_Table {
 			<option value=''><?php _e( 'Change role to&hellip;' ) ?></option>
 			<?php wp_dropdown_roles(); ?>
 		</select>
-		<input type="submit" value="<?php esc_attr_e( 'Change' ); ?>" name="changeit" class="button-secondary" />
+		<?php submit_button( __( 'Change' ), 'secondary', 'changeit', false ); ?>
 	</div>
 <?php
 	}
diff --git a/wp-admin/includes/media.php b/wp-admin/includes/media.php
index 937d13c9d7..d3935a2747 100644
--- a/wp-admin/includes/media.php
+++ b/wp-admin/includes/media.php
@@ -1218,7 +1218,7 @@ function get_media_item( $attachment_id, $args = null ) {
 	);
 
 	if ( $send )
-		$send = "<input type='submit' class='button' name='send[$attachment_id]' value='" . esc_attr__( 'Insert into Post' ) . "' />";
+		$send = get_submit_button( __( 'Insert into Post' ), 'button', "send[$attachment_id]", false );
 	if ( $delete && current_user_can( 'delete_post', $attachment_id ) ) {
 		if ( !EMPTY_TRASH_DAYS ) {
 			$delete = "<a href='" . wp_nonce_url( "post.php?action=delete&amp;post=$attachment_id", 'delete-attachment_' . $attachment_id ) . "' id='del[$attachment_id]' class='delete'>" . __( 'Delete Permanently' ) . '</a>';
@@ -1459,8 +1459,10 @@ SWFUpload.onload = function() {
 <div id="html-upload-ui">
 <?php do_action('pre-html-upload-ui'); ?>
 	<p id="async-upload-wrap">
-	<label class="screen-reader-text" for="async-upload"><?php _e('Upload'); ?></label>
-	<input type="file" name="async-upload" id="async-upload" /> <input type="submit" class="button" name="html-upload" value="<?php esc_attr_e('Upload'); ?>" /> <a href="#" onclick="try{top.tb_remove();}catch(e){}; return false;"><?php _e('Cancel'); ?></a>
+		<label class="screen-reader-text" for="async-upload"><?php _e('Upload'); ?></label>
+		<input type="file" name="async-upload" id="async-upload" />
+		<?php submit_button( __( 'Upload' ), 'button', 'html-upload', false ); ?>
+		<a href="#" onclick="try{top.tb_remove();}catch(e){}; return false;"><?php _e('Cancel'); ?></a>
 	</p>
 	<div class="clear"></div>
 	<p class="media-upload-size"><?php printf( __( 'Maximum upload file size: %d%s' ), $upload_size_unit, $sizes[$u] ); ?></p>
@@ -1492,7 +1494,7 @@ function media_upload_type_form($type = 'file', $errors = null, $id = null) {
 ?>
 
 <form enctype="multipart/form-data" method="post" action="<?php echo esc_attr($form_action_url); ?>" class="media-upload-form type-form validate" id="<?php echo $type; ?>-form">
-<input type="submit" class="hidden" name="save" value="" />
+<?php submit_button( '', 'hidden', 'save', false ); ?>
 <input type="hidden" name="post_id" id="post_id" value="<?php echo (int) $post_id; ?>" />
 <?php wp_nonce_field('media-form'); ?>
 
@@ -1525,7 +1527,7 @@ if ( $id ) {
 ?>
 </div>
 <p class="savebutton ml-submit">
-<input type="submit" class="button" name="save" value="<?php esc_attr_e( 'Save all changes' ); ?>" />
+<?php submit_button( __( 'Save all changes' ), 'button', 'save', false ); ?>
 </p>
 </form>
 <?php
@@ -1705,7 +1707,7 @@ jQuery(function($){
 </div>
 
 <p class="ml-submit">
-<input type="submit" class="button savebutton" style="display:none;" name="save" id="save-all" value="<?php esc_attr_e( 'Save all changes' ); ?>" />
+<?php submit_button( __( 'Save all changes' ), 'button savebutton', 'save', false, array( 'id' => 'save-all', 'style' => 'display: none;' ) ); ?>
 <input type="hidden" name="post_id" id="post_id" value="<?php echo (int) $post_id; ?>" />
 <input type="hidden" name="type" value="<?php echo esc_attr( $GLOBALS['type'] ); ?>" />
 <input type="hidden" name="tab" value="<?php echo esc_attr( $GLOBALS['tab'] ); ?>" />
@@ -1828,7 +1830,7 @@ function media_upload_library_form($errors) {
 <p id="media-search" class="search-box">
 	<label class="screen-reader-text" for="media-search-input"><?php _e('Search Media');?>:</label>
 	<input type="text" id="media-search-input" name="s" value="<?php the_search_query(); ?>" />
-	<input type="submit" value="<?php esc_attr_e( 'Search Media' ); ?>" class="button" />
+	<?php submit_button( __( 'Search Media' ), 'button', '', false ); ?>
 </p>
 
 <ul class="subsubsub">
@@ -1915,7 +1917,7 @@ foreach ($arc_result as $arc_row) {
 </select>
 <?php } ?>
 
-<input type="submit" id="post-query-submit" value="<?php echo esc_attr( __( 'Filter &#187;' ) ); ?>" class="button-secondary" />
+<?php submit_button( __( 'Filter &#187;' ), 'secondary', 'post-query-submit', false ); ?>
 
 </div>
 
@@ -1945,7 +1947,7 @@ jQuery(function($){
 <?php echo get_media_items(null, $errors); ?>
 </div>
 <p class="ml-submit">
-<input type="submit" class="button savebutton" name="save" value="<?php esc_attr_e( 'Save all changes' ); ?>" />
+<?php submit_button( __( 'Save all changes' ), 'button savebutton', 'save', false ); ?>
 <input type="hidden" name="post_id" id="post_id" value="<?php echo (int) $post_id; ?>" />
 </p>
 </form>
@@ -2143,7 +2145,7 @@ function _insert_into_post_button($type) {
 		<tr>
 			<td></td>
 			<td>
-				<input type="submit" class="button" name="insertonlybutton" value="' . esc_attr__('Insert into Post') . '" />
+				' . get_submit_button( __( 'Insert into Post' ), 'button', 'insertonlybutton', false ) . '
 			</td>
 		</tr>
 	';
diff --git a/wp-admin/includes/meta-boxes.php b/wp-admin/includes/meta-boxes.php
index 83859ef6fa..aba6ebc62c 100644
--- a/wp-admin/includes/meta-boxes.php
+++ b/wp-admin/includes/meta-boxes.php
@@ -22,7 +22,7 @@ function post_submit_meta_box($post) {
 
 <?php // Hidden submit button early on so that the browser chooses the right button when form is submitted with Return key ?>
 <div style="display:none;">
-<input type="submit" name="save" value="<?php esc_attr_e('Save'); ?>" />
+<?php submit_button( __( 'Save' ), 'button', 'save' ); ?>
 </div>
 
 <div id="minor-publishing-actions">
@@ -211,14 +211,14 @@ if ( !in_array( $post->post_status, array('publish', 'future', 'private') ) || 0
 	if ( $can_publish ) :
 		if ( !empty($post->post_date_gmt) && time() < strtotime( $post->post_date_gmt . ' +0000' ) ) : ?>
 		<input name="original_publish" type="hidden" id="original_publish" value="<?php esc_attr_e('Schedule') ?>" />
-		<input name="publish" type="submit" class="button-primary" id="publish" tabindex="5" accesskey="p" value="<?php esc_attr_e('Schedule') ?>" />
+		<?php submit_button( __( 'Schedule' ), 'primary', 'publish', false, array( 'tabindex' => '5', 'accesskey' => 'p' ) ); ?>
 <?php	else : ?>
 		<input name="original_publish" type="hidden" id="original_publish" value="<?php esc_attr_e('Publish') ?>" />
-		<input name="publish" type="submit" class="button-primary" id="publish" tabindex="5" accesskey="p" value="<?php esc_attr_e('Publish') ?>" />
+		<?php submit_button( __( 'Publish' ), 'primary', 'publish', false, array( 'tabindex' => '5', 'accesskey' => 'p' ) ); ?>
 <?php	endif;
 	else : ?>
 		<input name="original_publish" type="hidden" id="original_publish" value="<?php esc_attr_e('Submit for Review') ?>" />
-		<input name="publish" type="submit" class="button-primary" id="publish" tabindex="5" accesskey="p" value="<?php esc_attr_e('Submit for Review') ?>" />
+		<?php submit_button( __( 'Submit for Review' ), 'primary', 'publish', false, array( 'tabindex' => '5', 'accesskey' => 'p' ) ); ?>
 <?php
 	endif;
 } else { ?>
@@ -582,7 +582,7 @@ function link_submit_meta_box($link) {
 
 <?php // Hidden submit button early on so that the browser chooses the right button when form is submitted with Return key ?>
 <div style="display:none;">
-<input type="submit" name="save" value="<?php esc_attr_e('Save'); ?>" />
+<?php submit_button( __( 'Save' ), 'button', 'save', false ); ?>
 </div>
 
 <div id="minor-publishing-actions">
diff --git a/wp-admin/includes/nav-menu.php b/wp-admin/includes/nav-menu.php
index e030efb3ce..7b4cebc056 100644
--- a/wp-admin/includes/nav-menu.php
+++ b/wp-admin/includes/nav-menu.php
@@ -495,7 +495,7 @@ function wp_nav_menu_locations_meta_box() {
 	?>
 	<p class="button-controls">
 		<img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
-		<input type="submit"<?php disabled( $nav_menu_selected_id, 0 ); ?> class="button-primary" name="nav-menu-locations" value="<?php esc_attr_e( 'Save' ); ?>" />
+		<?php submit_button( __( 'Save' ), 'primary', 'nav-menu-locations', false, disabled( $nav_menu_selected_id, 0, false ) ); ?>
 	</p>
 	<?php
 }
@@ -671,7 +671,7 @@ function wp_nav_menu_item_post_type_meta_box( $object, $post_type ) {
 			<p class="quick-search-wrap">
 				<input type="text" class="quick-search regular-text input-with-default-title" title="<?php esc_attr_e('Search'); ?>" value="<?php echo $searched; ?>" name="quick-search-posttype-<?php echo $post_type_name; ?>" />
 				<img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
-				<input type="submit" class="quick-search-submit button-secondary hide-if-js" value="<?php esc_attr_e('Search'); ?>" />
+				<?php submit_button( __( 'Search' ), 'quick-search-submit button-secondary hide-if-js', 'submit', false ); ?>
 			</p>
 
 			<ul id="<?php echo $post_type_name; ?>-search-checklist" class="list:<?php echo $post_type_name?> categorychecklist form-no-clear">
@@ -898,7 +898,7 @@ function wp_nav_menu_item_taxonomy_meta_box( $object, $taxonomy ) {
 			<p class="quick-search-wrap">
 				<input type="text" class="quick-search regular-text input-with-default-title" title="<?php esc_attr_e('Search'); ?>" value="<?php echo $searched; ?>" name="quick-search-taxonomy-<?php echo $taxonomy_name; ?>" />
 				<img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
-				<input type="submit" class="quick-search-submit button-secondary hide-if-js" value="<?php esc_attr_e('Search'); ?>" />
+				<?php submit_button( __( 'Search' ), 'quick-search-submit button-secondary hide-if-js', 'submit', false ); ?>
 			</p>
 
 			<ul id="<?php echo $taxonomy_name; ?>-search-checklist" class="list:<?php echo $taxonomy_name?> categorychecklist form-no-clear">
diff --git a/wp-admin/includes/plugin-install.php b/wp-admin/includes/plugin-install.php
index 15155e6dfb..33d7f07e88 100644
--- a/wp-admin/includes/plugin-install.php
+++ b/wp-admin/includes/plugin-install.php
@@ -129,7 +129,7 @@ function install_search_form(){
 		</select>
 		<input type="text" name="s" value="<?php echo esc_attr($term) ?>" />
 		<label class="screen-reader-text" for="plugin-search-input"><?php _e('Search Plugins'); ?></label>
-		<input type="submit" id="plugin-search-input" value="<?php esc_attr_e('Search Plugins'); ?>" class="button" />
+		<?php submit_button( __( 'Search Plugins' ), 'button', 'plugin-search-input', false ); ?>
 	</form><?php
 }
 
diff --git a/wp-admin/includes/template.php b/wp-admin/includes/template.php
index 313c5db82f..cf4bb98b2e 100644
--- a/wp-admin/includes/template.php
+++ b/wp-admin/includes/template.php
@@ -495,9 +495,11 @@ function _list_meta_row( $entry, &$count ) {
 	$r .= "\n\t<tr id='meta-{$entry['meta_id']}' class='$style'>";
 	$r .= "\n\t\t<td class='left'><label class='screen-reader-text' for='meta[{$entry['meta_id']}][key]'>" . __( 'Key' ) . "</label><input name='meta[{$entry['meta_id']}][key]' id='meta[{$entry['meta_id']}][key]' tabindex='6' type='text' size='20' value='{$entry['meta_key']}' />";
 
-	$r .= "\n\t\t<div class='submit'><input name='deletemeta[{$entry['meta_id']}]' type='submit' ";
-	$r .= "class='delete:the-list:meta-{$entry['meta_id']}::_ajax_nonce=$delete_nonce deletemeta' tabindex='6' value='". esc_attr__( 'Delete' ) ."' />";
-	$r .= "\n\t\t<input name='updatemeta' type='submit' tabindex='6' value='". esc_attr__( 'Update' ) ."' class='add:the-list:meta-{$entry['meta_id']}::_ajax_nonce-add-meta=$update_nonce updatemeta' /></div>";
+	$r .= "\n\t\t<div class='submit'>";
+	$r .= get_submit_button( __( 'Delete' ), "delete:the-list:meta-{$entry['meta_id']}::_ajax_nonce=$delete_nonce deletemeta", "deletemeta[{$entry['meta_id']}]", false, array( 'tabindex' => '6' ) );
+	$r .= "\n\t\t";
+	$r .= get_submit_button( __( 'Update' ), "add:the-list:meta-{$entry['meta_id']}::_ajax_nonce-add-meta=$update_nonce updatemeta" , 'updatemeta', false, array( 'tabindex' => '6' ) );
+	$r .= "</div>";
 	$r .= wp_nonce_field( 'change-meta', '_ajax_nonce', false, false );
 	$r .= "</td>";
 
@@ -557,7 +559,7 @@ function meta_form() {
 </tr>
 
 <tr><td colspan="2" class="submit">
-<input type="submit" id="addmetasub" name="addmeta" class="add:the-list:newmeta" tabindex="9" value="<?php esc_attr_e( 'Add Custom Field' ) ?>" />
+<?php submit_button( __( 'Add Custom Field' ), 'add:the-list:newmeta', 'addmeta', false, array( 'id' => 'addmetasub', 'tabindex' => '9' ) ); ?>
 <?php wp_nonce_field( 'add-meta', '_ajax_nonce-add-meta', false ); ?>
 </td></tr>
 </tbody>
@@ -843,7 +845,7 @@ function wp_import_upload_form( $action ) {
 <input type="hidden" name="action" value="save" />
 <input type="hidden" name="max_file_size" value="<?php echo $bytes; ?>" />
 </p>
-<?php submit_button( __('Upload file and import'), 'secondary' ); ?>
+<?php submit_button( __('Upload file and import'), 'button' ); ?>
 </form>
 <?php
 	endif;
@@ -1357,7 +1359,7 @@ function find_posts_div($found_action = '') {
 		</div>
 		<div class="find-box-buttons">
 			<input id="find-posts-close" type="button" class="button alignleft" value="<?php esc_attr_e('Close'); ?>" />
-			<input id="find-posts-submit" type="submit" class="button-primary alignright" value="<?php esc_attr_e('Select'); ?>" />
+			<?php submit_button( __( 'Select' ), 'button-primary alignright', 'find-posts-submit', false ); ?>
 		</div>
 	</div>
 <?php
@@ -1889,7 +1891,7 @@ function screen_options($screen) {
 	$return = "<div class='screen-options'>\n";
 	if ( !empty($per_page_label) )
 		$return .= "<input type='text' class='screen-per-page' name='wp_screen_options[value]' id='$option' maxlength='3' value='$per_page' /> <label for='$option'>$per_page_label</label>\n";
-	$return .= "<input type='submit' class='button' value='" . esc_attr__('Apply') . "' />";
+	$return .= get_submit_button( __( 'Apply' ), 'button', '', false );
 	$return .= "<input type='hidden' name='wp_screen_options[option]' value='" . esc_attr($option) . "' />";
 	$return .= "</div>\n";
 	return $return;
@@ -2086,28 +2088,44 @@ function set_current_screen( $id =  '' ) {
 }
 
 /**
- * Echos a paragraph-wrapped submit button, with provided text and appropriate class
+ * Echos a submit button, with provided text and appropriate class
  *
  * @since 3.1.0
  *
  * @param string $text The text of the button (defaults to 'Save Changes')
  * @param string $type The type of button. One of: primary, secondary, delete
- * @param string $name The HTML name of the submit button. Defaults to "submit"
+ * @param string $name The HTML name of the submit button. Defaults to "submit". If no id attribute
+ *               is given in $other_attributes below, $name will be used as the button's id.
+ * @param bool $wrap True if the output button should be wrapped in a paragraph tag,
+ * 			   false otherwise. Defaults to true
+ * @param array|string $other_attributes Other attributes that should be output with the button,
+ *                     mapping attributes to their values, such as array( 'tabindex' => '1' ).
+ *                     These attributes will be ouput as attribute="value", such as tabindex="1".
+ *                     Defaults to no other attributes. Other attributes can also be provided as a
+ *                     string such as 'tabindex="1"', though the array format is typically cleaner.
  */
-function submit_button( $text = NULL, $type = 'primary', $name = 'submit' ) {
-	echo get_submit_button( $text, $type, $name );
+function submit_button( $text = NULL, $type = 'primary', $name = 'submit', $wrap = true, $other_attributes = NULL ) {
+	echo get_submit_button( $text, $type, $name, $wrap, $other_attributes );
 }
 
 /**
- * Returns a paragraph-wrapped submit button, with provided text and appropriate class
+ * Returns a submit button, with provided text and appropriate class
  *
  * @since 3.1.0
  *
  * @param string $text The text of the button (defaults to 'Save Changes')
  * @param string $type The type of button. One of: primary, secondary, delete
- * @param string $name The HTML name of the submit button. Defaults to "submit"
+ * @param string $name The HTML name of the submit button. Defaults to "submit". If no id attribute
+ *               is given in $other_attributes below, $name will be used as the button's id.
+ * @param bool $wrap True if the output button should be wrapped in a paragraph tag,
+ * 			   false otherwise. Defaults to true
+ * @param array|string $other_attributes Other attributes that should be output with the button,
+ *                     mapping attributes to their values, such as array( 'tabindex' => '1' ).
+ *                     These attributes will be ouput as attribute="value", such as tabindex="1".
+ *                     Defaults to no other attributes. Other attributes can also be provided as a
+ *                     string such as 'tabindex="1"', though the array format is typically cleaner.
  */
-function get_submit_button( $text = NULL, $type = 'primary', $name = 'submit' ) {
+function get_submit_button( $text = NULL, $type = 'primary', $name = 'submit', $wrap = true, $other_attributes = NULL ) {
 	switch ( $type ) :
 		case 'primary' :
 		case 'secondary' :
@@ -2120,6 +2138,29 @@ function get_submit_button( $text = NULL, $type = 'primary', $name = 'submit' )
 			$class = $type; // Custom cases can just pass in the classes they want to be used
 	endswitch;
 	$text = ( NULL == $text ) ? __( 'Save Changes' ) : $text;
-	return '<p class="submit"><input type="submit" name="' . esc_attr( $name ) . '" class="' . esc_attr( $class ) . '" value="' . esc_attr( $text ) . '" /></p>';
+	
+	$attributes = '';
+	if ( is_array( $other_attributes ) ) {
+		foreach ( $other_attributes as $attribute => $value ) {
+			$attributes .= $attribute . '="' . esc_attr( $value ) . '" '; // Trailing space is important
+		}
+	} else if ( !empty( $other_attributes ) ) { // Attributes provided as a string
+		$attributes = $other_attributes;
+	}
+	
+	// Default the id attribute to $name unless an id was specifically provided in $other_attributes
+	$id = 'id="' . esc_attr( $name ) . '" ';
+	if ( is_array( $other_attributes ) && array_key_exists( 'id', $other_attributes ) ) {
+		$id = 'id="' . esc_attr( $other_attributes['id'] ) . '" ';
+	}
+	
+	$button = '<input type="submit" name="' . esc_attr( $name ) . '" id="' . $id . '" class="' . esc_attr( $class );
+	$button	.= '" value="' . esc_attr( $text ) . '" ' . $attributes . ' />';
+	
+	if ( $wrap ) {
+		$button = '<p class="submit">' . $button . '</p>';
+	}
+	
+	return $button;
 }
 
diff --git a/wp-admin/includes/theme-install.php b/wp-admin/includes/theme-install.php
index 0598eb1744..96df9a189e 100644
--- a/wp-admin/includes/theme-install.php
+++ b/wp-admin/includes/theme-install.php
@@ -63,7 +63,7 @@ function install_theme_search_form() {
 	<option value="tag" <?php selected('tag', $type) ?>><?php _ex('Tag', 'Theme Installer'); ?></option>
 	</select>
 	<input type="text" name="s" size="30" value="<?php echo esc_attr($term) ?>" />
-	<input type="submit" name="search" value="<?php esc_attr_e('Search'); ?>" class="button" />
+	<?php submit_button( __( 'Search' ), 'button', 'search', false ); ?>
 </form>
 <?php
 }
@@ -106,7 +106,7 @@ function install_themes_dashboard() {
 
 </div>
 <br class="clear" />
-<p><input type="submit" name="search" value="<?php esc_attr_e('Find Themes'); ?>" class="button" /></p>
+<?php submit_button( __( 'Find Themes' ), 'button', 'search' ); ?>
 </form>
 <?php
 }
@@ -119,8 +119,7 @@ function install_themes_upload($page = 1) {
 <form method="post" enctype="multipart/form-data" action="<?php echo self_admin_url('update.php?action=upload-theme') ?>">
 	<?php wp_nonce_field( 'theme-upload') ?>
 	<input type="file" name="themezip" />
-	<input type="submit"
-	class="button" value="<?php esc_attr_e('Install Now') ?>" />
+	<?php submit_button( __( 'Install Now' ), 'button', '', false ); ?>
 </form>
 	<?php
 }
diff --git a/wp-admin/includes/widgets.php b/wp-admin/includes/widgets.php
index aef0dbafae..b5f66e3e87 100644
--- a/wp-admin/includes/widgets.php
+++ b/wp-admin/includes/widgets.php
@@ -203,7 +203,7 @@ function wp_widget_control( $sidebar_args ) {
 		</div>
 		<div class="alignright<?php if ( 'noform' === $has_form ) echo ' widget-control-noform'; ?>">
 		<img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" class="ajax-feedback " title="" alt="" />
-		<input type="submit" name="savewidget" class="button-primary widget-control-save" value="<?php esc_attr_e('Save'); ?>" />
+		<?php submit_button( __( 'Save' ), 'button-primary widget-control-save', 'savewidget', false ); ?>
 		</div>
 		<br class="clear" />
 	</div>
diff --git a/wp-admin/install.php b/wp-admin/install.php
index d23073b656..4714312a96 100644
--- a/wp-admin/install.php
+++ b/wp-admin/install.php
@@ -133,7 +133,7 @@ function display_setup_form( $error = null ) {
 			<td colspan="2"><label><input type="checkbox" name="blog_public" value="1" <?php checked( $blog_public ); ?> /> <?php _e( 'Allow my site to appear in search engines like Google and Technorati.' ); ?></label></td>
 		</tr>
 	</table>
-	<p class="step"><input type="submit" name="Submit" value="<?php esc_attr_e( 'Install WordPress' ); ?>" class="button" /></p>
+	<p class="step"><?php submit_button( __( 'Install WordPress' ), 'button', 'Submit', false ); ?></p>
 </form>
 <?php
 } // end display_setup_form()
diff --git a/wp-admin/link-manager.php b/wp-admin/link-manager.php
index ba2489c7ab..0a99b24211 100644
--- a/wp-admin/link-manager.php
+++ b/wp-admin/link-manager.php
@@ -76,7 +76,7 @@ if ( isset($_REQUEST['deleted']) ) {
 <p class="search-box">
 	<label class="screen-reader-text" for="link-search-input"><?php _e( 'Search Links' ); ?>:</label>
 	<input type="text" id="link-search-input" name="s" value="<?php _admin_search_query(); ?>" />
-	<input type="submit" value="<?php esc_attr_e( 'Search Links' ); ?>" class="button" />
+	<?php submit_button( __( 'Search Links' ), 'button', '', false ); ?>
 </p>
 </form>
 <br class="clear" />
diff --git a/wp-admin/media-upload.php b/wp-admin/media-upload.php
index 83cfb4cf60..fd47ccf8cb 100644
--- a/wp-admin/media-upload.php
+++ b/wp-admin/media-upload.php
@@ -90,9 +90,7 @@ if ( isset($_GET['inline']) ) {
 	<input type="hidden" name="post_id" id="post_id" value="0" />
 	<?php wp_nonce_field('media-form'); ?>
 	<div id="media-items" class="hide-if-no-js"> </div>
-	<p>
-	<input type="submit" class="button savebutton hide-if-no-js" name="save" value="<?php esc_attr_e( 'Save all changes' ); ?>" />
-	</p>
+	<?php submit_button( __( 'Save all changes' ), 'button savebutton hide-if-no-js', 'save' ); ?>
 	</form>
 	</div>
 
diff --git a/wp-admin/media.php b/wp-admin/media.php
index b171e97d39..48aab7ced6 100644
--- a/wp-admin/media.php
+++ b/wp-admin/media.php
@@ -91,7 +91,7 @@ case 'edit' :
 
 <form method="post" action="" class="media-upload-form" id="media-single-form">
 <p class="submit" style="padding-bottom: 0;">
-<input type="submit" class="button-primary" name="save" value="<?php esc_attr_e('Update Media'); ?>" />
+<?php submit_button( __( 'Update Media' ), 'primary', 'save', false ); ?>
 </p>
 
 <div class="media-single">
@@ -100,7 +100,7 @@ case 'edit' :
 </div>
 </div>
 
-<?php submit_button( __('Update Media') ); ?>
+<?php submit_button( __( 'Update Media' ), 'primary', 'save' ); ?>
 <input type="hidden" name="post_id" id="post_id" value="<?php echo isset($post_id) ? esc_attr($post_id) : ''; ?>" />
 <input type="hidden" name="attachment_id" id="attachment_id" value="<?php echo esc_attr($att_id); ?>" />
 <input type="hidden" name="action" value="editattachment" />
diff --git a/wp-admin/ms-delete-site.php b/wp-admin/ms-delete-site.php
index 62f5b80314..8b26b0b6a3 100644
--- a/wp-admin/ms-delete-site.php
+++ b/wp-admin/ms-delete-site.php
@@ -70,7 +70,7 @@ Webmaster
 	<form method="post" name="deletedirect">
 		<input type="hidden" name="action" value="deleteblog" />
 		<p><input id="confirmdelete" type="checkbox" name="confirmdelete" value="1" /> <label for="confirmdelete"><strong><?php printf( __( "I'm sure I want to permanently disable my site, and I am aware I can never get it back or use %s again." ), is_subdomain_install() ? $current_blog->domain : $current_blog->domain . $current_blog->path ); ?></strong></label></p>
-		<p class="submit"><input type="submit" value="<?php esc_attr_e( 'Delete My Site Permanently' ) ?>" /></p>
+		<?php submit_button( __( 'Delete My Site Permanently' ) ); ?>
 	</form>
 	<?php
 }
diff --git a/wp-admin/my-sites.php b/wp-admin/my-sites.php
index f38ac1c16a..0c3c5419a9 100644
--- a/wp-admin/my-sites.php
+++ b/wp-admin/my-sites.php
@@ -102,9 +102,7 @@ if ( $updated ) { ?>
 	</table>
 	<input type="hidden" name="action" value="updateblogsettings" />
 	<?php wp_nonce_field( 'update-my-sites' ); ?>
-	<p>
-	 <input type="submit" class="button-primary" value="<?php _e( 'Save Changes' ) ?>" />
-	</p>
+	<?php submit_button(); ?>
 	</form>
 	</div>
 <?php
diff --git a/wp-admin/nav-menus.php b/wp-admin/nav-menus.php
index a3db2ffefb..402fccc717 100644
--- a/wp-admin/nav-menus.php
+++ b/wp-admin/nav-menus.php
@@ -494,7 +494,7 @@ require_once( './admin-header.php' );
 						<option value="0"><?php esc_html_e('Add New Menu'); ?></option>
 					</select>
 					<input type="hidden" name="action" value="edit" />
-					<input class="button-secondary" name="select_menu" type="submit" value="<?php esc_attr_e('Select'); ?>" />
+					<?php submit_button( __( 'Select' ), 'secondary', 'select_menu', false ); ?>
 				</form>
 			</div>
 			<div class="nav-tabs-wrapper">
@@ -556,7 +556,7 @@ require_once( './admin-header.php' );
 								<?php endif; ?>
 								<br class="clear" />
 								<div class="publishing-action">
-									<input class="button-primary menu-save" name="save_menu" type="submit" value="<?php empty($nav_menu_selected_id) ? esc_attr_e('Create Menu') : esc_attr_e('Save Menu'); ?>" />
+									<?php submit_button( empty( $nav_menu_selected_id ) ? __( 'Create Menu' ) : __( 'Save Menu' ), 'button-primary menu-save', 'save_menu', false ); ?>
 								</div><!-- END .publishing-action -->
 
 								<?php if ( ! empty( $nav_menu_selected_id ) ) : ?>
@@ -593,7 +593,7 @@ require_once( './admin-header.php' );
 					<div id="nav-menu-footer">
 						<div class="major-publishing-actions">
 						<div class="publishing-action">
-							<input class="button-primary menu-save" name="save_menu" type="submit" value="<?php empty($nav_menu_selected_id) ? esc_attr_e('Create Menu') : esc_attr_e('Save Menu'); ?>" />
+							<?php submit_button( empty( $nav_menu_selected_id ) ? __( 'Create Menu' ) : __( 'Save Menu' ), 'button-primary menu-save', 'save_menu', false ); ?>
 						</div>
 						</div>
 					</div><!-- /#nav-menu-footer -->
diff --git a/wp-admin/network.php b/wp-admin/network.php
index 114a09a780..7d6c788552 100644
--- a/wp-admin/network.php
+++ b/wp-admin/network.php
@@ -275,9 +275,9 @@ function network_step1( $errors = false ) {
 				</td>
 			</tr>
 		</table>
-		<p class='submit'><input class="button-primary" name='submit' type='submit' value='<?php esc_attr_e( 'Install' ); ?>' /></p>
+		<?php submit_button( __( 'Install' ), 'primary', 'submit' ); ?>
 	</form>
-		<?php
+	<?php
 }
 
 /**
diff --git a/wp-admin/network/edit.php b/wp-admin/network/edit.php
index 32e214a17b..9e4cef4402 100644
--- a/wp-admin/network/edit.php
+++ b/wp-admin/network/edit.php
@@ -347,7 +347,7 @@ switch ( $_GET['action'] ) {
 					<input type="hidden" name="_wp_http_referer" value="<?php echo esc_attr( wp_get_referer() ); ?>" />
 					<?php wp_nonce_field( $_GET['action2'], '_wpnonce', false ); ?>
 					<p><?php echo esc_html( stripslashes( $_GET['msg'] ) ); ?></p>
-					<?php submit_button( __('Confirm'), 'secondary' ); ?>
+					<?php submit_button( __('Confirm'), 'button' ); ?>
 				</form>
 			</body>
 		</html>
diff --git a/wp-admin/network/sites.php b/wp-admin/network/sites.php
index f1dd304db5..3d6e9fb1ad 100644
--- a/wp-admin/network/sites.php
+++ b/wp-admin/network/sites.php
@@ -99,7 +99,7 @@ require_once( '../admin-header.php' );
 <p class="search-box">
 <input type="hidden" name="action" value="blogs" />
 <input type="text" name="s" value="<?php echo esc_attr( $s ); ?>" />
-<input type="submit" class="button" value="<?php esc_attr_e( 'Search Site by' ) ?>" />
+<?php submit_button( __( 'Search Site by' ), 'button', 'submit', false ); ?>
 <select name="searchaction">
 	<option value="name" selected="selected"><?php _e( 'Name' ); ?></option>
 	<option value="id"><?php _e( 'ID' ); ?></option>
diff --git a/wp-admin/network/themes.php b/wp-admin/network/themes.php
index c3de39d79b..621092462b 100644
--- a/wp-admin/network/themes.php
+++ b/wp-admin/network/themes.php
@@ -40,8 +40,7 @@ $allowed_themes = get_site_allowed_themes();
 		<?php screen_icon(); ?>
 		<h2><?php _e( 'Network Themes' ) ?></h2>
 		<p><?php _e( 'Themes must be enabled for your network before they will be available to individual sites.' ) ?></p>
-		<p class="submit">
-			<input type="submit" value="<?php _e( 'Apply Changes' ) ?>" /></p>
+		<?php submit_button( __( 'Apply Changes' ), '', '' ); ?>
 		<table class="widefat">
 			<thead>
 				<tr>
@@ -83,9 +82,8 @@ $allowed_themes = get_site_allowed_themes();
 			<?php } ?>
 			</tbody>
 		</table>
-
-		<p class="submit">
-			<input type="submit" value="<?php _e( 'Apply Changes' ) ?>" /></p>
+		
+		<?php submit_button( __( 'Apply Changes' ), '', '' ); ?>
 	</form>
 
 	<h3><?php _e( 'Total' )?></h3>
diff --git a/wp-admin/network/users.php b/wp-admin/network/users.php
index fa9f5ad720..345554f549 100644
--- a/wp-admin/network/users.php
+++ b/wp-admin/network/users.php
@@ -73,7 +73,7 @@ if ( isset( $_REQUEST['updated'] ) && $_REQUEST['updated'] == 'true' && ! empty(
 	<form action="" method="get" class="search-form">
 		<p class="search-box">
 		<input type="text" name="s" value="<?php echo esc_attr( $usersearch ); ?>" class="search-input" id="user-search-input" />
-		<input type="submit" id="post-query-submit" value="<?php esc_attr_e( 'Search Users' ) ?>" class="button" />
+		<?php submit_button( __( 'Search Users' ), 'button', 'post-query-submit', false ); ?>
 		</p>
 	</form>
 
diff --git a/wp-admin/options.php b/wp-admin/options.php
index 7acd64eebf..6a7980a3a5 100644
--- a/wp-admin/options.php
+++ b/wp-admin/options.php
@@ -212,7 +212,7 @@ endforeach;
 
 <input type="hidden" name="page_options" value="<?php echo esc_attr( implode( ',', $options_to_update ) ); ?>" />
 
-<?php submit_button( __('Save Changes') ); ?>
+<?php submit_button( __( 'Save Changes' ), 'primary', 'Update' ); ?>
 
   </form>
 </div>
diff --git a/wp-admin/plugin-editor.php b/wp-admin/plugin-editor.php
index 7440344c1c..b3ccfbdbc8 100644
--- a/wp-admin/plugin-editor.php
+++ b/wp-admin/plugin-editor.php
@@ -185,7 +185,7 @@ default:
 	}
 ?>
 		</select>
-		<input type="submit" name="Submit" value="<?php esc_attr_e('Select') ?>" class="button" />
+		<?php submit_button( __( 'Select' ), 'button', 'Submit', false ); ?>
 	</form>
 </div>
 <br class="clear" />
@@ -229,10 +229,12 @@ foreach ( $plugin_files as $plugin_file ) :
 	<?php } ?>
 	<p class="submit">
 	<?php
-		if ( isset($_GET['phperror']) )
-			echo "<input type='hidden' name='phperror' value='1' /><input type='submit' name='submit' class='button-primary' value='" . esc_attr__('Update File and Attempt to Reactivate') . "' tabindex='2' />";
-		else
-			echo "<input type='submit' name='submit' class='button-primary' value='" . esc_attr__('Update File') . "' tabindex='2' />";
+		if ( isset($_GET['phperror']) ) {
+			echo "<input type='hidden' name='phperror' value='1' />";
+			submit_button( __( 'Update File and Attempt to Reactivate' ), 'primary', 'submit', false, array( 'tabindex' => '2' ) );
+		} else {
+			submit_button( __( 'Update File' ), 'primary', 'submit', false, array( 'tabindex' => '2' ) );
+		}
 	?>
 	</p>
 <?php else : ?>
diff --git a/wp-admin/plugins.php b/wp-admin/plugins.php
index f9804b056b..313602a29a 100644
--- a/wp-admin/plugins.php
+++ b/wp-admin/plugins.php
@@ -253,10 +253,10 @@ if ( $action ) {
 							echo '<input type="hidden" name="checked[]" value="' . esc_attr($plugin) . '" />';
 					?>
 					<?php wp_nonce_field('bulk-plugins') ?>
-					<input type="submit" name="submit" value="<?php $data_to_delete ? esc_attr_e('Yes, Delete these files and data') : esc_attr_e('Yes, Delete these files') ?>" class="button" />
+					<?php submit_button( $data_to_delete ? __( 'Yes, Delete these files and data' ) : __( 'Yes, Delete these files' ), 'button', 'submit', false ); ?>
 				</form>
 				<form method="post" action="<?php echo esc_url(wp_get_referer()); ?>" style="display:inline;">
-					<input type="submit" name="submit" value="<?php esc_attr_e('No, Return me to the plugin list') ?>" class="button" />
+					<?php submit_button( __( 'No, Return me to the plugin list' ), 'button', 'submit', false ); ?>
 				</form>
 
 				<p><a href="#" onclick="jQuery('#files-list').toggle(); return false;"><?php _e('Click to view entire list of files which will be deleted'); ?></a></p>
@@ -357,7 +357,7 @@ if ( !empty($invalid) )
 <p class="search-box">
 	<label class="screen-reader-text" for="plugin-search-input"><?php _e( 'Search Plugins' ); ?>:</label>
 	<input type="text" id="plugin-search-input" name="s" value="<?php _admin_search_query(); ?>" />
-	<input type="submit" value="<?php esc_attr_e( 'Search Installed Plugins' ); ?>" class="button" />
+	<?php submit_button( __( 'Search Installed Plugins' ), 'button', '', false ); ?>
 </p>
 </form>
 
diff --git a/wp-admin/press-this.php b/wp-admin/press-this.php
index fcf366bd0b..78891001f8 100644
--- a/wp-admin/press-this.php
+++ b/wp-admin/press-this.php
@@ -472,12 +472,14 @@ var photostorage = false;
 				<h3><?php _e('Publish') ?></h3>
 				<div class="inside">
 					<p>
-						<input class="button" type="submit" name="draft" value="<?php esc_attr_e('Save Draft') ?>" id="save" />
-						<?php if ( current_user_can('publish_posts') ) { ?>
-							<input class="button-primary" type="submit" name="publish" value="<?php esc_attr_e('Publish') ?>" id="publish" />
-						<?php } else { ?>
-							<br /><br /><input class="button-primary" type="submit" name="review" value="<?php esc_attr_e('Submit for Review') ?>" id="review" />
-						<?php } ?>
+					<?php
+						submit_button( __( 'Save Draft' ), 'button', 'draft', false, array( 'id' => 'save' ) );
+						if ( current_user_can('publish_posts') ) {
+							submit_button( __( 'Publish' ), 'primary', 'publish', false );
+						} else {
+							echo '<br /><br />';
+							submit_button( __( 'Submit for Review' ), 'primary', 'review', false );
+						} ?>
 						<img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" id="saving" style="display:none;" />
 					</p>
 				</div>
diff --git a/wp-admin/setup-config.php b/wp-admin/setup-config.php
index 6089a23bf9..457256e5fe 100644
--- a/wp-admin/setup-config.php
+++ b/wp-admin/setup-config.php
@@ -146,7 +146,7 @@ switch($step) {
 		</tr>
 	</table>
 	<?php if ( isset( $_GET['noapi'] ) ) { ?><input name="noapi" type="hidden" value="true" /><?php } ?>
-	<p class="step"><input name="submit" type="submit" value="Submit" class="button" /></p>
+	<p class="step"><?php submit_button( __( 'Submit' ), 'button', 'submit', false ); ?></p>
 </form>
 <?php
 	break;
diff --git a/wp-admin/theme-editor.php b/wp-admin/theme-editor.php
index 6525f68911..13b4761a12 100644
--- a/wp-admin/theme-editor.php
+++ b/wp-admin/theme-editor.php
@@ -149,7 +149,7 @@ $desc_header = ( $description != $file_show ) ? "<strong>$description</strong> (
 }
 ?>
 		</select>
-		<input type="submit" name="Submit" value="<?php esc_attr_e('Select') ?>" class="button" />
+		<?php submit_button( __( 'Select' ), 'button', 'Submit', false ); ?>
 	</form>
 </div>
 <br class="clear" />
@@ -224,13 +224,10 @@ if ($allowed_files) :
 	<?php } ?>
 
 		<div>
-<?php if ( is_writeable($file) ) : ?>
-			<p class="submit">
 <?php
-	echo "<input type='submit' name='submit' class='button-primary' value='" . esc_attr__('Update File') . "' tabindex='2' />";
-?>
-</p>
-<?php else : ?>
+	if ( is_writeable($file) ) :
+		submit_button( __( 'Update File' ), 'primary', 'submit', true, array( 'tabindex' => '2' ) );
+	else : ?>
 <p><em><?php _e('You need to make this file writable before you can save your changes. See <a href="http://codex.wordpress.org/Changing_File_Permissions">the Codex</a> for more information.'); ?></em></p>
 <?php endif; ?>
 		</div>
diff --git a/wp-admin/themes.php b/wp-admin/themes.php
index f1b15a59eb..a74d41b1f4 100644
--- a/wp-admin/themes.php
+++ b/wp-admin/themes.php
@@ -133,7 +133,7 @@ if ( ! current_user_can( 'switch_themes' ) ) {
 <p class="search-box">
 	<label class="screen-reader-text" for="theme-search-input"><?php _e('Search Themes'); ?>:</label>
 	<input type="text" id="theme-search-input" name="s" value="<?php _admin_search_query(); ?>" />
-	<input type="submit" value="<?php esc_attr_e('Search Themes'); ?>" class="button" />
+	<?php submit_button( __( 'Search Themes' ), 'button', 'submit', false ); ?>
 	<a id="filter-click" href="?filter=1"><?php _e( 'Feature Filter' ); ?></a>
 </p>
 
@@ -166,7 +166,7 @@ if ( ! current_user_can( 'switch_themes' ) ) {
 	<?php endforeach; ?>
 
 	<div class="feature-container">
-		<input style="margin-left: 120px" type="submit" class="button-secondary submitter" value="<?php esc_attr_e( 'Apply Filters' ); ?>" />
+		<?php submit_button( __( 'Apply Filters' ), 'button-secondary submitter', 'submit', false, array( 'style' => 'margin-left: 120px' ) ); ?>
 		&nbsp;
 		<small><a id="mini-filter-click" href="<?php echo admin_url( 'themes.php' ); ?>"><?php _e( 'Close filters' )?></a></small>
 	</div>
diff --git a/wp-admin/update-core.php b/wp-admin/update-core.php
index 67757a8d7c..44e43a652d 100644
--- a/wp-admin/update-core.php
+++ b/wp-admin/update-core.php
@@ -58,14 +58,14 @@ function list_core_update( $update ) {
 	echo '<input name="version" value="'. esc_attr($update->current) .'" type="hidden"/>';
 	echo '<input name="locale" value="'. esc_attr($update->locale) .'" type="hidden"/>';
 	if ( $show_buttons ) {
-		echo '<input id="upgrade" class="button" type="submit" value="' . esc_attr($submit) . '" name="upgrade" />&nbsp;';
-		echo '<a href="' . esc_url($update->package) . '" class="button">' . $download . '</a>&nbsp;';
+		submit_button( $submit, 'button', 'upgrade', false );
+		echo '&nbsp;<a href="' . esc_url($update->package) . '" class="button">' . $download . '</a>&nbsp;';
 	}
 	if ( 'en_US' != $update->locale )
 		if ( !isset( $update->dismissed ) || !$update->dismissed )
-			echo '<input id="dismiss" class="button" type="submit" value="' . esc_attr__('Hide this update') . '" name="dismiss" />';
+			submit_button( __('Hide this update'), 'button', 'dismiss', false );
 		else
-			echo '<input id="undismiss" class="button" type="submit" value="' . esc_attr__('Bring back this update') . '" name="undismiss" />';
+			submit_button( __('Bring back this update'), 'button', 'undismiss', false );
 	echo '</p>';
 	if ( 'en_US' != $update->locale && ( !isset($wp_local_package) || $wp_local_package != $update->locale ) )
 	    echo '<p class="hint">'.__('This localized version contains both the translation and various other localization fixes. You can skip upgrading if you want to keep your current translation.').'</p>';
diff --git a/wp-admin/upload.php b/wp-admin/upload.php
index 2d9184b6c0..385ac98383 100644
--- a/wp-admin/upload.php
+++ b/wp-admin/upload.php
@@ -206,7 +206,7 @@ if ( !empty($message) ) { ?>
 <p class="search-box">
 	<label class="screen-reader-text" for="media-search-input"><?php _e( 'Search Media' ); ?>:</label>
 	<input type="text" id="media-search-input" name="s" value="<?php the_search_query(); ?>" />
-	<input type="submit" value="<?php esc_attr_e( 'Search Media' ); ?>" class="button" />
+	<?php submit_button( __( 'Search Media' ), 'button', 'submit', false ); ?>
 </p>
 </form>
 
diff --git a/wp-admin/user-new.php b/wp-admin/user-new.php
index 825795693b..2681b99561 100644
--- a/wp-admin/user-new.php
+++ b/wp-admin/user-new.php
@@ -262,8 +262,9 @@ $new_user_send_password = !$_POST || isset($_POST['send_password']);
 	</tr>
 	<?php } ?>
 </table>
-
-<?php submit_button( __('Add User'), 'primary', 'adduser' ); ?>
+<p class="submit">
+	<input name="adduser" type="submit" id="addusersub" class="button-primary" value="<?php esc_attr_e('Add User') ?>" />
+</p>
 </form>
 
 </div>
diff --git a/wp-admin/users.php b/wp-admin/users.php
index b7b6d75973..a24a6d892a 100644
--- a/wp-admin/users.php
+++ b/wp-admin/users.php
@@ -357,7 +357,7 @@ if ( $usersearch )
 <p class="search-box">
 	<label class="screen-reader-text" for="user-search-input"><?php _e( 'Search Users' ); ?>:</label>
 	<input type="text" id="user-search-input" name="usersearch" value="<?php echo esc_attr($usersearch); ?>" />
-	<input type="submit" value="<?php esc_attr_e( 'Search Users' ); ?>" class="button" />
+	<?php submit_button( __( 'Search Users' ), 'submit', 'submit', false ); ?>
 </p>
 </form>
 
diff --git a/wp-admin/widgets.php b/wp-admin/widgets.php
index 4c29b13354..c985bff404 100644
--- a/wp-admin/widgets.php
+++ b/wp-admin/widgets.php
@@ -306,12 +306,14 @@ if ( isset($_GET['editwidget']) && $_GET['editwidget'] ) {
 	</div>
 
 	<div class="widget-control-actions">
-<?php	if ( isset($_GET['addnew']) ) { ?>
+<?php
+	if ( isset($_GET['addnew']) ) { ?>
 	<a href="widgets.php" class="button alignleft"><?php _e('Cancel'); ?></a>
-<?php	} else { ?>
-	<input type="submit" name="removewidget" class="button alignleft" value="<?php esc_attr_e('Delete'); ?>" />
-<?php	} ?>
-	<input type="submit" name="savewidget" class="button-primary alignright" value="<?php esc_attr_e('Save Widget'); ?>" />
+<?php
+	} else {
+		submit_button( __( 'Delete' ), 'button alignleft', 'removewidget', false ); 
+	}
+	submit_button( __( 'Save Widget' ), 'button-primary alignright', 'savewidget', false ); ?>
 	<input type="hidden" name="widget-id" class="widget-id" value="<?php echo esc_attr($widget_id); ?>" />
 	<input type="hidden" name="id_base" class="id_base" value="<?php echo esc_attr($id_base); ?>" />
 	<input type="hidden" name="multi_number" class="multi_number" value="<?php echo esc_attr($multi_number); ?>" />
diff --git a/wp-includes/comment-template.php b/wp-includes/comment-template.php
index bb6b3d2a5b..2d8a66da5d 100644
--- a/wp-includes/comment-template.php
+++ b/wp-includes/comment-template.php
@@ -1572,7 +1572,7 @@ function comment_form( $args = array(), $post_id = null ) {
 						<?php echo apply_filters( 'comment_form_field_comment', $args['comment_field'] ); ?>
 						<?php echo $args['comment_notes_after']; ?>
 						<p class="form-submit">
-							<input name="submit" type="submit" id="<?php echo esc_attr( $args['id_submit'] ); ?>" value="<?php echo esc_attr( $args['label_submit'] ); ?>" />
+							<?php submit_button( $args['label_submit'], 'button', 'submit', false, array( 'id' => $args['id_submit'] ) ); ?>
 							<?php comment_id_fields(); ?>
 						</p>
 						<?php do_action( 'comment_form', $post_id ); ?>
diff --git a/wp-includes/general-template.php b/wp-includes/general-template.php
index 62234d4b4f..b7c63f85f7 100644
--- a/wp-includes/general-template.php
+++ b/wp-includes/general-template.php
@@ -160,7 +160,7 @@ function get_search_form($echo = true) {
 	$form = '<form role="search" method="get" id="searchform" action="' . home_url( '/' ) . '" >
 	<div><label class="screen-reader-text" for="s">' . __('Search for:') . '</label>
 	<input type="text" value="' . get_search_query() . '" name="s" id="s" />
-	<input type="submit" id="searchsubmit" value="'. esc_attr__('Search') .'" />
+	' . get_submit_button( __( 'Search' ), '', 'searchsubmit', false ) . '
 	</div>
 	</form>';
 
@@ -283,7 +283,7 @@ function wp_login_form( $args = array() ) {
 			' . apply_filters( 'login_form_middle', '' ) . '
 			' . ( $args['remember'] ? '<p class="login-remember"><label><input name="rememberme" type="checkbox" id="' . esc_attr( $args['id_remember'] ) . '" value="forever" tabindex="90"' . ( $args['value_remember'] ? ' checked="checked"' : '' ) . ' /> ' . esc_html( $args['label_remember'] ) . '</label></p>' : '' ) . '
 			<p class="login-submit">
-				<input type="submit" name="wp-submit" id="' . esc_attr( $args['id_submit'] ) . '" class="button-primary" value="' . esc_attr( $args['label_log_in'] ) . '" tabindex="100" />
+			' . get_submit_button( $args['label_log_in'], 'primary', 'wp-submit', false, array( 'id' => $args['id_submit'], 'tabindex' => 100 ) ) . '
 				<input type="hidden" name="redirect_to" value="' . esc_attr( $args['redirect'] ) . '" />
 			</p>
 			' . apply_filters( 'login_form_bottom', '' ) . '
diff --git a/wp-includes/post-template.php b/wp-includes/post-template.php
index ec506d3a49..1389b64d9b 100644
--- a/wp-includes/post-template.php
+++ b/wp-includes/post-template.php
@@ -1025,7 +1025,11 @@ function get_the_password_form() {
 	$label = 'pwbox-'.(empty($post->ID) ? rand() : $post->ID);
 	$output = '<form action="' . get_option('siteurl') . '/wp-pass.php" method="post">
 	<p>' . __("This post is password protected. To view it please enter your password below:") . '</p>
-	<p><label for="' . $label . '">' . __("Password:") . ' <input name="post_password" id="' . $label . '" type="password" size="20" /></label> <input type="submit" name="Submit" value="' . esc_attr__("Submit") . '" /></p>
+	<p>
+		<label for="' . $label . '">' . __("Password:") . '
+			<input name="post_password" id="' . $label . '" type="password" size="20" />
+		</label>' . get_submit_button( __( 'Submit' ), '', 'Submit', false ) . '
+	</p>
 	</form>
 	';
 	return apply_filters('the_password_form', $output);
@@ -1208,7 +1212,7 @@ function wp_list_post_revisions( $post_id = 0, $args = null ) {
 
 <div class="tablenav">
 	<div class="alignleft">
-		<input type="submit" class="button-secondary" value="<?php esc_attr_e( 'Compare Revisions' ); ?>" />
+		<?php submit_button( __( 'Compare Revisions' ), 'secondary', '', false ); ?>
 		<input type="hidden" name="action" value="diff" />
 		<input type="hidden" name="post_type" value="<?php echo esc_attr($post->post_type); ?>" />
 	</div>
diff --git a/wp-includes/post.php b/wp-includes/post.php
index fb1582b6a1..445f06e740 100644
--- a/wp-includes/post.php
+++ b/wp-includes/post.php
@@ -5123,14 +5123,14 @@ function wp_quickpress_form( $args = array(), $post_type = 'post'){
 	);
 
 	$submit_fields = array(
-		'save' => '<input type="submit" name="save" id="save-post" class="button" tabindex="%s" value="'.  esc_attr('Save Draft') .'" />',
+		'save' => get_submit_button( __( 'Save Draft' ), 'button', 'save', false, array( 'id' => 'save-post', 'tabindex' => '%s' ) ),
 		'reset' => '<input type="reset" tabindex="%s" value="'. esc_attr( 'Reset' ).'" class="button" />',
 	);
 
 	$publishing_action = current_user_can('publish_posts') ? esc_attr('Publish') : esc_attr('Submit for Review');
 
 	$publishing_fields = array(
-	'submit' => '<input type="submit" name="publish" id="publish" accesskey="p" tabindex="%s" class="button-primary" value="' . $publishing_action . '" />',
+	'submit' => get_submit_button( $publishing_action, 'primary', 'publish', false, array( 'accesskey' => 'p', 'tabindex' => '%s' ) ),
 	/*'test' => '<input type="submit" name="publish" id="publish" accesskey="p" tabindex="%n" class="button-primary" value="'. esc_attr('Publish') .'" />', */
 
 	);
diff --git a/wp-includes/theme-compat/comments-popup.php b/wp-includes/theme-compat/comments-popup.php
index 86582ba37a..620543f02d 100644
--- a/wp-includes/theme-compat/comments-popup.php
+++ b/wp-includes/theme-compat/comments-popup.php
@@ -95,7 +95,7 @@ if ( post_password_required($post) ) {  // and it doesn't match the cookie
 	<p>
 	  <input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
 	  <input type="hidden" name="redirect_to" value="<?php echo esc_attr($_SERVER["REQUEST_URI"]); ?>" />
-	  <input name="submit" type="submit" tabindex="5" value="<?php _e('Say It!' ); ?>" />
+	  <?php submit_button( __( 'Say It!' ), '', 'submit', false, array( 'tabindex' => '5' ) ); ?>
 	</p>
 	<?php do_action('comment_form', $post->ID); ?>
 </form>
diff --git a/wp-includes/theme-compat/comments.php b/wp-includes/theme-compat/comments.php
index c6fbb7fcd4..935aae66d2 100644
--- a/wp-includes/theme-compat/comments.php
+++ b/wp-includes/theme-compat/comments.php
@@ -89,7 +89,7 @@ _deprecated_file( sprintf( __( 'Theme without %1$s' ), basename(__FILE__) ), '3.
 
 <p><textarea name="comment" id="comment" cols="58" rows="10" tabindex="4"></textarea></p>
 
-<p><input name="submit" type="submit" id="submit" tabindex="5" value="<?php _e('Submit Comment'); ?>" />
+<p><?php submit_button( __( 'Submit Comment' ), '', 'submit', false, array( 'tabindex' => '5' ) ); ?>
 <?php comment_id_fields(); ?>
 </p>
 <?php do_action('comment_form', $post->ID); ?>
diff --git a/wp-login.php b/wp-login.php
index ae35b31645..cc35d6f896 100644
--- a/wp-login.php
+++ b/wp-login.php
@@ -411,7 +411,7 @@ case 'retrievepassword' :
 	</p>
 <?php do_action('lostpassword_form'); ?>
 	<input type="hidden" name="redirect_to" value="<?php echo esc_attr( $redirect_to ); ?>" />
-	<p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button-primary" value="<?php esc_attr_e('Get New Password'); ?>" tabindex="100" /></p>
+	<?php submit_button( __( 'Get New Password' ), 'primary', 'wp-submit', true, array( 'tabindex' => '100' ) ); ?>
 </form>
 
 <p id="nav">
@@ -467,7 +467,7 @@ case 'rp' :
 	<p class="description indicator-hint"><?php _e('Hint: The password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers and symbols like ! " ? $ % ^ &amp; ).'); ?></p>
 
 	<br class="clear" />
-	<p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button-primary" value="<?php esc_attr_e('Reset Password'); ?>" tabindex="100" /></p>
+	<?php submit_button( __( 'Reset Password' ), 'primary', 'wp-submit', true, array( 'tabindex' => '100' ) ); ?>
 </form>
 
 <p id="nav">
@@ -523,7 +523,7 @@ case 'register' :
 	<p id="reg_passmail"><?php _e('A password will be e-mailed to you.') ?></p>
 	<br class="clear" />
 	<input type="hidden" name="redirect_to" value="<?php echo esc_attr( $redirect_to ); ?>" />
-	<p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button-primary" value="<?php esc_attr_e('Register'); ?>" tabindex="100" /></p>
+	<?php submit_button( __( 'Register' ), 'primary', 'wp-submit', true, array( 'tabindex' => '100' ) ); ?>
 </form>
 
 <p id="nav">
@@ -640,7 +640,7 @@ default:
 <?php do_action('login_form'); ?>
 	<p class="forgetmenot"><label><input name="rememberme" type="checkbox" id="rememberme" value="forever" tabindex="90"<?php checked( $rememberme ); ?> /> <?php esc_attr_e('Remember Me'); ?></label></p>
 	<p class="submit">
-		<input type="submit" name="wp-submit" id="wp-submit" class="button-primary" value="<?php esc_attr_e('Log In'); ?>" tabindex="100" />
+		<?php submit_button( __( 'Log In' ), 'primary', 'wp-submit', false, array( 'tabindex' => '100' ) ); ?>
 <?php	if ( $interim_login ) { ?>
 		<input type="hidden" name="interim-login" value="1" />
 <?php	} else { ?>
diff --git a/wp-signup.php b/wp-signup.php
index 5d0610a8f7..8f7a24b73c 100644
--- a/wp-signup.php
+++ b/wp-signup.php
@@ -191,7 +191,7 @@ function signup_another_blog($blogname = '', $blog_title = '', $errors = '') {
 		<input type="hidden" name="stage" value="gimmeanotherblog" />
 		<?php do_action( "signup_hidden_fields" ); ?>
 		<?php show_blog_form($blogname, $blog_title, $errors); ?>
-		<p class="submit"><input type="submit" name="submit" class="submit" value="<?php esc_attr_e( 'Create Site' ) ?>" /></p>
+		<?php submit_button( __( 'Create Site' ), 'submit', 'submit' ); ?>
 	</form>
 	<?php
 }
@@ -270,7 +270,7 @@ function signup_user($user_name = '', $user_email = '', $errors = '') {
 		<?php } ?>
 		</p>
 
-		<p class="submit"><input type="submit" name="submit" class="submit" value="<?php esc_attr_e('Next') ?>" /></p>
+		<?php submit_button( __( 'Next' ), 'submit', 'submit' ); ?>
 	</form>
 	<?php
 }
@@ -326,7 +326,7 @@ function signup_blog($user_name = '', $user_email = '', $blogname = '', $blog_ti
 		<input type="hidden" name="user_email" value="<?php echo esc_attr($user_email) ?>" />
 		<?php do_action( "signup_hidden_fields" ); ?>
 		<?php show_blog_form($blogname, $blog_title, $errors); ?>
-		<p class="submit"><input type="submit" name="submit" class="submit" value="<?php esc_attr_e('Signup') ?>" /></p>
+		<?php submit_button( __( 'Signup' ), 'submit', 'submit', true ); ?>
 	</form>
 	<?php
 }