diff --git a/media-views-view-media-browser.tpl.php b/media-views-view-media-browser.tpl.php
new file mode 100644
index 0000000..4bc57ae
--- /dev/null
+++ b/media-views-view-media-browser.tpl.php
@@ -0,0 +1,21 @@
+<?php
+/**
+ * @file media-views-view-media-browser.tpl.php
+ * View template to display a grid of media previews in the media browser.
+ *
+ * @see views-view-list.tpl.php
+ * @see template_preprocess_views_view_media_browser()
+ * @ingroup views_templates
+ */
+?>
+
+<?php print $wrapper_prefix; ?>
+  <div id="scrollbox">
+    <?php print $list_type_prefix; ?>
+      <?php foreach ($rows as $id => $row): ?>
+        <li id="media-item-<?php print $row->fid; ?>" class="<?php print $classes_array[$id]; ?>"><?php print $row->preview; ?></li>
+      <?php endforeach; ?>
+    <?php print $list_type_suffix; ?>
+    <div id="status"></div></div>
+  </div>
+<?php print $wrapper_suffix; ?>
diff --git a/media.views.inc b/media.views.inc
new file mode 100644
index 0000000..06e1919
--- /dev/null
+++ b/media.views.inc
@@ -0,0 +1,113 @@
+<?php
+
+/**
+ * Implements hook_views_plugins().
+ */
+function media_views_plugins() {
+  $plugins = array();
+
+  // Display plugin.
+  $plugins['display']['media_browser'] = array(
+    'title' => t('Media browser tab'),
+    'help' => t('Display as a tab in the media browser.'),
+    'handler' => 'media_views_plugin_display_media_browser',
+    'theme' => 'views_view',
+    'base' => array('file_managed'),
+    'use ajax' => TRUE,
+    'use pager' => TRUE,
+    'accept attachments' => TRUE,
+  );
+
+  // Style plugin.
+  $plugins['style']['media_browser'] = array(
+    'title' => t('Media browser'),
+    'help' => t('Displays rows as an HTML list.'),
+    'handler' => 'media_views_plugin_style_media_browser',
+    'theme' => 'media_views_view_media_browser',
+    'base' => array('file_managed'),
+    'uses row plugin' => FALSE,
+    'uses row class' => FALSE,
+    'uses options' => FALSE,
+    'uses fields' => FALSE,
+    'type' => 'normal',
+    'help topic' => 'style-media-browser',
+  );
+  return $plugins;
+}
+
+/**
+ * @file
+ * Provide Views data and handlers for media.module
+ */
+
+/**
+ * Implements hook_field_views_data().
+ */
+function media_field_views_data($field) {
+  $data = field_views_field_default_views_data($field);
+  foreach ($data as $table_name => $table_data) {
+    // Add the relationship only on the fid field.
+    $data[$table_name][$field['field_name'] . '_fid']['relationship'] = array(
+      'handler' => 'views_handler_relationship',
+      'base' => 'file_managed',
+      'base field' => 'fid',
+      'field' => $field['field_name'] . '_fid',
+      'label' => t('file from !field_name', array('!field_name' => $field['field_name'])),
+    );
+  }
+
+  return $data;
+}
+
+
+/**
+ * Display the view as a media browser.
+ */
+function template_preprocess_media_views_view_media_browser(&$vars) {
+  // Load file objects for each View result.
+  $fids = array();
+  foreach ($vars['rows'] as $index => $row) {
+    $fids[$index] = $row->fid;
+  }
+  $files = file_load_multiple($fids);
+
+  // Render the preview for each file.
+  foreach ($vars['rows'] as $index => $row) {
+    $file = $files[$row->fid];
+    $preview = media_get_thumbnail_preview($file);
+    $vars['rows'][$index]->preview = drupal_render($preview);
+    $vars['rows'][$index]->file = $file;
+  }
+
+  // Add classes and wrappers from the style plugin.
+  $handler  = $vars['view']->style_plugin;
+
+  $class = explode(' ', $handler->options['class']);
+  $class = array_map('drupal_clean_css_identifier', $class);
+
+  $wrapper_class = explode(' ', $handler->options['wrapper_class']);
+  $wrapper_class = array_map('drupal_clean_css_identifier', $wrapper_class);
+
+  $vars['class'] = implode(' ', $class);
+  $vars['wrapper_class'] = implode(' ', $wrapper_class);
+  $vars['wrapper_prefix'] = '<div id="container">';
+  $vars['wrapper_suffix'] = '</div>';
+  $vars['list_type_prefix'] = '<' . $handler->options['type'] . ' id="media-browser-library-list">';
+  $vars['list_type_suffix'] = '</' . $handler->options['type'] . '>';
+
+  if ($vars['wrapper_class']) {
+    $vars['wrapper_prefix'] = '<div id="container" class="' . $vars['wrapper_class'] . '">';
+  }
+
+  if ($vars['class']) {
+    $vars['list_type_prefix'] = '<' . $handler->options['type'] . ' id="media-browser-library-list" class="' . $vars['class'] . '">';
+  }
+
+  // Run the prepared theming variables through a standard Views preprocess
+  // function.
+  template_preprocess_views_view_unformatted($vars);
+
+  // Add media browser javascript and CSS.
+  drupal_add_js(drupal_get_path('module', 'media') . '/js/plugins/media.library.js');
+  drupal_add_css(drupal_get_path('module', 'media') . '/js/plugins/media.library.css');
+}
\ No newline at end of file
diff --git a/media_views_plugin_display_media_browser.inc b/media_views_plugin_display_media_browser.inc
new file mode 100644
index 0000000..2b8aee3
--- /dev/null
+++ b/media_views_plugin_display_media_browser.inc
@@ -0,0 +1,18 @@
+<?php
+/**
+ * @file
+ * Contains the media browser tab display plugin.
+ */
+
+/**
+ * Display plugin to provide a view as a tab in the media browser.
+ *
+ * This is currently just a stub--there's nothing special we need to set up for
+ * rendering a view as a tab in the media browser. It would be possible to
+ * provide a special method that returns the plugin info for
+ * media_media_browser_plugin_info() and the render array for
+ * media_media_browser_plugin_view().
+ *
+ * @ingroup views_display_plugins
+ */
+class media_views_plugin_display_media_browser extends views_plugin_display {}
diff --git a/media_views_plugin_style_media_browser.inc b/media_views_plugin_style_media_browser.inc
new file mode 100644
index 0000000..08b30c5
--- /dev/null
+++ b/media_views_plugin_style_media_browser.inc
@@ -0,0 +1,44 @@
+<?php
+
+/**
+ * @file
+ * The media browser style plugin.
+ */
+
+/**
+// * Style plugin to render media items as an interactive grid for the media
+// * browser.
+ *
+ * @ingroup views_style_plugins
+ */
+class media_views_plugin_style_media_browser extends views_plugin_style_list {
+
+  // Stores the files loaded with pre_render.
+  var $files = array();
+
+  /**
+   * Set default options.
+   */
+  function option_definition() {
+    $options = parent::option_definition();
+
+    $options['type'] = array('default' => 'ul');
+    $options['class'] = array('default' => 'media-list-thumbnails');
+    $options['wrapper_class'] = array('default' => '');
+
+    return $options;
+  }
+
+  // Prevents a problem with views when get_row_class() is not set
+  function get_row_class() {
+  }
+
+  /**
+   * Add the base field (fid) to the query.
+   */
+  function query() {
+    $this->view->query->add_field($this->view->base_table, $this->view->base_field);
+    parent::query();
+  }
+
+}
diff --git a/views/media_default.view.inc b/views/media_default.view.inc
new file mode 100644
index 0000000..c0e6296
--- /dev/null
+++ b/views/media_default.view.inc
@@ -0,0 +1,54 @@
+<?php
+$view = new view;
+$view->name = 'media_default';
+$view->description = '';
+$view->tag = 'default';
+$view->base_table = 'file_managed';
+$view->human_name = 'Media Default View for the Media Browser';
+$view->core = 7;
+$view->api_version = '3.0-alpha1';
+$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
+
+/* Display: Master */
+$handler = $view->new_display('default', 'Master', 'default');
+$handler->display->display_options['access']['type'] = 'perm';
+$handler->display->display_options['cache']['type'] = 'none';
+$handler->display->display_options['query']['type'] = 'views_query';
+$handler->display->display_options['exposed_form']['type'] = 'basic';
+$handler->display->display_options['pager']['type'] = 'full';
+$handler->display->display_options['style_plugin'] = 'media_browser';
+/* Field: File: Name */
+$handler->display->display_options['fields']['filename']['id'] = 'filename';
+$handler->display->display_options['fields']['filename']['table'] = 'file_managed';
+$handler->display->display_options['fields']['filename']['field'] = 'filename';
+$handler->display->display_options['fields']['filename']['label'] = '';
+$handler->display->display_options['fields']['filename']['alter']['alter_text'] = 0;
+$handler->display->display_options['fields']['filename']['alter']['make_link'] = 0;
+$handler->display->display_options['fields']['filename']['alter']['absolute'] = 0;
+$handler->display->display_options['fields']['filename']['alter']['trim'] = 0;
+$handler->display->display_options['fields']['filename']['alter']['word_boundary'] = 0;
+$handler->display->display_options['fields']['filename']['alter']['ellipsis'] = 0;
+$handler->display->display_options['fields']['filename']['alter']['strip_tags'] = 0;
+$handler->display->display_options['fields']['filename']['alter']['html'] = 0;
+$handler->display->display_options['fields']['filename']['hide_empty'] = 0;
+$handler->display->display_options['fields']['filename']['empty_zero'] = 0;
+$handler->display->display_options['fields']['filename']['link_to_file'] = 1;
+
+/* Display: Media browser */
+$handler = $view->new_display('media_browser', 'Media browser', 'media_browser_1');
+$handler->display->display_options['defaults']['title'] = FALSE;
+$handler->display->display_options['title'] = 'View Library';
+$translatables['media_default'] = array(
+  t('Master'),
+  t('more'),
+  t('Apply'),
+  t('Reset'),
+  t('Sort By'),
+  t('Asc'),
+  t('Desc'),
+  t('Items per page'),
+  t('- All -'),
+  t('Offset'),
+  t('Media browser'),
+  t('View Library'),
+);
