diff --git a/file_entity.admin.inc b/file_entity.admin.inc
index bbd9778..adbba0d 100644
--- a/file_entity.admin.inc
+++ b/file_entity.admin.inc
@@ -27,7 +27,8 @@ function file_entity_admin_files($form, &$form_state) {
   );
 
   $options = array();
-  foreach (module_invoke_all('file_operations') as $operation => $array) {
+  $form['#operations'] = module_invoke_all('file_operations');
+  foreach ($form['#operations'] as $operation => $array) {
     $options[$operation] = $array['label'];
   }
   $form['options']['operation'] = array(
@@ -35,7 +36,6 @@ function file_entity_admin_files($form, &$form_state) {
     '#title' => t('Operation'),
     '#title_display' => 'invisible',
     '#options' => $options,
-    '#default_value' => 'approve',
   );
   $form['options']['submit'] = array(
     '#type' => 'submit',
@@ -62,7 +62,7 @@ function file_entity_admin_files($form, &$form_state) {
     ->limit($limit)
     ->orderByHeader($header);
 
-  foreach (array_keys(media_get_hidden_stream_wrappers()) as $name) {
+  foreach (array_keys(file_entity_get_hidden_stream_wrappers()) as $name) {
     $query->condition('f.uri', $name . '%', 'NOT LIKE');
   }
 
@@ -87,8 +87,8 @@ function file_entity_admin_files($form, &$form_state) {
     '#type' => 'tableselect',
     '#header' => $header,
     '#options' => $options,
-    '#empty' => t('No media available.'),
-    '#attributes' => array('class' => array('media-display-table', 'media-clear')),
+    '#empty' => t('No files available.'),
+    '#attributes' => array('class' => array('file-display-table', 'clear')),
   );
   $form['pager'] = array('#markup' => theme('pager', array('tags' => NULL)));
 
@@ -99,7 +99,7 @@ function file_entity_admin_files($form, &$form_state) {
  * Submit handler for file_entity_admin_files.
  */
 function file_entity_admin_files_submit($form, &$form_state) {
-  $operations = module_invoke_all('file_operations');
+  $operations = $form['#operations'];
   $operation = $operations[$form_state['values']['operation']];
 
   // In the case of an operation which needs confirmation, rebuild the form.
@@ -133,13 +133,14 @@ function file_entity_multiple_delete_confirm($files) {
 
   $form['files'] = array('#tree' => TRUE);
   $form['file_titles'] = array('#theme' => 'item_list');
-  foreach (array_keys($files) as $fid) {
-    $title = db_query('SELECT filename FROM {file_managed} WHERE fid = :fid', array(':fid' => $fid))->fetchField();
+
+  $files = file_load_multiple(array_keys($files));
+  foreach ($files as $fid => $file) {
     $form['files'][$fid] = array(
       '#type' => 'value',
       '#value' => $fid,
     );
-    $form['file_titles']['#items'][] = check_plain($title);
+    $form['file_titles']['#items'][] = check_plain($file->filename);
   }
   $form['operation'] = array('#type' => 'hidden', '#value' => 'delete');
   $form['#submit'][] = 'file_entity_multiple_delete_confirm_submit';
@@ -161,23 +162,17 @@ function file_entity_multiple_delete_confirm($files) {
  */
 function file_entity_multiple_delete_confirm_submit($form, &$form_state) {
   if ($form_state['values']['confirm']) {
-    $results = array();
-    $files = array_keys($form_state['values']['files']);
-    foreach ($files as $fid) {
-      $file = file_load($fid);
-      $files[$fid] = $file;
-      $results[$fid] = file_delete($file);
-    }
-    // The result of file_delete can be an array if the file is in use, or TRUE/FALSE.
-    foreach ($results as $fid => $result) {
+    $files = file_load_multiple(array_keys($form_state['values']['files']));
+    foreach ($files as $fid => $file) {
+      $result = file_delete($file);
       if (is_array($result)) {
-        drupal_set_message(t('The file @title is in use and cannot be deleted.', array('@title' => $files[$fid]->filename)), 'warning');
+        drupal_set_message(t('The file @title is in use and cannot be deleted.', array('@title' => $file->filename)), 'warning');
       }
       elseif (!$result) {
-        drupal_set_message(t('The file @title was not deleted due to an error.', array('@title' => $files[$fid]->filename)), 'error');
+        drupal_set_message(t('The file @title was not deleted due to an error.', array('@title' => $file->filename)), 'error');
       }
       else {
-        $message = t('File @title was deleted', array('@title' => $files[$fid]->filename));
+        $message = t('File @title was deleted', array('@title' => $file->filename));
         watchdog('file', $message);
         drupal_set_message($message);
       }
diff --git a/file_entity.file_api.inc b/file_entity.file_api.inc
index 6b20f21..166dbbc 100644
--- a/file_entity.file_api.inc
+++ b/file_entity.file_api.inc
@@ -488,8 +488,25 @@ function file_uri_to_object($uri, $use_existing = TRUE) {
   return $file;
 }
 
+/**
+ * A list of operations which can be called on files.
+ *
+ * @return
+ *  An associave array of operations keyed by a system name in the following format:
+ *    - label: A string to show in the operations dropdown.
+ *    - callback (string): A callback function to call for the operation.  This function
+          will be passed an array of file_ids which were selected.
+ *    - confirm (boolean): Whether or not this operation requires a confirm form
+ *        In the case where confirm is set to true, callback should be a function
+ *        which can return a confirm form.
+ */
 function hook_file_operations() {
-  return array(
-    ''
+  $operations = array(
+    'archive_and_email' => array(
+      'label' => t('Archive the selected files and email them'),
+      'callback' => 'file_archiver_confirm_form',
+      'confirm' => TRUE,
+    ),
   );
+  return $operations;
 }
\ No newline at end of file
diff --git a/file_entity.module b/file_entity.module
index e1f5ed6..7d3f252 100644
--- a/file_entity.module
+++ b/file_entity.module
@@ -54,7 +54,7 @@ function file_entity_menu() {
     'description' => 'Manage files used on your site.',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('file_entity_admin_files'),
-    'access arguments' => array('administer file'),
+    'access arguments' => array('administer files'),
     'type' => MENU_LOCAL_TASK | MENU_NORMAL_ITEM,
     'file' => 'file_entity.admin.inc',
   );
@@ -668,11 +668,20 @@ function file_entity_file_operations() {
       'confirm' => TRUE,
     ),
   );
-
   return $operations;
 }
 
 /**
+ * Helper function to get a list of hidden stream wrappers.
+ *
+ * This is used in several places to filter queries for media so that files in
+ * temporary:// don't show up.
+ */
+function file_entity_get_hidden_stream_wrappers() {
+  return array_diff_key(file_get_stream_wrappers(STREAM_WRAPPERS_ALL), file_get_stream_wrappers(STREAM_WRAPPERS_VISIBLE));
+}
+
+/**
  * @see theme_file_file_link.
  * This is a copy of it, except we make the url file/$fid.
  *
