diff --git a/flexslider_fields/flexslider_fields.module b/flexslider_fields/flexslider_fields.module
index 485e173..cceb98c 100644
--- a/flexslider_fields/flexslider_fields.module
+++ b/flexslider_fields/flexslider_fields.module
@@ -15,7 +15,7 @@
  * of an image field.
  */
 function flexslider_fields_field_formatter_info() {
-  return array(
+  $info = array(
     'flexslider' => array(
       'label' => t('flexslider'),
       'field types' => array('image', 'media'),
@@ -26,6 +26,20 @@ function flexslider_fields_field_formatter_info() {
       ),
     ),
   );
+  // Integrate with file entity / media.
+  if (module_exists('file_entity')) {
+    $info['flexslider_file_entity'] = array(
+      'label' => t('Flexslider File Entity'),
+      'description' => t('Render files in a specific view mode.'),
+      'field types' => array('image', 'media', 'file'),
+      'settings' => array(
+        'optionset' => 'default',
+        'file_view_mode' => 'default',
+        'caption' => FALSE,
+      ),
+    );
+  }
+  return $info;
 }
 
 /**
@@ -54,14 +68,25 @@ function flexslider_fields_field_formatter_settings_form($field, $instance, $vie
     '#default_value' => $settings['optionset'],
   );
 
-  $image_styles = image_style_options(FALSE, PASS_THROUGH);
-  $form['image_style'] = array(
+  if ($display['type'] == 'flexslider') {
+    $image_styles = image_style_options(FALSE, PASS_THROUGH);
+    $form['image_style'] = array(
       '#title' => t('Image style'),
       '#type' => 'select',
       '#default_value' => $settings['image_style'],
       '#empty_option' => t('None (original image)'),
       '#options' => $image_styles,
-  );
+    );
+  }
+  elseif ($display['type'] == 'flexslider_file_entity') {
+    $form['file_view_mode'] = array(
+      '#title' => t('File view mode'),
+      '#type' => 'select',
+      '#default_value' => $settings['file_view_mode'],
+      '#options' => file_entity_view_mode_labels(),
+    );
+  }
+
 
   // If the image field doesn't have the Title field enabled, tell the user.
   if ($instance['settings']['title_field'] == FALSE) {
@@ -94,7 +119,7 @@ function flexslider_fields_field_formatter_settings_summary($field, $instance, $
 
   $summary = array();
 
-  // Load option set
+  // Load option set.
   ctools_include('export');
   if (!empty($settings['optionset'])) {
     $o = flexslider_optionset_load($settings['optionset']);
@@ -103,15 +128,27 @@ function flexslider_fields_field_formatter_settings_summary($field, $instance, $
     }
   }
 
-  // Display the selected image style
-  if (!empty($settings['image_style'])) {
-    $is = t('Image style: %imagestyle', array('%imagestyle' => $settings['image_style']));
+  // Display the selected image style.
+  if ($view_mode == 'flexslider') {
+    if (!empty($settings['image_style'])) {
+      $is = t('Image style: %imagestyle', array('%imagestyle' => $settings['image_style']));
+    }
+    else {
+      $is = t('Image style: None (original image)');
+    }
   }
-  else {
-    $is = t('Image style: None (original image)');
+  elseif ($view_mode == 'flexslider_file_entity') {
+    if (!empty($settings['file_view_mode'])) {
+      $is = t('File view mode: %file_view_mode', array(
+        '%file_view_mode' => file_entity_view_mode_label($settings['file_view_mode']),
+      ));
+    }
+    else {
+      $is = t('File view mode: Default');
+    }
   }
 
-  // Build settings summary
+  // Build settings summary.
   $optionset = isset($optionset) ? $optionset->title : t('Default settings');
   $summary[] = t('Option set: %optionset', array('%optionset' => $optionset));
   $summary[] = $is;
@@ -122,10 +159,17 @@ function flexslider_fields_field_formatter_settings_summary($field, $instance, $
 /**
  * Implements hook_field_formatter_view().
  *
- * Prepares a renderable array of images and adds the neccessary JS and CSS
+ * Prepares a renderable array of images and adds the necessary JS and CSS
  */
 function flexslider_fields_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
 
+  // If file entity formatter is selected render all files initially.
+  if ($display['type'] == 'flexslider_file_entity') {
+    $file_display = $display;
+    $file_display['type'] = 'file_rendered';
+    $file_items = file_entity_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $file_display);
+  }
+
   $element = array();
   if (count($items) > 0) {
 
@@ -147,26 +191,31 @@ function flexslider_fields_field_formatter_view($entity_type, $entity, $field, $
       if (isset($item['item']['height'])) {
         $item['slide']['height'] = $item['item']['height'];
       }
-      if (isset($item['item']['alt'])) { 
+      if (isset($item['item']['alt'])) {
         $item['slide']['alt'] = $item['item']['alt'];
       }
       if (isset($item['item']['title'])) {
         $item['slide']['title'] = $item['item']['title'];
       }
 
-      // Render the slide item
-      // If not style set, we have to call theme_image since theme_image_style
-      // doesn't auto-fallback to full size image
-      if (!empty($item['slide']['style_name'])) {
-        // Generate the HTML for the slide
-        $item['slide'] = theme('image_style', $item['slide']);
+      // Render the slide item.
+      if ($display['type'] == 'flexslider') {
+        // If not style set, we have to call theme_image since theme_image_style
+        // doesn't auto-fallback to full size image.
+        if (!empty($item['slide']['style_name'])) {
+          // Generate the HTML for the slide.
+          $item['slide'] = theme('image_style', $item['slide']);
+        }
+        else {
+          // Generate the HTML for the slide.
+          $item['slide'] = theme('image', $item['slide']);
+        }
       }
-      else {
-        // Generate the HTML for the slide
-        $item['slide'] = theme('image', $item['slide']);
+      elseif ($display['type'] == 'flexslider_file_entity') {
+        $item['slide'] = render($file_items[$key]);
       }
 
-      // Check caption settings
+      // Check caption settings.
       if ($display['settings']['caption']) {
         $item['caption'] = filter_xss($item['item']['title']);
       }
@@ -182,4 +231,4 @@ function flexslider_fields_field_formatter_view($entity_type, $entity, $field, $
   }
 
   return $element;
-}
\ No newline at end of file
+}
