diff --git a/flexslider_views/flexslider_views_plugin_style_flexslider.inc b/flexslider_views/flexslider_views_plugin_style_flexslider.inc
index 0b2c1d2..3b408ac 100755
--- a/flexslider_views/flexslider_views_plugin_style_flexslider.inc
+++ b/flexslider_views/flexslider_views_plugin_style_flexslider.inc
@@ -17,6 +17,8 @@ class flexslider_views_plugin_style_flexslider extends views_plugin_style {
 
     $options += array(
       'flexslider_optionset' => array('default' => 'default'),
+      'caption_field' => array('' => t('None')),
+      'text_field' => array('' => t('None')),
     );
 
     return $options;
@@ -43,6 +45,29 @@ class flexslider_views_plugin_style_flexslider extends views_plugin_style {
       '#options' => $optionsets,
       '#default_value' => $this->options['flexslider_optionset'],
     );
+
+    $link_options = array('' => t('None'));
+    foreach ($this->view->display_handler->get_handlers('field') as $field => $handler) {
+      $link_options[$field] = $handler->ui_name();
+    }
+
+    $form['flexslider']['caption_field'] = array(
+      '#type' => 'select',
+      '#title' => t('Title Field'),
+      '#multiple' => FALSE,
+      '#description' => t('Select a field to be used as title.'),
+      '#options' => $link_options,
+      '#default_value' => $this->options['caption_field'],
+    );
+
+    $form['flexslider']['text_field'] = array(
+      '#type' => 'select',
+      '#title' => t('Text Field'),
+      '#multiple' => FALSE,
+      '#description' => t('Select a field to be used as description.'),
+      '#options' => $link_options,
+      '#default_value' => $this->options['text_field'],
+    );
   }
 
   /**
diff --git a/flexslider_views/theme/flexslider_views.theme.inc b/flexslider_views/theme/flexslider_views.theme.inc
index 2623fc4..5420140 100644
--- a/flexslider_views/theme/flexslider_views.theme.inc
+++ b/flexslider_views/theme/flexslider_views.theme.inc
@@ -14,8 +14,10 @@ function theme_views_view_flexslider($vars) {
   $items = array();
 
   $view = $vars['view'];
+  $options = $vars['options'];
+
   $img_field_name = $vars['img_field_name'];
-  foreach ($vars['rows'] as $row) {
+  foreach ($vars['rows'] as $id => $row) {
     // Can't assume the field has the same language as the Entity that
     // contains it
     // $lang = $row->_field_data[$view->base_field]['entity']->language;
@@ -25,13 +27,26 @@ function theme_views_view_flexslider($vars) {
     }
     // Fields in core don't inherit their containing language by default.
     // Assume LANGUAGE_NONE until a better solution comes along
-    $item = $row->_field_data[$view->base_field]['entity']->{$img_field_name}[LANGUAGE_NONE][0];
+    // $item = $row->_field_data[$view->base_field]['entity']->{$img_field_name}[LANGUAGE_NONE][0];
+    $item['image'] = $view->style_plugin->rendered_fields[$id][$img_field_name];
+    if (isset($options['caption_field']) && !empty($options['caption_field'])) {
+      $data = $view->style_plugin->rendered_fields[$id][$options['caption_field']];
+      if (!empty($data)) {
+        $item['title'] = $data;
+      }
+    }
+    if (isset($options['text_field']) && !empty($options['text_field'])) {
+      $data = $view->style_plugin->rendered_fields[$id][$options['text_field']];
+      if (!empty($data)) {
+        $item['alt'] = $data;
+      }
+    }
     $items[] = $item;
   }
 
   return theme('flexslider_container', array(
     'items' => $items,
-    'settings' => $vars['options'],
+    'settings' => $options,
   ));
 }
 
diff --git a/theme/flexslider-container.tpl.php b/theme/flexslider-container.tpl.php
index 9dfb653..67ac3c7 100755
--- a/theme/flexslider-container.tpl.php
+++ b/theme/flexslider-container.tpl.php
@@ -8,9 +8,24 @@
   <div class="flexslider-content flexslider clearfix" id="flexslider-<?php print $id; ?>">
     <ul class="slides">
     <?php foreach($items as $item) : ?>
-      <li><?php print render($item); ?>
-        <?php if(!empty($item['#item']['title']) || !empty($item['#item']['alt'])) : ?>
-         <div class="flex-caption"><strong><?php print $item['#item']['title']; ?></strong>&nbsp;<?php print $item['#item']['alt'];?></div>
+      <li>
+        <?php
+          if (isset($item['#item']['image'])) {
+            print $item['#item']['image'];
+          }
+          else {
+            print render($item);
+          }
+        ?>
+        <?php if(isset($item['#item']['title']) || isset($item['#item']['alt'])) : ?>
+          <div class="flex-caption">
+            <?php if(!empty($item['#item']['title'])) : ?>
+              <strong><?php print $item['#item']['title']; ?></strong>&nbsp;
+            <?php endif; ?>
+            <?php if(!empty($item['#item']['alt'])) : ?>
+              strong><?php print $item['#item']['alt']; ?>
+            <?php endif; ?>
+          </div>
         <?php endif; ?>
       </li>
     <?php endforeach; ?>
diff --git a/theme/flexslider.theme.inc b/theme/flexslider.theme.inc
index a8dbc8a..0385ccd 100755
--- a/theme/flexslider.theme.inc
+++ b/theme/flexslider.theme.inc
@@ -32,22 +32,10 @@ function template_preprocess_flexslider_container(&$vars) {
   $vars['items'] = array();
   $thumb_style = empty($optionset->imagestyle_thumb) ? 'flexslider_thumb' : $optionset->imagestyle_thumb;
   foreach ($items as $delta => $item) {
-    // Get URL for "normal" image
-    if (empty($optionset->imagestyle_normal)) {
-       $normal_url = file_create_url($item['uri']);
-    }
-    else {
-       $normal_url = image_style_url($optionset->imagestyle_normal, $item['uri']);
-    }
-
     $vars['items'][$delta] = array(
       '#theme' => 'image_formatter',
       '#item' => $item,
       '#image_style' => $optionset->imagestyle_normal,
-//      '#path' => array(
-//         'path' => $normal_url,
-//         'options' => array(),
-//      ),
     );
   }
 }
\ No newline at end of file
