Index: wp-admin/includes/media.php
===================================================================
--- wp-admin/includes/media.php	(revision 21284)
+++ wp-admin/includes/media.php	(working copy)
@@ -631,14 +631,14 @@
 /**
  * {@internal Missing Short Description}}
  *
- * @since 2.5.0
+ * @since 3.5.0
  *
  * @return unknown
  */
-function media_upload_gallery() {
+function media_upload( $type ) {
 	$errors = array();
 
-	if ( !empty($_POST) ) {
+	if ( !empty($_POST) || empty($type) ) {
 		$return = media_upload_form_handler();
 
 		if ( is_string($return) )
@@ -648,7 +648,19 @@
 	}
 
 	wp_enqueue_script('admin-gallery');
-	return wp_iframe( 'media_upload_gallery_form', $errors );
+	
+	switch($type) {
+		case 'library' :
+				$return = 'media_upload_library_form';
+			break;
+		case 'gallery' :
+				$return = 'media_upload_gallery_form';
+			break;
+		default :
+				$return = 'wp_media_upload_handler';
+			break;				
+	}
+	return wp_iframe( $return , $errors );
 }
 
 /**
@@ -658,18 +670,19 @@
  *
  * @return unknown
  */
+function media_upload_gallery() {
+	media_upload( 'gallery' );
+}
+
+/**
+ * {@internal Missing Short Description}}
+ *
+ * @since 2.5.0
+ *
+ * @return unknown
+ */
 function media_upload_library() {
-	$errors = array();
-	if ( !empty($_POST) ) {
-		$return = media_upload_form_handler();
-
-		if ( is_string($return) )
-			return $return;
-		if ( is_array($return) )
-			$errors = $return;
-	}
-
-	return wp_iframe( 'media_upload_library_form', $errors );
+	media_upload( 'library' );
 }
 
 /**
@@ -2128,10 +2141,4 @@
 add_filter( 'async_upload_video', 'get_media_item', 10, 2 );
 add_filter( 'async_upload_file',  'get_media_item', 10, 2 );
 
-add_action( 'media_upload_image', 'wp_media_upload_handler' );
-add_action( 'media_upload_audio', 'wp_media_upload_handler' );
-add_action( 'media_upload_video', 'wp_media_upload_handler' );
-add_action( 'media_upload_file',  'wp_media_upload_handler' );
-
-add_filter( 'media_upload_gallery', 'media_upload_gallery' );
-add_filter( 'media_upload_library', 'media_upload_library' );
+add_filter( 'media_upload', 'media_upload', 1, 2 );
Index: wp-admin/media-upload.php
===================================================================
--- wp-admin/media-upload.php	(revision 21284)
+++ wp-admin/media-upload.php	(working copy)
@@ -140,8 +140,9 @@
 	$body_id = 'media-upload';
 
 	// let the action code decide how to handle the request
-	if ( $tab == 'type' || $tab == 'type_url' || ! array_key_exists( $tab , media_upload_tabs() ) )
-		do_action("media_upload_$type");
-	else
-		do_action("media_upload_$tab");
+	if ( $tab == 'type' || $tab == 'type_url' || ! array_key_exists( $tab , media_upload_tabs() ) ) {
+		do_action("media_upload", $type );
+	} else {
+		do_action("media_upload", $tab );
+	}
 }
