diff --git a/includes/media.admin.inc b/includes/media.admin.inc
index 86e3719..c4f06f6 100644
--- a/includes/media.admin.inc
+++ b/includes/media.admin.inc
@@ -11,131 +11,6 @@
 require_once dirname(__FILE__) . '/media.pages.inc';
 
 /**
- *  The administration form for managing media types.
- */
-function media_admin_type_manage_form($form, &$form_state, $media_type) {
-  $form = array();
-  $form['media_type'] = array(
-    '#type' => 'value',
-    '#value' => $media_type->name,
-  );
-
-  // If this Media type is handled by us, then we can put in some default
-  // options. Otherwise, we leave it to the implementing module to form_alter.
-  if ($media_type->type_callback == 'media_is_type') {
-    // Options for match_type.
-    $options = array(
-      'all' => t('All'),
-      'any' => t('Any'),
-      'other' => t('Other'),
-    );
-    if ($media_type->type_callback_args['match_type'] && isset($options[$media_type->type_callback_args['match_type']])) {
-      $default_value = $media_type->type_callback_args['match_type'];
-      $other_default_value = '';
-    }
-    else {
-      $default_value = 'other';
-      $other_default_value = $media_type->type_callback_args['match_type'];
-    }
-    $form['match_type'] = array(
-      '#type' => 'radios',
-      '#title' => t('Match type'),
-      '#options' => $options,
-      '#default_value' => $default_value,
-    );
-    $form['match_type_other'] = array(
-      '#type' => 'textfield',
-      '#title' => t('Other match type value'),
-      '#default_value' => $other_default_value,
-      '#attached' => array(
-        'js' => array(drupal_get_path('module', 'media') . '/js/media.admin.js'),
-      ),
-    );
-
-    // Options for allowed Streams.
-    $options = array('public' => t('Public files'), 'private' => t('Private files'));
-    foreach (file_get_stream_wrappers() as $stream => $wrapper) {
-      $options[$stream] = $wrapper['name'];
-    }
-    unset($options['temporary']);
-    $default_value = array();
-    if (isset($media_type->type_callback_args['streams'])) {
-      foreach ($media_type->type_callback_args['streams'] as $stream) {
-        $default_value[$stream] = $stream;
-      }
-    }
-    $form['streams'] = array(
-      '#type' => 'checkboxes',
-      '#title' => t('Allowed streams'),
-      '#options' => $options,
-      '#default_value' => $default_value,
-    );
-
-    // Options for allowed mimetypes & extensions.
-    $default_value = isset($media_type->type_callback_args['mimetypes']) ? implode(' ', $media_type->type_callback_args['mimetypes']) : '';
-    $form['mimetypes'] = array(
-      '#type' => 'textfield',
-      '#title' => t('Allowed mimetypes'),
-      '#description' => t('You may optionally enter one or more allowed file mimetypes for this Media type, if appropriate, separating each with a space. You may use a regular expression for matching, such as %image_match (which would match any mimetype beginning with %image) or %any_match, which would match any file mimetype.', array('%image_match' => '/^image/', '%image' => t('image'), '%any_match' => '/.*/')),
-      '#default_value' => check_plain($default_value),
-    );
-    $default_value = isset($media_type->type_callback_args['extensions']) ? implode(' ', $media_type->type_callback_args['extensions']) : '';
-    $form['extensions'] = array(
-      '#type' => 'textfield',
-      '#title' => t('Allowed extensions'),
-      '#description' => t('You may optionally enter one or more allowed file extensions for this Media type, if appropriate, separating each with a space (and no dots).'),
-      '#default_value' => check_plain($default_value),
-    );
-  }
-
-  $form['submit'] = array(
-    '#type' => 'submit',
-    '#value' => t('Save'),
-    '#weight' => 100,
-  );
-  return $form;
-}
-
-function media_admin_type_manage_form_submit($form, &$form_state) {
-  $media_type = media_type_load($form_state['values']['media_type']);
-  // Reset all values to empty.
-  $media_type->type_callback_args = array();
-
-  // What is the logic of the match (AND / OR).
-  if ($form_state['values']['match_type']) {
-    $media_type->type_callback_args['match_type'] = $form_state['values']['match_type'];
-  }
-  else {
-    $media_type->type_callback_args['match_type'] = $form_state['values']['match_type_other'];
-  }
-
-  // Which streams are valid for this type.
-  $media_type->type_callback_args['streams'] = array();
-  foreach ($form_state['values']['streams'] as $stream) {
-    if ($stream) {
-      $media_type->type_callback_args['streams'][] = $stream;
-    }
-  }
-
-  // Which mimetypes are valid for this type.
-  if (trim($form_state['values']['mimetypes'])) {
-    $media_type->type_callback_args['mimetypes'] = explode(' ', $form_state['values']['mimetypes']);
-    array_walk($media_type->type_callback_args['mimetypes'], 'trim');
-    array_filter($media_type->type_callback_args['mimetypes']);
-  }
-
-  // Which file extensions are valid for this type.
-  if (trim($form_state['values']['extensions'])) {
-    $media_type->type_callback_args['extensions'] = explode(' ', $form_state['values']['extensions']);
-    array_walk($media_type->type_callback_args['extensions'], 'trim');
-    array_filter($media_type->type_callback_args['extensions']);
-  }
-
-  media_type_save($media_type);
-  drupal_set_message(t('The @label media type has been saved.', array('@label' => $media_type->label)));
-}
-
-/**
  * Form callback for mass import.
  */
 function media_import($form, &$form_state) {
diff --git a/includes/media.types.inc b/includes/media.types.inc
deleted file mode 100644
index bafbdd2..0000000
--- a/includes/media.types.inc
+++ /dev/null
@@ -1,257 +0,0 @@
-<?php
-
-/**
- *  @file
- *  Helper functions related to media types.  CRUD for saving their settings mainly.
- *
- *  Also contains the media entity class definition.
- *  @see media.install for a list of the base types.
- */
-
-/**
- * Implements hook_file_type_info().
- */
-function media_file_type_info() {
-  $types = array();
-  foreach (media_type_get_types() as $type => $type_object) {
-    $types[$type] = array(
-      'label' => $type_object->label,
-      'weight' => $type_object->weight,
-    );
-  }
-  return $types;
-}
-
-/**
- * Implements hook_file_type_info_alter().
- */
-function media_file_type_info_alter(array &$info) {
-  // Add default view callback support for all file types.
-  foreach ($info as $type => $type_info) {
-    $info[$type] += array(
-      'default view callback' => 'media_file_type_media_default_view',
-    );
-  }
-}
-
-/**
- * Implements hook_file_type_TYPE_default_view().
- *
- * Returns a drupal_render() array for displaying the file when there are no
- * administrator-configured formatters, or none of the configured ones return a
- * display.
- */
-function media_file_type_media_default_view($file, $view_mode, $langcode) {
-  // During preview, or when custom attribute values are needed on the displayed
-  // element, use a media icon.
-  if ($view_mode == 'preview' || isset($file->override)) {
-    return array(
-      '#theme' => 'media_formatter_large_icon',
-      '#file' => $file,
-    );
-  }
-
-  // Finally, fall back to File module's generic file display.
-  return array(
-    '#theme' => 'file_link',
-    '#file' => $file,
-  );
-}
-
-/**
- *  Update an existing media type or create a new one.
- *
- *  The default media types are currently 'Audio', 'Image', 'Video', and
- *  'Other', which are defined in media_install().
- *
- *  @param object &$type
- *    $type is an object with the following fields:
- *      ->name => The name of the media asset type, such as 'video';
- *      ->label => The human readable name;
- *      ->base => boolean: If the media type cannot be removed.
- *      ->type_callback => Function call to filter an instance to its bundle.
- *      ->type_callback_args => An array of args to be passed to type_callback.
- *  @return void;
- */
-function media_type_save(&$type) {
-  if (empty($type->name)) {
-    throw new Exception('Enable to add type, name not provided');
-  }
-
-  $type = media_type_set_defaults($type);
-  if (!is_array($type->type_callback_args)) {
-    throw new Exception('type_callback_args should be an array');
-  }
-
-  $type->type_callback_args = serialize($type->type_callback_args);
-
-  $ret = db_merge('media_type')
-    ->key(array('name' => $type->name))
-    ->fields((array)$type)
-  ->execute();
-
-  // Clear the caches
-  drupal_static_reset('media_type_get_types');
-  drupal_static_reset('media_type_get_mime_map');
-  return;
-}
-
-/**
- * @todo Remove this function after ensuring that nothing (including update
- *   functions) call it. It is deprecated with the change from media entity
- *   containing a file field to just a file entity.
- */
-function media_type_configure_formatters($name, $view_modes_to_formatters) {
-}
-
-/**
- * Loads a media type based on its machine name.
- *
- * @param string $name
- * @return StdClass
- */
-function media_type_load($name) {
-  $types = media_type_get_types();
-  if (isset($types[$name])) {
-    return $types[$name];
-  }
-}
-
-/**
- *  Loads all media types into an array keyed by machine name and sorted
- *  and weighted lexographically.
- *
- * @return array
- *  Media types keyed by machine name.
- */
-function media_type_get_types() {
-  $types =& drupal_static(__FUNCTION__);
-  if (!$types) {
-    $types = db_select('media_type', 'mt')
-      ->orderBy('weight')
-      ->fields('mt')
-      ->execute()
-      ->fetchAllAssoc('name'); // Will key by the name field.
-    foreach ($types as &$type) {
-      // I really hate this.
-      $type->type_callback_args = unserialize($type->type_callback_args);
-    }
-  }
-
-  return $types;
-}
-
-/**
- *  Create the basic class and defaults for a media entity bundle type.
- */
-function media_type_set_defaults($info) {
-  $type = new stdClass();
-
-  // This is used to filter a file to the proper bundle.
-  $type->type_callback = 'media_is_type';
-  $type->type_callback_args = array();
-  $type->weight = 0;
-
-  foreach ($info as $k => $v) {
-    $type->{$k} = $v;
-  }
-
-  return $type;
-}
-
-/**
- * Determines the type of media a passed in $file is.
- *
- * @todo: integrate this properly with other APIs in media when fields is done
- * @param unknown_type $file
- * @return unknown_type
- */
-function media_get_type($file) {
-  $types = media_type_get_types();
-  foreach ($types as $name => $type) {
-    if (call_user_func_array($type->type_callback, array($file, $type->type_callback_args))) {
-      return $name;
-    }
-  }
-  throw new Exception('Unable to determine type of media from ' . var_export($file, 1));
-}
-
-/**
- * Default callback used to determine if a file is of a given type.
- *
- * @TODO: document 'any' and 'all' matching.
- *
- * @param $file
- *   The file object.
- * @param $args
- *
- * @return unknown_type
- */
-function media_is_type($file, $args) {
-  $match_type = !empty($args['match_type']) ? 'any' : $args['match_type'];
-  $match_all = $match_type == 'all';
-  if (!empty($args['mimetypes'])) {
-    foreach ($args['mimetypes'] as $expression) {
-      if (preg_match($expression, $file->filemime)) {
-        if (!$match_all) {
-          return TRUE;
-        }
-      }
-    }
-    // Was not matched, so return
-    if ($match_all) {
-      return FALSE;
-    }
-  }
-
-  if (!empty($args['extensions'])) {
-    if (in_array(pathinfo($file->uri, PATHINFO_EXTENSION), $args['extensions'])) {
-      if (!$match_all) {
-        return TRUE;
-      }
-    }
-    // Was not matched, so return
-    if ($match_all) {
-      return FALSE;
-    }
-  }
-
-  if (!empty($args['streams'])) {
-  }
-}
-
-/**
- * Implements hook_file_default_displays().
- *
- * Provides default display configurations for media types.
- *
- * @see file_entity_schema()
- */
-function media_file_default_displays() {
-  $default_displays = array();
-
-  $default_image_styles = array(
-    'preview' => 'square_thumbnail',
-    'teaser' => 'medium',
-    'full' => 'large',
-  );
-
-  // For sites that updated from Media 1.x.
-  // @see media_entity_info_alter()
-  if (media_variable_get('show_deprecated_view_modes')) {
-    $default_image_styles['media_original'] = '';
-  }
-
-  foreach ($default_image_styles as $view_mode => $image_style) {
-    $display_name = 'image__' . $view_mode . '__file_image';
-    $default_displays[$display_name] = (object) array(
-      'api_version' => 1,
-      'name' => $display_name,
-      'status' => 1,
-      'weight' => 5,
-      'settings' => array('image_style' => $image_style),
-    );
-  }
-
-  return $default_displays;
-}
diff --git a/media.install b/media.install
index 2c45f4e..9a26ec4 100644
--- a/media.install
+++ b/media.install
@@ -9,55 +9,6 @@
  * Implements hook_schema().
  */
 function media_schema() {
-  $schema['media_type'] = array(
-    'description' => 'Stores the settings for media types.',
-    'fields' => array(
-      'name' => array(
-        'description' => 'The machine name of the media type.',
-        'type' => 'varchar',
-        'length' => 255,
-        'not null' => TRUE,
-        'default' => '',
-      ),
-      'label' => array(
-        'description' => 'The label of the media type.',
-        'type' => 'varchar',
-        'length' => 255,
-        'not null' => TRUE,
-        'default' => '',
-      ),
-      'base' => array(
-        'description' => 'If this is a base type (i.e. cannot be deleted)',
-        'type' => 'int',
-        'not null' => TRUE,
-        'default' => 0,
-        'size' => 'tiny',
-      ),
-      'weight' => array(
-        'description' => 'Weight of media type. Determines which one wins when claiming a piece of media (first wins)',
-        'type' => 'int',
-        'not null' => TRUE,
-        'default' => 0,
-        'size' => 'normal',
-      ),
-      'type_callback' => array(
-        'description' => 'Callback to determine if provided media is of this type.',
-        'type' => 'varchar',
-        'length' => 255,
-        'not null' => FALSE,
-        'default' => '',
-      ),
-      'type_callback_args' => array(
-        'type' => 'text',
-        'not null' => FALSE,
-        'size' => 'big',
-        'serialize' => TRUE,
-        'description' => 'A serialized array of name value pairs that will be passed to the callback function',
-      ),
-    ),
-    'primary key' => array('name'),
-  );
-
   $schema['media_list_type'] = array(
     'description' => 'Stores the user preference for whether to list as table or images.',
     'fields' => array(
@@ -115,65 +66,6 @@ function media_schema() {
 }
 
 /**
- * Implements hook_install().
- */
-function media_install() {
-  // @todo We may need to disable the media bundle & field in hook_disable.
-
-  // Define the default type to be used if no other type is found. Give it a
-  // high weight to ensure it runs last.
-  $types['default'] = new stdClass();
-  $types['default']->name = 'default';
-  $types['default']->label = "Other";
-  $types['default']->base = TRUE;
-  $types['default']->weight = 1000;
-  $types['default']->type_callback_args = array(
-    'match_type' => 'any',
-    'mimetypes' => array('/.*/'),
-  );
-
-  // Define the common media types: image, audio, and video.
-  $types['image'] = new stdClass();
-  $types['image']->name = 'image';
-  $types['image']->label = "Image";
-  $types['image']->base = TRUE;
-  $types['image']->type_callback_args = array(
-    'match_type' => 'all',
-    'mimetypes' => array('/^image/'),
-    'extensions' => array('jpg', 'jpeg', 'gif', 'png', 'tiff'),
-    'streams' => array('public', 'private'),
-  );
-
-  $types['audio'] = new stdClass();
-  $types['audio']->name = 'audio';
-  $types['audio']->label = "Audio";
-  $types['audio']->base = TRUE;
-  $types['audio']->type_callback_args = array(
-    'match_type' => 'all',
-    'mimetypes' => array('/^audio/'),
-    'extensions' => array('mp3', 'ogg', 'wma'),
-    'streams' => array('public', 'private'),
-  );
-
-  $types['video'] = new stdClass();
-  $types['video']->name = 'video';
-  $types['video']->label = "Video";
-  $types['video']->base = TRUE;
-  $types['video']->type_callback_args = array(
-    'match_type' => 'all',
-    'mimetypes' => array('/^video/'),
-    'extensions' => array('mov', 'mp4', 'avi'),
-    'streams' => array('public', 'private'),
-  );
-
-  // Create the defined types.
-  foreach ($types as $name => $type) {
-    media_type_save($type);
-
-  }
-}
-
-/**
  * Implements hook_uninstall().
  */
 function media_uninstall() {
@@ -184,6 +76,13 @@ function media_uninstall() {
 }
 
 /**
+ * Implements hook_update_last_removed().
+ */
+function media_update_last_removed() {
+  return 7005;
+}
+
+/**
  * Implements hook_update_dependencies().
  */
 function media_update_dependencies() {
@@ -297,7 +196,8 @@ function media_update_7002() {
     }
     $type->name = $type->machine_name;
     unset($type->machine_name);
-    media_type_save($type);
+    // We actually don't do this from this module anymore.'
+//    media_type_save($type);
   }
   variable_del('media_types');
 }
@@ -322,12 +222,6 @@ function media_update_7004() {
 }
 
 /**
- * Deprecated update function.
- */
-function media_update_7005() {
-}
-
-/**
  * Rename the file table to file_managed in case head2head was used.
  */
 function media_update_7006() {
@@ -345,7 +239,7 @@ function media_update_7007() {
   drupal_load('module', 'media');
   drupal_load('module', 'field');
 
-  foreach (media_type_get_types() as $type => $info) {
+  foreach (_media_type_get_types_update_2003() as $type => $info) {
     if ($type != 'image') {
       media_type_configure_formatters($type, array('media_preview' => 'media_large_icon'));
     }
@@ -871,6 +765,64 @@ function media_update_7204() {
 }
 
 /**
+ * Drop the media_types table.
+ */
+function media_update_7205() {
+  // @see http://drupal.org/node/1292382
+  if (!function_exists('file_type_save')) {
+    throw new DrupalUpdateException('The File Entity module needs to be upgraded before continuing.');
+  }
+  else {
+    // We need to convert and save any existing file types.
+    $types = _media_type_get_types_update_2003();
+    include_once DRUPAL_ROOT . '/includes/file.mimetypes.inc';
+    $mapping = file_mimetype_mapping();
+    foreach ($types as $type) {
+      $extensions = isset($type->type_callback_args['extensions']) ? $type->type_callback_args['extensions'] : array();
+      $mimetypes = isset($type->type_callback_args['mimetypes']) ? $type->type_callback_args['mimetypes'] : array();
+      foreach ($extensions as $extension) {
+        if (isset($mapping['extensions'][$extension])) {
+          $type->mimetypes[] = $mapping['mimetypes'][$mapping['extensions'][$extension]];
+        }
+      }
+      // @TODO: Perform some regex magic on the mimetypes.
+//      foreach ($mimetypes as $mimetype) {
+//        if (isset($mapping['extensions'][$extension])) {
+//          $type->mimetypes[] = $mapping['mimetypes'][$mapping['extensions'][$extension]];
+//        }
+//      }
+      $type->streams = isset($type->type_callback_args['streams']) ? $type->type_callback_args['streams'] : array();
+      file_type_save($type);
+    }
+    db_drop_table('media_type');
+  }
+}
+
+/**
+ *  Loads all media types into an array keyed by machine name and sorted
+ *  and weighted lexographically.
+ *
+ * @return array
+ *  Media types keyed by machine name.
+ */
+function _media_type_get_types_update_2003() {
+  $types =& drupal_static(__FUNCTION__);
+  if (!$types) {
+    $types = db_select('media_type', 'mt')
+      ->orderBy('weight')
+      ->fields('mt')
+      ->execute()
+      ->fetchAllAssoc('name'); // Will key by the name field.
+    foreach ($types as &$type) {
+      // I really hate this.
+      $type->type_callback_args = unserialize($type->type_callback_args);
+    }
+  }
+
+  return $types;
+}
+
+/**
  * Helper function for media_update_7204() to update display options within Views.
  */
 function _media_update_7204_update_views_display_options(&$display_options, $view_mode_updates) {
diff --git a/media.module b/media.module
index 9f9800b..725163d 100644
--- a/media.module
+++ b/media.module
@@ -15,9 +15,6 @@
 // A registry of variable_get defaults.
 require_once (dirname(__FILE__) . '/includes/media.variables.inc');
 
-// Define media related file types and how to display them.
-require_once (dirname(__FILE__) . '/includes/media.types.inc');
-
 // Code relating to using media as a field.
 require_once (dirname(__FILE__) . '/includes/media.fields.inc');
 
@@ -120,23 +117,6 @@ function media_menu() {
     'file' => 'includes/media.admin.inc',
   );
 
-  // Settings used for determining the type of media a file is.
-  // @todo Find a new home for this that integrates with the file_entity module.
-//  $items['admin/config/media/types/manage/%media_type'] = array(
-//    'title' => 'Manage media',
-//    'title callback' => 'media_type_page_title',
-//    'title arguments' => array(5),
-//    'description' => 'Manage files used on your site.',
-//    'page callback' => 'drupal_get_form',
-//    'page arguments' => array('media_admin_type_manage_form', 5),
-//    'access arguments' => array('administer media'),
-//    'file' => 'includes/media.admin.inc',
-//  );
-//  $items['admin/config/media/types/manage/%media_type/settings'] = array(
-//    'title' => 'Settings',
-//    'type' => MENU_DEFAULT_LOCAL_TASK,
-//    'weight' => -1,
-//  );
   // Administrative screens for managing media.
   $items['admin/content/file/thumbnails'] = array(
     'title' => 'Thumbnails',
@@ -1070,6 +1050,9 @@ function media_filter_info() {
  *   Renderable array.
  */
 function media_get_thumbnail_preview($file, $link = NULL) {
+  if (!file_type_is_enabled($file->type)) {
+    $file->type = file_get_type($file);
+  }
   $preview = file_view_file($file, 'preview');
   $preview['#show_names'] = TRUE;
   $preview['#add_link'] = $link;
@@ -1078,28 +1061,6 @@ function media_get_thumbnail_preview($file, $link = NULL) {
 }
 
 /**
- * Check that the media is one of the selected types.
- *
- * @param $file
- *   A Drupal file object.
- * @param $types
- *   An array of media type names
- * @return
- *   An array. If the file type is not allowed, it will contain an error
- *   message.
- *
- * @see hook_file_validate()
- */
-function media_file_validate_types(stdClass $file, $types) {
-  $errors = array();
-  if (!in_array(media_get_type($file), $types)) {
-    $errors[] = t('Only the following types of files are allowed to be uploaded: %types-allowed', array('%types-allowed' => implode(', ', $types)));
-  }
-
-  return $errors;
-}
-
-/**
  * Implements hook_flush_caches().
  */
 function media_flush_caches() {
diff --git a/tests/media.test b/tests/media.test
index 1aff96f..0148b64 100644
--- a/tests/media.test
+++ b/tests/media.test
@@ -13,27 +13,4 @@ class MediaTestHelper extends DrupalWebTestCase {
     parent::setUp('media');
   }
 
-  /**
-   * Creates a media type.
-   */
-  protected function createType($overrides = array()) {
-    $type = new stdClass();
-    $type->name = 'test';
-    $type->label = 'Test';
-    $type->base = TRUE;
-    $type->type_callback_args = array(
-      'match_type' => 'all',
-      'mimetypes' => array('/^test/'),
-      'extensions' => array('jpg', 'jpeg', 'gif', 'png', 'tiff'),
-      'streams' => array('public', 'private'),
-    );
-
-    // Apply any specified overrides.
-    foreach ($overrides as $field => $value) {
-      $type->$field = $value;
-    }
-    media_type_save($type);
-
-    return $type;
-  }
 }
