diff --git a/includes/media.pages.inc b/includes/media.pages.inc
index 0f6cb28..8155a31 100644
--- a/includes/media.pages.inc
+++ b/includes/media.pages.inc
@@ -29,27 +29,26 @@ function media_preview_ajax() {
  * Menu callback; presents the Media editing form for multiple file entities.
  */
 function media_page_multiedit($files) {
+  // Prevent hacking the URL.
   if (!module_exists('multiform')) {
-    drupal_set_message(t('To edit multiple media items, you must install the multiform module.'));
+    drupal_set_message(t('To edit multiple media items, you must install the <a href="!url">multiform module</a>.', array('!url' => 'http://drupal.org/project/multiform')));
+    return t('This page cannot display the current request.');
   }
-  $i = 0;
+  drupal_set_title(t('Editing multiple media files'));
+
   $forms = array();
   foreach ($files as $file) {
-    // To maintain unique form_ids, increment this counter.
-    // @see media_forms().
-    $i++;
-    $forms[] = array("media_edit_$i", $file);
+    // To maintain unique form_ids, append the file id.
+    $forms[] = array('media_edit_' . $file->fid, $file);
   }
 
   $form = call_user_func_array('multiform_get_form', $forms);
   $form['#attributes']['class'][] = 'media-multiedit-form';
 
-  unset($form['buttons']['Delete']);
-  // Would be nice to add this to show a message, but not working.
-  // Can debug.
-  //$form['buttons']['Save']['#submit'][] = 'media_page_multiedit_submit';
+  if (isset($form['buttons']['Delete'])) {
+    unset($form['buttons']['Delete']);
+  }
 
-  drupal_set_title(t('Editing multiple media files'));
   return $form;
 }
 
diff --git a/media.api.php b/media.api.php
index 97ddaa3..4c06403 100644
--- a/media.api.php
+++ b/media.api.php
@@ -31,22 +31,3 @@ function hook_media_browser_plugin_info() {
   );
   return $plugins;
 }
-
-/**
- * Returns an array of operations which can be taken on media items.
- *
- * This is used on the admin/content/media page so users can select multiple
- * items and do something with them.
- *
- * The return format is an array or arrays with the following keys:
- *  - label: The string to be shown to the user.
- *  - callback (optional): A callback to be called when the media items are selected.
- *     Media items will be passed in as an argument.
- *  - redirect (optional): A path to redirect to.  %fids should be in the path
- *     It will be replaced with the fids selected delimited by "+".
- *     i.e. mymodule/%fids/something -> mymodule/1+3+2/something if media items
- *     1, 3 and 2 were selected.
- */
-function media_media_operations() {
-
-}
diff --git a/media.module b/media.module
index c0bd252..26c62b4 100644
--- a/media.module
+++ b/media.module
@@ -190,10 +190,10 @@ function media_menu() {
     'theme callback' => 'media_dialog_get_theme_name',
   );
 
-  $items['media/%media_multi/multiedit'] = array(
+  $items['admin/content/file/multiedit/%media_multiedit'] = array(
     'title' => 'Multi Edit',
     'page callback' => 'media_page_multiedit',
-    'page arguments'  => array(1),
+    'page arguments' => array(4),
     'access callback' => 'media_access',
     'access arguments' => array('edit'),
     'weight' => 0,
@@ -387,27 +387,36 @@ function media_element_info_alter(&$types) {
 /**
  * Implements hook_media_operations().
  */
-function media_media_operations() {
+function media_file_operations_info() {
+  // If the multiform module is not installed, do not show this option.
+  if (!module_exists('multiform')) {
+    return;
+  }
   $operations = array(
-    'delete' => array(
-      'label' => t('Delete'),
-      'callback' => NULL,
-    ),
     'edit' => array(
-      'label' => t('Edit'),
-      'callback' => NULL,
-      'redirect' => 'media/%fids/multiedit'
+      'label' => t('Edit selected files'),
+      'callback' => 'media_edit_operation',
     ),
   );
-
-  if (!module_exists('multiform')) {
-    // If the multiform module is not installed, do not show this option.
-    unset($operations['edit']);
-  }
   return $operations;
 }
 
 /**
+ * Callback for the edit operation.
+ *
+ * Redirects the user to the media multiedit page.
+ *
+ * @param array $fids
+ *  An array of file ids, passed from the file overview page.
+ */
+function media_edit_operation($fids) {
+  // The thumbnail browser returns TRUE/FALSE for each item, so use array keys.
+  $list = array_keys(array_filter($fids));
+  // Note that we add a destination here to prevent normal form redirects.
+  drupal_goto('admin/content/file/multiedit/' . implode('+', $list), array('query' => drupal_get_destination()));
+}
+
+/**
  * Implements hook_forms().
  */
 function media_forms($form_id, $args) {
@@ -415,9 +424,10 @@ function media_forms($form_id, $args) {
   // To support the multiedit form, each form has to have a unique ID.
   // So we name all the forms media_edit_N where the first requested form is
   // media_edit_0, 2nd is media_edit_1, etc.
+  module_load_include('inc', 'file_entity', 'file_entity.pages');
   if ($form_id != 'media_edit' && (strpos($form_id, 'media_edit') === 0)) {
     $forms[$form_id] = array(
-      'callback' => 'media_edit',
+      'callback' => 'file_entity_edit',
     );
   }
   return $forms;
@@ -469,15 +479,13 @@ function media_form_field_ui_field_edit_form_alter(&$form, &$form_state) {
  * Load callback for %media_multi placeholder in menu paths.
  *
  * @param string $fids
- *   Separated by space (e.g., "3 6 12 99"). This often appears as "+" within
- *   URLs (e.g., "3+6+12+99"), but Drupal automatically decodes paths when
- *   intializing $_GET['q'].
+ *   Separated by a plus sign (+) (e.g., "3+6+2+99").
  *
  * @return array
  *   An array of corresponding file entities.
  */
-function media_multi_load($fids) {
-  return file_load_multiple(explode(" ", $fids));
+function media_multiedit_load($fids) {
+  return file_load_multiple(explode('+', $fids));
 }
 
 /**
