Index: wp-admin/js/custom-background.js
===================================================================
--- wp-admin/js/custom-background.js	(revision 23089)
+++ wp-admin/js/custom-background.js	(working copy)
@@ -32,7 +32,7 @@
 			}
 
 			// Create the media frame.
-			frame = wp.media({
+			frame = wp.media.frames.customBackground = wp.media({
 				// Set the title of the modal.
 				title: $el.data('choose'),
 
Index: wp-admin/js/custom-header.js
===================================================================
--- wp-admin/js/custom-header.js	(revision 23089)
+++ wp-admin/js/custom-header.js	(working copy)
@@ -18,8 +18,14 @@
 			var $el = $(this);
 			event.preventDefault();
 
+			// If the media frame already exists, reopen it.
+			if ( frame ) {
+				frame.open();
+				return;
+			}
+
 			// Create the media frame.
-			frame = wp.media({
+			frame = wp.media.frames.customHeader = wp.media({
 				// Set the title of the modal.
 				title: $el.data('choose'),
 
Index: wp-includes/js/media-models.js
===================================================================
--- wp-includes/js/media-models.js	(revision 23089)
+++ wp-includes/js/media-models.js	(working copy)
@@ -34,7 +34,7 @@
 		return frame;
 	};
 
-	_.extend( media, { model: {}, view: {}, controller: {} });
+	_.extend( media, { model: {}, view: {}, controller: {}, frames: {} });
 
 	// Link any localized strings.
 	l10n = media.model.l10n = typeof _wpMediaModelsL10n === 'undefined' ? {} : _wpMediaModelsL10n;
@@ -216,6 +216,13 @@
 	 * ========================================================================
 	 */
 
+	 /**
+	  * wp.media.attachment
+	  */
+	 media.attachment = function( id ) {
+		return Attachment.get( id );
+	 };
+
 	/**
 	 * wp.media.model.Attachment
 	 */
