diff --git wp-admin/edit.php wp-admin/edit.php
index 883cb5d..3b72564 100644
--- wp-admin/edit.php
+++ wp-admin/edit.php
@@ -8,6 +8,7 @@
 
 /** WordPress Administration Bootstrap */
 require_once( './admin.php' );			
+
 $wp_list_table = get_list_table('WP_Posts_List_Table');
 $wp_list_table->check_permissions();
 $pagenum = $wp_list_table->get_pagenum();
@@ -23,7 +24,7 @@ unset( $_redirect );
 
 $doaction = $wp_list_table->current_action();
 
-if ( $doaction ) {
+if ( $doaction && ! $wp_list_table->is_bulk_edit_form() ) {
 	check_admin_referer('bulk-posts');
 
 	$sendback = remove_query_arg( array('trashed', 'untrashed', 'deleted', 'ids'), wp_get_referer() );
@@ -42,8 +43,10 @@ if ( $doaction ) {
 		$post_ids = explode( ',', $_REQUEST['ids'] );
 	} elseif ( !empty( $_REQUEST['post'] ) ) {
 		$post_ids = array_map('intval', $_REQUEST['post']);
+	} elseif ( ! empty( $_REQUEST['bulk_post'] ) ) {
+		$post_ids = array_map( 'intval', $_REQUEST['bulk_post'] );
 	}
-
+	
 	if ( !isset( $post_ids ) ) {
 		wp_redirect( admin_url("edit.php?post_type=$post_type") );
 		exit;
@@ -62,6 +65,7 @@ if ( $doaction ) {
 				$trashed++;
 			}
 			$sendback = add_query_arg( array('trashed' => $trashed, 'ids' => join(',', $post_ids) ), $sendback );
+			$sendback = remove_query_arg( array( 'updated' ), $sendback );
 			break;
 		case 'untrash':
 			$untrashed = 0;
@@ -103,12 +107,13 @@ if ( $doaction ) {
 				$done['skipped'] = count( $done['skipped'] );
 				$done['locked'] = count( $done['locked'] );
 				$sendback = add_query_arg( $done, $sendback );
+				$sendback = remove_query_arg( array( 'bulk_post' ), $sendback );
 			}
+
 			break;
 	}
 
 	$sendback = remove_query_arg( array('action', 'action2', 'tags_input', 'post_author', 'comment_status', 'ping_status', '_status',  'post', 'bulk_edit', 'post_view'), $sendback );
-
 	wp_redirect($sendback);
 	exit();
 } elseif ( ! empty($_REQUEST['_wp_http_referer']) ) {
@@ -247,7 +252,11 @@ $_SERVER['REQUEST_URI'] = remove_query_arg( array('locked', 'skipped', 'updated'
 
 <?php
 if ( $wp_list_table->has_items() )
-	$wp_list_table->inline_edit();
+	if ( $wp_list_table->is_bulk_edit_form() ) {
+		$wp_list_table->inline_edit( 'inline' );
+	} else {
+		$wp_list_table->inline_edit();
+	}
 ?>
 
 <div id="ajax-response"></div>
diff --git wp-admin/includes/class-wp-list-table.php wp-admin/includes/class-wp-list-table.php
index 5a3fd00..920f16c 100644
--- wp-admin/includes/class-wp-list-table.php
+++ wp-admin/includes/class-wp-list-table.php
@@ -700,6 +700,8 @@ class WP_List_Table {
 	</tr>
 	</tfoot>
 
+	<?php do_action( 'wp_list_table_tbody' ); ?>
+
 	<tbody id="the-list"<?php if ( $singular ) echo " class='list:$singular'"; ?>>
 		<?php $this->display_rows(); ?>
 	</tbody>
diff --git wp-admin/includes/class-wp-posts-list-table.php wp-admin/includes/class-wp-posts-list-table.php
index 696b911..8dbc4e3 100644
--- wp-admin/includes/class-wp-posts-list-table.php
+++ wp-admin/includes/class-wp-posts-list-table.php
@@ -16,6 +16,15 @@ class WP_Posts_List_Table extends WP_List_Table {
 	 * @access protected
 	 */
 	var $hierarchical_display;
+	
+	/**
+	 * Whether the bulk edit form should be displayed (when JavaScript is disabled)
+	 *
+	 * @since 3.1.0
+	 * @var bool
+	 * @access protected
+	 */
+	var $bulk_edit_display = false;
 
 	/**
 	 * Holds the number of pending comments for each post
@@ -84,6 +93,14 @@ class WP_Posts_List_Table extends WP_List_Table {
 		if ( !current_user_can( $post_type_object->cap->edit_posts ) )
 			wp_die( __( 'Cheatin&#8217; uh?' ) );
 	}
+	
+	function is_bulk_edit_form() {
+		return $this->bulk_edit_display;
+	}
+	
+	function display_bulk_edit_form() {
+		$this->inline_edit( 'bulk' );
+	}
 
 	function prepare_items() {
 		global $post_type_object, $post_type, $avail_post_stati, $wp_query, $per_page, $mode;
@@ -237,7 +254,18 @@ class WP_Posts_List_Table extends WP_List_Table {
 		if ( isset( $_REQUEST['delete_all'] ) || isset( $_REQUEST['delete_all2'] ) )
 			return 'delete_all';
 
-		return parent::current_action();
+		if ( isset( $_REQUEST['bulk_post'] ) ) {
+			return 'edit';
+		}
+
+		$action = parent::current_action();
+
+		if ( $action == 'edit' && ! isset( $_REQUEST['bulk_edit']) ) {			
+			$this->bulk_edit_display = true;
+			add_action( 'wp_list_table_tbody', array( &$this, 'display_bulk_edit_form' ) );
+		}
+		
+		return $action;
 	}
 
 	function pagination( $which ) {
@@ -496,8 +524,9 @@ class WP_Posts_List_Table extends WP_List_Table {
 			switch ( $column_name ) {
 
 			case 'cb':
+				$checked = ( isset( $_REQUEST['post'] ) && in_array( $post->ID, $_REQUEST['post'] ) ) ? ' checked="checked"' : '';
 			?>
-			<th scope="row" class="check-column"><?php if ( $can_edit_post ) { ?><input type="checkbox" name="post[]" value="<?php the_ID(); ?>" /><?php } ?></th>
+			<th scope="row" class="check-column"><?php if ( $can_edit_post ) { ?><input type="checkbox" name="post[]" value="<?php the_ID(); ?>"<?php echo $checked; ?> /><?php } ?></th>
 			<?php
 			break;
 
@@ -684,11 +713,13 @@ class WP_Posts_List_Table extends WP_List_Table {
 	}
 
 	/**
-	 * Outputs the hidden row displayed when inline editing
+	 * Outputs inline editing forms
 	 *
 	 * @since 3.1.0
+	 * 
+	 * @param string $which Specify which form to be output. Can be one of the following: 'inline', 'bulk', or 'both'
 	 */
-	function inline_edit() {
+	function inline_edit( $which = 'both' ) {
 		global $mode;
 
 		$screen = get_current_screen();
@@ -714,18 +745,36 @@ class WP_Posts_List_Table extends WP_List_Table {
 		$m = ( isset( $mode ) && 'excerpt' == $mode ) ? 'excerpt' : 'list';
 		$can_publish = current_user_can( $post_type_object->cap->publish_posts );
 		$core_columns = array( 'cb' => true, 'date' => true, 'title' => true, 'categories' => true, 'tags' => true, 'comments' => true, 'author' => true );
-
+		$as_tbody = ( $which == 'bulk' && $this->bulk_edit_display );
+		
+		if ( $as_tbody && empty( $_REQUEST['post'] ) ) {
+			return;
+		}
+		
+		$style = ( $as_tbody ) ? '' : ' style="display:none;"';
 	?>
 
-	<form method="get" action=""><table style="display: none"><tbody id="inlineedit">
+	<?php if ( ! $as_tbody ): ?>
+	<form method="get" action=""><table<?php echo $style; ?>><?php endif; ?>
+		<tbody id="inlineedit">
 		<?php
 		$hclass = count( $hierarchical_taxonomies ) ? 'post' : 'page';
 		$bulk = 0;
-		while ( $bulk < 2 ) { ?>
+		$max = 2;
+		
+		if ( $which == 'bulk' ) {
+			$bulk = 1;
+		}
+		
+		if ( $which == 'inline' ) {
+			$max = 1;
+		}
+		
+		while ( $bulk < $max ) { ?>
 
-		<tr id="<?php echo $bulk ? 'bulk-edit' : 'inline-edit'; ?>" class="inline-edit-row inline-edit-row-<?php echo "$hclass inline-edit-$screen->post_type ";
+		<tr id="<?php echo $bulk ? 'bulk-edit' : 'inline-edit'; ?>" class="inline-editor inline-edit-row inline-edit-row-<?php echo "$hclass inline-edit-$screen->post_type ";
 			echo $bulk ? "bulk-edit-row bulk-edit-row-$hclass bulk-edit-$screen->post_type" : "quick-edit-row quick-edit-row-$hclass inline-edit-$screen->post_type";
-		?>" style="display: none"><td colspan="<?php echo $this->get_column_count(); ?>" class="colspanchange">
+		?>"<?php echo $style; ?>><td colspan="<?php echo $this->get_column_count(); ?>" class="colspanchange">
 
 		<fieldset class="inline-edit-col-left"><div class="inline-edit-col">
 			<h4><?php echo $bulk ? __( 'Bulk Edit' ) : __( 'Quick Edit' ); ?></h4>
@@ -734,7 +783,28 @@ class WP_Posts_List_Table extends WP_List_Table {
 	if ( post_type_supports( $screen->post_type, 'title' ) ) :
 		if ( $bulk ) : ?>
 			<div id="bulk-title-div">
-				<div id="bulk-titles"></div>
+				<div id="bulk-titles">
+					<?php
+					if ( $as_tbody ) {
+						$post_ids = $_REQUEST['post'];
+						
+						foreach ( $post_ids as $post_id ) {
+							$post = get_post( $post_id );
+							$title = esc_html( apply_filters( 'the_title', $post->post_title ) );
+							$temp_ids = array_diff( $post_ids, array( $post_id ) );
+							$delete_link = remove_query_arg( array( 'post' ), $_SERVER['REQUEST_URI'] );
+							$delete_link = add_query_arg( array( 'post' => $temp_ids ), $_SERVER['REQUEST_URI'] );
+							?>
+								<div id="ttle<?php echo $post_id; ?>">
+									<a id="_<?php echo $post_id; ?>" class="ntdelbutton" title="Remove From Bulk Edit" href="<?php echo $delete_link; ?>">X</a>
+									<?php echo $title; ?>
+									<input type="hidden" name="bulk_post[]" value="<?php echo $post_id; ?>" />
+								</div>
+							<?php
+						}
+					}
+					?>
+				</div>
 			</div>
 
 	<?php else : // $bulk ?>
@@ -808,7 +878,7 @@ class WP_Posts_List_Table extends WP_List_Table {
 
 		</div></fieldset>
 
-	<?php if ( count( $hierarchical_taxonomies ) && !$bulk ) : ?>
+	<?php if ( count( $hierarchical_taxonomies ) && ( !$bulk || $as_tbody ) ) : ?>
 
 		<fieldset class="inline-edit-col-center inline-edit-categories"><div class="inline-edit-col">
 
@@ -827,15 +897,10 @@ class WP_Posts_List_Table extends WP_List_Table {
 
 		</div></fieldset>
 
-	<?php endif; // count( $hierarchical_taxonomies ) && !$bulk ?>
+	<?php endif; // count( $hierarchical_taxonomies ) && ( !$bulk || $as_tbody ) ?>
 
 		<fieldset class="inline-edit-col-right"><div class="inline-edit-col">
 
-	<?php
-		if ( post_type_supports( $screen->post_type, 'author' ) && $bulk )
-			echo $authors_dropdown;
-	?>
-
 	<?php if ( $post_type_object->hierarchical ) : ?>
 
 			<label>
@@ -874,7 +939,7 @@ class WP_Posts_List_Table extends WP_List_Table {
 		endif; // post_type_supports page-attributes
 	endif; // $post_type_object->hierarchical ?>
 
-	<?php if ( count( $flat_taxonomies ) && !$bulk ) : ?>
+	<?php if ( count( $flat_taxonomies ) && ( !$bulk || $as_tbody ) ) : ?>
 
 	<?php foreach ( $flat_taxonomies as $taxonomy ) : ?>
 
@@ -885,7 +950,12 @@ class WP_Posts_List_Table extends WP_List_Table {
 
 	<?php endforeach; //$flat_taxonomies as $taxonomy ?>
 
-	<?php endif; // count( $flat_taxonomies ) && !$bulk  ?>
+	<?php endif; // count( $flat_taxonomies ) && ( !$bulk || $as_tbody )  ?>
+	
+	<?php
+		if ( post_type_supports( $screen->post_type, 'author' ) && $bulk )
+			echo $authors_dropdown;
+	?>
 
 	<?php if ( post_type_supports( $screen->post_type, 'comments' ) || post_type_supports( $screen->post_type, 'trackbacks' ) ) :
 		if ( $bulk ) : ?>
@@ -998,6 +1068,7 @@ class WP_Posts_List_Table extends WP_List_Table {
 			<?php } else {
 				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" />
@@ -1007,7 +1078,8 @@ class WP_Posts_List_Table extends WP_List_Table {
 		$bulk++;
 		}
 ?>
-		</tbody></table></form>
+		</tbody>
+		<?php if ( ! $as_tbody ): ?> </table></form> <?php endif; ?>
 <?php
 	}
 }
diff --git wp-admin/includes/post.php wp-admin/includes/post.php
index e445c1e..0de142f 100644
--- wp-admin/includes/post.php
+++ wp-admin/includes/post.php
@@ -245,6 +245,10 @@ function bulk_edit_posts( $post_data = null ) {
 	if ( empty($post_data) )
 		$post_data = &$_POST;
 
+	if ( isset( $post_data['bulk_post'] ) ) {
+		$post_data['post'] = array_unique( array_merge( $post_data['post'], $post_data['bulk_post'] ) );
+	}
+
 	if ( isset($post_data['post_type']) )
 		$ptype = get_post_type_object($post_data['post_type']);
 	else
diff --git wp-admin/js/inline-edit-post.dev.js wp-admin/js/inline-edit-post.dev.js
index 1a257c6..9ffb88c 100644
--- wp-admin/js/inline-edit-post.dev.js
+++ wp-admin/js/inline-edit-post.dev.js
@@ -1,5 +1,6 @@
 (function($) {
 inlineEditPost = {
+	bulkEditing : false,
 
 	init : function(){
 		var t = this, qeRow = $('#inline-edit'), bulkRow = $('#bulk-edit');
@@ -46,6 +47,23 @@ inlineEditPost = {
 			inlineEditPost.edit(this);
 			return false;
 		});
+		
+		$('.check-column input').live('click', function(){
+			var id;
+			if (inlineEditPost.bulkEditing) {
+				id = $(this).val();
+				if ($(this).attr('checked')) {
+					inlineEditPost.addToBulk(id);
+				} else {
+					inlineEditPost.removeFromBulk(id);
+				}
+			}
+		});
+		
+		$('#bulk-titles a').live('click', function(){
+			var id = $(this).attr('id').substr(1);
+			inlineEditPost.removeFromBulk(id);
+		});
 
 		$('#bulk-title-div').parents('fieldset').after(
 			$('#inline-edit fieldset.inline-edit-categories').clone()
@@ -84,10 +102,23 @@ inlineEditPost = {
 		var t = this;
 		$(t.what+t.getId(el)).css('display') == 'none' ? t.revert() : t.edit(el);
 	},
+	
+	addToBulk : function(id) {
+		var theTitle, item;
+		theTitle = $('#inline_'+id+' .post_title').text() || inlineEditL10n.notitle;
+		item = '<div id="ttle'+id+'"><a id="_'+id+'" class="ntdelbutton" title="'+inlineEditL10n.ntdeltitle+'">X</a>'+theTitle+'</div>';
+		$('#bulk-titles').append(item);
+	},
+	
+	removeFromBulk : function(id) {
+		$('table.widefat input[value="'+id+'"]').attr('checked', '');
+		$('#ttle'+id).remove();
+	},
 
 	setBulk : function(){
-		var te = '', type = this.type, tax, c = true;
+		var type = this.type, tax, c = true;
 		this.revert();
+		this.bulkEditing = true;
 
 		$('#bulk-edit td').attr('colspan', $('.widefat:first thead th:visible').length);
 		$('table.widefat tbody').prepend( $('#bulk-edit') );
@@ -96,22 +127,15 @@ inlineEditPost = {
 		$('tbody th.check-column input[type="checkbox"]').each(function(i){
 			if ( $(this).attr('checked') ) {
 				c = false;
-				var id = $(this).val(), theTitle;
-				theTitle = $('#inline_'+id+' .post_title').text() || inlineEditL10n.notitle;
-				te += '<div id="ttle'+id+'"><a id="_'+id+'" class="ntdelbutton" title="'+inlineEditL10n.ntdeltitle+'">X</a>'+theTitle+'</div>';
+				var id = $(this).val();
+				inlineEditPost.addToBulk(id);
 			}
 		});
 
 		if ( c )
 			return this.revert();
 
-		$('#bulk-titles').html(te);
-		$('#bulk-titles a').click(function(){
-			var id = $(this).attr('id').substr(1);
-
-			$('table.widefat input[value="'+id+'"]').attr('checked', '');
-			$('#ttle'+id).remove();
-		});
+//		$('#bulk-titles').html(te);
 
 		// enable autocomplete for tags
 		if ( 'post' == type ) {
@@ -265,6 +289,7 @@ inlineEditPost = {
 				$('table.widefat #bulk-edit').removeClass('inline-editor').hide();
 				$('#bulk-titles').html('');
 				$('#inlineedit').append( $('#bulk-edit') );
+				this.bulkEditing = false;
 			} else {
 				$('#'+id).remove();
 				id = id.substr( id.lastIndexOf('-') + 1 );
diff --git wp-admin/post.php wp-admin/post.php
index 883ec3f..21cfeeb 100644
--- wp-admin/post.php
+++ wp-admin/post.php
@@ -218,6 +218,7 @@ case 'trash':
 
 	if ( ! wp_trash_post($post_id) )
 		wp_die( __('Error in moving to Trash.') );
+	$sendback = remove_query_arg( 'updated', $sendback );
 
 	wp_redirect( add_query_arg( array('trashed' => 1, 'ids' => $post_id), $sendback ) );
 	exit();
