diff --git a/includes/media.pages.inc b/includes/media.pages.inc
index 6fd75a3..2345366 100644
--- a/includes/media.pages.inc
+++ b/includes/media.pages.inc
@@ -37,7 +37,14 @@ function media_file_page_edit_multiple($files) {
   if (empty($files)) {
     return MENU_ACCESS_DENIED;
   }
-
+  $list = array();
+  // In some cases, we may pass a string instead of an array.
+  if (!is_array($files)) {
+    $list[] = $files;
+  }
+  else {
+    $list = $files;
+  }
   $forms = array();
   foreach ($files as $file) {
     // To maintain unique form_ids, append the file id.
@@ -137,7 +144,8 @@ function media_add_upload_validate($form, &$form_state) {
  * Upload a file.
  */
 function media_add_upload_submit($form, &$form_state) {
-  $params = $form_state['build_info']['args'][0];
+  $params = isset($form_state['build_info']['args'][0]) ? $form_state['build_info']['args'][0] : array();
+
   $file = $form_state['values']['upload'];
 
   // The media browser widget does not use the 'display' field.
@@ -178,7 +186,7 @@ function media_add_upload_submit($form, &$form_state) {
     return;
   }
 
-  $form_state['redirect'] = array('media/browser', array('query' => array('render' => 'media-popup', 'fid' => $file->fid)));
+  $form_state['redirect'] = array('admin/content/file/edit-multiple/' . $file->fid, array('query' => array('destination' => 'admin/content/file')));
 }
 
 function media_add_upload_multiple($form, &$form_state, $params = array()) {
@@ -223,7 +231,7 @@ function media_add_upload_multiple_submit($form, &$form_state) {
   foreach ($saved_files as $file) {
     $fids[] = $file->fid;
   }
-  $form_state['redirect'] = array('media/browser', array('query' => array('render' => 'media-popup', 'fid' => $fids)));
+  $form_state['redirect'] = array('admin/content/file/edit-multiple/' . implode(' ', $fids), array('query' => array('destination' => 'admin/content/file')));
 }
 
 function media_add_remote($form, &$form_state) {
diff --git a/js/media.admin.js b/js/media.admin.js
index f9441f5..c592b3a 100644
--- a/js/media.admin.js
+++ b/js/media.admin.js
@@ -21,26 +21,6 @@ Drupal.behaviors.mediaAdmin = {
       }
     });
 
-    // Configure the "Add file" link to fire the media browser popup.
-    var $launcherLink = $('<a class="media-launcher" href="#"></a>').html(Drupal.t('Add file'));
-    $launcherLink.bind('click', function () {
-      // This option format needs *serious* work.
-      // Not even bothering documenting it because it needs to be thrown.
-      // See media.browser.js and media.browser.inc - media_browser()
-      // For how it gets passed.
-      var options = {
-        disabledPlugins: ['library'],
-        multiselect: true
-      };
-      Drupal.media.popups.mediaBrowser(function (mediaFiles) {
-        // When the media browser succeeds, we refresh
-        // @TODO: Should jump to the new media file and perhaps highlight it.
-        parent.window.location.reload();
-        return false;
-      }, options);
-    });
-
-    $('ul.action-links', context).prepend($('<li></li>').append($launcherLink));
     if ($('body.page-admin-content-file-thumbnails').length != 0) {
       // Implements 'select all/none' for thumbnail view.
       // @TODO: Support grabbing more than one page of thumbnails.
diff --git a/media.module b/media.module
index cea8446..823e9c9 100644
--- a/media.module
+++ b/media.module
@@ -128,6 +128,16 @@ function media_menu() {
     'type' => MENU_LOCAL_ACTION,
     'file' => 'includes/media.admin.inc',
   );
+  $items['admin/content/file/add'] = array(
+    'title' => 'Upload media',
+    'description' => 'Upload files to your media library.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('media_add_upload'),
+    'access arguments' => array('administer files'),
+    'type' => MENU_LOCAL_ACTION,
+    'file' => 'includes/media.pages.inc',
+    'weight' => -10,
+  );
 
   $items['admin/content/file/thumbnails/import'] = $items['admin/content/file/import'];
 
@@ -202,11 +212,31 @@ function media_menu() {
       'file' => 'includes/media.pages.inc',
     );
   }
+  else {
+    $items['admin/content/file/edit-multiple/%file'] = array(
+      'title' => 'Edit multiple files',
+      'page callback' => 'media_file_page_edit_multiple',
+      'page arguments' => array(4),
+      'access callback' => 'media_access',
+      'access arguments' => array('edit'),
+      'file' => 'includes/media.pages.inc',
+    );
+  }
 
   return $items;
 }
 
 /**
+ * Implements hook_menu_alter().
+ */
+function media_menu_alter(&$items) {
+  // This might be better in Plupload module.
+  if (module_exists('plupload')) {
+    $items['admin/content/file/add']['page arguments'] = array('media_add_upload_multiple');
+  }
+}
+
+/**
  * Implement hook_permission().
  */
 function media_permission() {
diff --git a/modules/media_internet/media_internet.module b/modules/media_internet/media_internet.module
index dd8c5d4..b9f136c 100644
--- a/modules/media_internet/media_internet.module
+++ b/modules/media_internet/media_internet.module
@@ -1,6 +1,23 @@
 <?php
 
 /**
+ * Implements hook_menu().
+ */
+function media_internet_menu() {
+  $items['admin/content/file/web'] = array(
+    'title' => 'Add web media',
+    'description' => 'Add internet files to your media library.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('media_internet_add'),
+    'access arguments' => array('administer files'),
+    'type' => MENU_LOCAL_ACTION,
+    'weight' => -5,
+  );
+
+  return $items;
+}
+
+/**
  * Implements hook_ctools_plugin_api().
  */
 function media_internet_ctools_plugin_api($module, $api) {
@@ -195,7 +212,7 @@ function media_internet_add_submit($form, &$form_state) {
     return;
   }
 
-  $form_state['redirect'] = array('media/browser', array('query' => array('render' => 'media-popup', 'fid' => $file->fid)));
+  $form_state['redirect'] = array('admin/content/file/edit-multiple/' . $file->fid, array('query' => array('destination' => 'admin/content/file')));
 }
 
 /**
