diff --git a/includes/ooyala.api.inc b/includes/ooyala.api.inc
index 3350981..b2c5505 100644
--- a/includes/ooyala.api.inc
+++ b/includes/ooyala.api.inc
@@ -565,7 +565,7 @@ function ooyala_api_fetch_image($embedcode) {
 
   // Successful query case.
   if ($response->data && $xmldoc = @simplexml_load_string($response->data)) {
-    $thumb_url = (string) $xmldoc->promoThumbnail[0] ;
+    $thumb_url = (string) $xmldoc->promoThumbnail[0];
     $thumb_file = drupal_http_request($thumb_url);
     $thumb_path = ooyala_get_thumbnail_url($embedcode, NULL, TRUE);
 
@@ -578,6 +578,10 @@ function ooyala_api_fetch_image($embedcode) {
       $thumb_path = FALSE;
     }
   }
+  elseif ($response->data == 'not ready yet') {
+    // The thumbnail isn't ready yet to be displayed.
+    return FALSE;
+  }
   // Check if this isn't actually a video at all, but a channel. In which case
   // start over and try to retreive the thumbnail of the first video.
   elseif ($channel = ooyala_api_channel_load($embedcode)) {
diff --git a/includes/ooyala.pages.inc b/includes/ooyala.pages.inc
index 3e42e66..b802b5e 100644
--- a/includes/ooyala.pages.inc
+++ b/includes/ooyala.pages.inc
@@ -291,7 +291,7 @@ function ooyala_refresh_thumbnail() {
   $token = drupal_get_token();
 
   $data = array();
-  if (TRUE || isset($_GET['token']) && $_GET['token'] == $token) {
+  if (isset($_GET['token']) && $_GET['token'] == $token) {
     if (isset($_GET['embedcode']) && $_GET['embedcode']) {
       $embedcode = $_GET['embedcode'];
       // Try to retrieve a new thumbnail.
diff --git a/ooyala.module b/ooyala.module
index caac74c..ab5a5a4 100755
--- a/ooyala.module
+++ b/ooyala.module
@@ -343,7 +343,19 @@ function ooyala_field_sanitize($entity_type, $entity, $field, $instance, $langco
   module_load_include('inc', 'ooyala', 'includes/ooyala.api');
 
   foreach ($items as $delta => $item) {
-    $items[$delta]['length'] = empty($items[$delta]['length']) ? ooyala_api_video_property($item['value'], 'length') : $items[$delta]['length'];
+    // We might not have a length yet from Ooyala depending on the processing
+    // of the content. If Ooyala doesn't have a length, unset the value so
+    // Field API will save NULL to the database.
+    if (empty($items[$delta]['length'])) {
+      $length = ooyala_api_video_property($item['value'], 'length');
+      if ($length === FALSE) {
+        unset($items[$delta]['length']);
+      }
+      else {
+        $items[$delta]['length'] = $length;
+      }
+    }
+
     $items[$delta]['status'] = empty($items[$delta]['status']) ? ooyala_api_video_property($item['value'], 'status') : $items[$delta]['status'];
 
     if (isset($item['thumbnail_list'])) {
@@ -355,9 +367,11 @@ function ooyala_field_sanitize($entity_type, $entity, $field, $instance, $langco
 
       $thumbnail_directory = variable_get('ooyala_thumbnail_path', '');
       $data = file_get_contents($thumbnail_url);
-      $file = file_unmanaged_save_data($data, file_build_uri($thumbnail_directory .'/' .$item['value'] .'.jpg'), FILE_EXISTS_REPLACE);
+      $file = file_save_data($data, file_build_uri($thumbnail_directory .'/' .$item['value'] .'.jpg'), FILE_EXISTS_REPLACE);
+
+      $promo_url = ooyala_api_upload_promo_image($item['value'], file_create_url($file->uri));
 
-      if (isset($file)) {
+      if (isset($promo_url)) {
         // Flush image styles.
         $styles = image_styles();
         foreach ($styles as $style) {
@@ -540,17 +554,6 @@ function ooyala_field_widget_form(&$form, &$form_state, $field, $instance, $lang
   return $element;
 }
 
-
-/**
- * Implements hook_views_api().
- */
-function ooyala_views_api() {
-  return array(
-    'api' => 2,
-    'path' => drupal_get_path('module', 'ooyala') . '/includes',
-  );
-}
-
 /**
  * Element #process function for the "ooyala_upload" field.
  */
@@ -590,6 +593,7 @@ function ooyala_upload_process($element, &$form_state, $form) {
     // If the user has clicked the "Refresh thumbnails" button, then we need to
     // generate a new set of thumbnails. If not, we are previewing the node,
     // and we should use the saved thumbnail list.
+
     if (!isset($form_state['ahah_submission']) && isset($element['#value'][0]['thumbnail_subset'])) {
       foreach (explode(",", $element['#value'][0]['thumbnail_subset']) as $timecode) {
         // We need to filter out the 'current' element key.
@@ -603,7 +607,7 @@ function ooyala_upload_process($element, &$form_state, $form) {
       // of up to 10 thumbnail frames. As well, we need to ensure that the
       // array key is never negative and never exceeds the last thumbnail index.
       for ($i = 0; $i < count($thumbnails); $i += ceil((count($thumbnails)) / 5)) {
-        $fuzz = min(max(0, rand($i - 5, $i + 5)), count($thumbnails) - 1);
+        $fuzz = min(max(1, rand($i - 5, $i + 5)), count($thumbnails) - 1);
         $key = $thumbnail_keys[$fuzz];
         $thumbnail_subset[$key] = theme('image', array('path' => $thumbnails[$key], 'alt' => t('Thumbnail at !time', array('!time' => theme('ooyala_video_length', array('length' => $key)))), 'title' => '', 'attributes' => array('width' => 120)));
       }
@@ -623,7 +627,7 @@ function ooyala_upload_process($element, &$form_state, $form) {
       '#default_value' => isset($element['#value'][0]['thumbnail_list']) ? $element['#value'][0]['thumbnail_list'] : 'current',
       '#attributes' => array('class' => array('ooyala-upload-thumbnails')),
     );
-    
+
     $element['thumbnail_list_refresh'] = array(
       '#type' => 'submit',
       '#value' => t('Refresh thumbnails'),
@@ -638,7 +642,7 @@ function ooyala_upload_process($element, &$form_state, $form) {
 
     $element['thumbnail_help'] = array(
       '#prefix' => '<div class="description">',
-      '#value' => t('Select a thumbnail to change the thumbnail for this video. Once saved, it may take a minute for the new thumbnail to be used in Ooyala video players.'),
+      '#markup' => t('Select a thumbnail to change the thumbnail for this video. Once saved, it may take a minute for the new thumbnail to be used in Ooyala video players.'),
       '#suffix' => '</div>',
     );
   }
@@ -915,7 +919,7 @@ function theme_ooyala_upload($vars) {
 function theme_ooyala_upload_preview($vars) {
   if (isset($vars['embedcode'])) {
     $path = ooyala_get_thumbnail_url($vars['embedcode'], NULL, TRUE);
-    $files_dir = variable_get('file_public_path', '');
+    $files_dir = variable_get('file_public_path', conf_path() . '/files');
     if (is_file($files_dir .'/' .$path)) {
       $output = theme('ooyala_thumbnail', array('embedcode' => $vars['embedcode'], 'preset' => NULL, 'link_href' => NULL, 'link_attributes' => NULL, 'image_attributes' => array('width' => $vars['width']), 'get_size' => FALSE, 'full_path' => TRUE));
     }
@@ -1016,7 +1020,7 @@ function theme_ooyala_thumbnail($vars) {
   else {
     // Always force browsers to check the server for a new thumbnail.
     if ($full_path == FALSE) {
-      $file_path = variable_get('file_public_path', 'sites/default/files');
+      $file_path = variable_get('file_public_path', conf_path() . '/files');
       $src = $file_path .'/' .$src;
     }
 //    $src = $file_path .'/' .$src;// . '?' . REQUEST_TIME; // FIXME
@@ -1129,7 +1133,7 @@ function ooyala_get_thumbnail_url($embedcode, $preset = NULL, $return_path = FAL
   $path = $subdir .'/' .$embedcode .'.jpg';
 
   if ($full_path == TRUE && $return_path) {
-    $base_path = variable_get('file_public_path', '');
+    $base_path = variable_get('file_public_path', conf_path() . '/files');
     return $base_path .'/' .$path;
   }
 
