diff --git a/amazon.info b/amazon.info
index 3cf4f6b..5e0df95 100644
--- a/amazon.info
+++ b/amazon.info
@@ -14,6 +14,7 @@ files[] = includes/views_handler_field_amazon_title.inc
 files[] = includes/views_handler_field_amazon_xss.inc
 files[] = includes/views_handler_filter_string_compare.inc
 files[] = includes/amazon_views_plugin_row_amazon_view.inc
+files[] = tests/amazon.admin.test
 files[] = tests/amazon.base.test
 files[] = tests/amazon.nodes.test
 files[] = tests/amazon.templates.test
diff --git a/amazon.install b/amazon.install
index a8121a5..cc7326b 100644
--- a/amazon.install
+++ b/amazon.install
@@ -60,6 +60,7 @@ function amazon_schema() {
   $schema['amazon_item'] = array(
     'fields' => array(
       'asin' => array('type' => 'varchar', 'length' => 64, 'not null' => TRUE),
+      'locale' => array('type' => 'varchar', 'length' => 2, 'not null' => TRUE),
       'title' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE),
       'detailpageurl' => array('type' => 'text'),
       'salesrank' => array('type' => 'int', 'unsigned' => TRUE),
@@ -86,7 +87,7 @@ function amazon_schema() {
       'invalid_asin' => array('type' => 'int', 'default' => 0),
       'timestamp' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
     ),
-    'primary key' => array('asin'),
+    'primary key' => array('asin', 'locale'),
   );
 
   $schema['amazon_item_participant'] = array(
@@ -262,3 +263,12 @@ function amazon_update_7108() {
   );
   db_create_table('amazon_item_image_gallery', $schema['amazon_item_image_gallery']);
 }
+
+/**
+ * Add support for locale storage.
+ */
+function amazon_update_7109() {
+  db_query('ALTER TABLE {amazon_item} ADD COLUMN locale VARCHAR(2) AFTER asin;');
+  db_query('UPDATE {amazon_item} SET locale = :locale;', array(':locale' => variable_get('amazon_default_locale')));
+  db_query('ALTER TABLE {amazon_item} DROP PRIMARY KEY, ADD PRIMARY KEY (`asin`, `locale`);');
+}
diff --git a/amazon.module b/amazon.module
index f575391..0d362df 100644
--- a/amazon.module
+++ b/amazon.module
@@ -302,6 +302,7 @@ function template_preprocess_amazon_item(&$variables, $theme_type) {
     $variables['classes'] = _amazon_item_classes($item) . ' amazon-item-' . check_plain($variables['style']);
     $variables['classes_array'][] = _amazon_item_classes($item);
     $variables['classes_array'][] = 'amazon-item-' . check_plain($variables['style']);
+    $variables['classes_array'][] = 'locale-' . check_plain(strtolower($variables['locale']));
 
     // A set of more specific templates to use when displaying items.
     $variables['theme_hook_suggestions'][] = 'amazon_item__' . $variables['style'];
@@ -407,6 +408,10 @@ function amazon_http_request($operation, $parameters = array(), $locale = NULL)
   $results = drupal_http_request($url, array('method' => 'GET'));
   if ($results->code == 200) {
     $xml = new SimpleXMLElement($results->data);
+    for ($c = 0; $c < $xml->Items->Item->count(); $c++) {
+      // Add locale information.
+      $xml->Items->Item[$c]->addChild('locale', $locale);
+    }
     return $xml;
   }
   if ($results->code >= 400 && $results->code < 500) {
@@ -445,7 +450,7 @@ function amazon_item_lookup($item_ids = array(), $force_lookup = FALSE, $locale
   }
   $items = array();
   if (!$force_lookup) {
-    $items = amazon_item_lookup_from_db($item_ids);
+    $items = amazon_item_lookup_from_db($item_ids, $locale);
   }
 
   $items_to_fetch = array();
@@ -455,7 +460,9 @@ function amazon_item_lookup($item_ids = array(), $force_lookup = FALSE, $locale
     }
   }
   $items_from_web = amazon_item_lookup_from_web($items_to_fetch, $locale);
+
   $full_set = $items + $items_from_web;
+
   return $full_set;
 }
 
@@ -480,6 +487,7 @@ function amazon_item_lookup_from_web($item_ids = array(), $locale = NULL) {
       }
     }
   }
+
   return $results;
 }
 
@@ -512,6 +520,7 @@ function _amazon_item_batch_lookup_from_web($item_ids = array(), $locale = NULL)
     }
     return $items;
   }
+
   return array();
 }
 
@@ -545,20 +554,30 @@ function _amazon_item_batch_lookup_from_web_errors($errors) {
  * @return array
  *   Array of Amazon 'cleaned' data structures keyed by ASIN.
  */
-function amazon_item_lookup_from_db($item_ids = array()) {
+function amazon_item_lookup_from_db($item_ids = array(), $locale = NULL) {
   if (!empty($item_ids)) {
     $timestamp = REQUEST_TIME - variable_get('amazon_refresh_schedule', 86400);
-    $result = db_query('SELECT * from {amazon_item} WHERE asin IN (:asins) AND timestamp > :timestamp',
-      array(':asins' => $item_ids, ':timestamp' => $timestamp),
-      array('fetch' => PDO::FETCH_ASSOC));
+
+    $query = db_select('amazon_item', 'a')
+      ->fields('a')
+      ->condition('a.asin', $item_ids, 'IN')
+      ->condition('a.timestamp', $timestamp, '>');
+    if (!is_null($locale)) {
+      $query->condition('a.locale', $locale, '=');
+    }
+    $result = $query->execute();
+
     $items = array();
-    foreach ($result as $item) {
+    foreach ($result->fetchAll() as $item) {
+      $item = (array) $item;
       _amazon_load_child_data($item);
       $item += module_invoke_all('amazon_item_load', $item);
       $items["{$item['asin']}"] = $item;
     }
+
     return $items;
   }
+
   return array();
 }
 
@@ -613,10 +632,12 @@ function _amazon_load_child_data(&$item) {
  */
 function amazon_item_clean_xml($xml) {
   $metadata = amazon_data_cache();
+
   $item = array();
   // Pull the absolute basic information Amazon keeps at the top level
   // of the XML tree, cast to string, and move on.
   $item['asin'] = (string) $xml->ASIN;
+  $item['locale'] = (string) $xml->locale;
   if (!empty($xml->ItemAttributes->ISBN)) {
     $item['isbn'] = (string) $xml->ItemAttributes->ISBN;
   }
@@ -765,7 +786,7 @@ function amazon_item_insert($item) {
   }
   // We have boatloads of data to insert in here, so we're going to
   // cheat and blow away the old entries first.
-  amazon_item_delete($item['asin']);
+  amazon_item_delete($item['asin'], $item['locale']);
 
   $metadata = amazon_data_cache();
 
@@ -881,10 +902,11 @@ function amazon_item_insert($item) {
  *   ASIN to be deleted.
  * @return No return.
  */
-function amazon_item_delete($asin) {
+function amazon_item_delete($asin, $locale) {
   module_invoke_all('amazon_item_delete', $asin);
   db_delete('amazon_item')
   ->condition('asin', $asin)
+  ->condition('locale', $locale)
   ->execute();
   db_delete('amazon_item_participant')
   ->condition('asin', $asin)
@@ -971,13 +993,13 @@ function amazon_data_cache($reset = FALSE) {
 }
 
 function _amazon_default_locales() {
-  $locales = array();
   // Load default locales from includes/amazon.locales.inc
   require_once(drupal_get_path('module', 'amazon') .'/includes/amazon.locales.inc');
   $locales = _amazon_load_locales();
 
   // Fire hook_amazon_locales_alter() to allow modules to manipulate default locales.
   drupal_alter('amazon_locales', $locales);
+
   return $locales;
 }
 
@@ -990,24 +1012,34 @@ function amazon_get_associate_id($locale = NULL) {
 }
 
 function amazon_cron() {
-  // Here, we're going to chug through all the existing ASINs and update them.
-  $needs_update_time = REQUEST_TIME - variable_get('amazon_refresh_schedule', 86400);
-  $result = db_select('amazon_item', NULL, array('fetch' => PDO::FETCH_ASSOC))
-            ->fields('amazon_item', array('asin'))
-            ->condition('timestamp', $needs_update_time, '<')
-            ->orderBy('timestamp', 'ASC')
-            ->range(0, variable_get('amazon_refresh_cron_limit', 50))
-            ->execute();
-  $asins = $result->FetchCol();
-  if (!empty($asins)) {
-    if ($items = amazon_item_lookup_from_web($asins)) {
-      foreach ($items as $item) {
-        amazon_item_insert($item);
+  // Process all configured locales.
+  $amazon_data = amazon_data_cache();
+  $locales = $amazon_data['locales'];
+  foreach ($locales as $locale => $item) {
+    if (variable_get('amazon_locale_' . $locale . '_associate_id', '')) {
+      // Here, we're going to chug through all the existing ASINs and update them.
+      $needs_update_time = REQUEST_TIME - variable_get('amazon_refresh_schedule', 86400);
+
+      $result = db_select('amazon_item', NULL, array('fetch' => PDO::FETCH_ASSOC))
+        ->fields('amazon_item', array('asin'))
+        ->condition('timestamp', $needs_update_time, '<')
+        ->condition('locale', $locale, '=')
+        ->orderBy('timestamp', 'ASC')
+        ->range(0, variable_get('amazon_refresh_cron_limit', 50))
+        ->execute();
+
+      $asins = $result->FetchCol();
+      if (!empty($asins)) {
+        if ($items = amazon_item_lookup_from_web($asins, $locale)) {
+          foreach ($items as $item) {
+            amazon_item_insert($item);
+          }
+          watchdog('amazon', 'Amazon items were updated.');
+        }
+        else {
+          watchdog('amazon', 'Amazon items could not be updated.');
+        }
       }
-      watchdog('amazon', 'Amazon items were updated.');
-    }
-    else {
-      watchdog('amazon', 'Amazon items could not be updated.');
     }
   }
 }
@@ -1029,7 +1061,8 @@ function template_preprocess_amazon_views_view_row_item(&$vars) {
   $options = $vars['options'];
   $vars['amazon_item'] = ''; // make sure var is defined.
   $asin = $vars['row']->asin;
-  $items = amazon_item_lookup($asin);
+  $locale = $vars['row']->locale;
+  $items = amazon_item_lookup($asin, $locale);
   if (empty($items[$asin])) {
     return;
   }
diff --git a/asin/asin.install b/asin/asin.install
index 7d218f0..c4d222f 100644
--- a/asin/asin.install
+++ b/asin/asin.install
@@ -74,7 +74,6 @@ function asin_update_7000(&$sandbox) {
   $sandbox['#finished'] = $sandbox['progress'] / $sandbox['max'];
 }
 
-
 /**
  * Update widget settings for existing asin fields using the autocomplete widget.
  */
@@ -128,4 +127,55 @@ function asin_update_7100(&$sandbox) {
  */
 function asin_update_7101() {
   menu_rebuild();
-}
\ No newline at end of file
+}
+
+/**
+ * Update widget settings for existing asin fields using the text widget.
+ */
+function asin_update_7102(&$sandbox) {
+  if (!isset($sandbox['progress'])) {
+    // Find all ASIN field instances.
+    foreach (field_info_fields() as $field_name => $field) {
+      if ($field['type'] == 'asin') {
+        foreach ($field['bundles'] as $entity_type => $bundles) {
+          foreach ($bundles as $bundle) {
+            $sandbox['instances'][] = array(
+              'entity_type' => $entity_type,
+              'bundle' => $bundle,
+              'field_name' => $field_name
+            );
+          }
+        }
+      }
+    }
+    $sandbox['progress'] = 0;
+    $sandbox['max'] = count($sandbox['instances']);
+
+    // If there are no field instances to update, return.
+    if (!$sandbox['max']) {
+      return;
+    }
+  }
+
+  $instance = $sandbox['instances'][$sandbox['progress']];
+  $instance = field_read_instance($instance['entity_type'], $instance['field_name'], $instance['bundle']);
+
+  $updated = FALSE;
+  if ($instance['widget']['type'] == 'asin_text') {
+    if (!isset($instance['widget']['settings']['widget_settings']['locale'])) {
+      $instance['widget']['settings'] = array(
+        'widget_settings' => array(
+          'locale' => variable_get('amazon_default_locale', 'US'),
+        ),
+      );
+      $updated = TRUE;
+    }
+  }
+  if ($updated) {
+    // Only trigger instance update if we actually changed anything.
+    field_update_instance($instance);
+  }
+
+  $sandbox['progress']++;
+  $sandbox['#finished'] = $sandbox['progress'] / $sandbox['max'];
+}
diff --git a/asin/asin.module b/asin/asin.module
index 7fa6e6c..7b66b40 100644
--- a/asin/asin.module
+++ b/asin/asin.module
@@ -150,6 +150,12 @@ function asin_field_formatter_info() {
  */
 function asin_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
   $element = array();
+  if (isset($instance['widget']['settings']['widget_settings']['locale'])) {
+    $locale = $instance['widget']['settings']['widget_settings']['locale'];
+  }
+  else {
+    $locale = variable_get('amazon_default_locale');
+  }
 
   foreach ($items as $delta => $value) {
     $asin = trim($value['asin']);
@@ -163,9 +169,9 @@ function asin_field_formatter_view($entity_type, $entity, $field, $instance, $la
       else {
 
         // Lookup :: Search the amazon_item table or request Amazon API information
-        $lookup = amazon_item_lookup($asin);
+        $lookup = amazon_item_lookup($asin, FALSE, $locale);
 
-        // If :: Check to see if Amazon Product was returned succesfully  
+        // If :: Check to see if Amazon Product was returned succesfully
         if (!empty($lookup) && $item = $lookup[$asin]) {
 
           // // TODO: kill off amazon_inline_item. There's no reason for it to clutter the earth.
@@ -180,7 +186,7 @@ function asin_field_formatter_view($entity_type, $entity, $field, $instance, $la
           $elements = array(
             '#theme' => $theme_function,
             '#style' => $style,
-            '#item' => $item
+            '#item' => $item,
           );
 
           $element[$delta] = array('#markup' => drupal_render($elements));
@@ -192,7 +198,6 @@ function asin_field_formatter_view($entity_type, $entity, $field, $instance, $la
   return $element;
 }
 
-
 /**
  * Implementation of hook_field_widget_info().
  *
@@ -220,40 +225,47 @@ function asin_field_widget_settings_form($field, $instance) {
   $cache = amazon_data_cache();
   $locale_options = array('' => '-- Select --');
   foreach ($cache['locales'] as $locale => $data) {
-    if (variable_get('amazon_locale_'. $locale .'_associate_id', '')) {
+    if (variable_get('amazon_locale_' . $locale . '_associate_id', '')) {
       $locale_options[$locale] = $data['name'];
     }
   }
 
-  if ($widget['type'] == 'asin_autocomplete') {
-    $form['widget_settings'] = array(
-      '#prefix' => '<div id="asin-autocomplete-widget-settings">',
-      '#suffix' => '</div>',
-    );
-    $form['widget_settings']['locale'] = array(
-      '#title'         => t('Amazon Locale'),
-      '#type'          => 'select',
-      '#options'       => $locale_options,
-      '#default_value' => isset($settings['widget_settings']['locale']) ? $settings['widget_settings']['locale'] : '',
-      '#required'      => TRUE,
-      '#ajax'          => array(
-        'wrapper'      => 'asin-autocomplete-widget-settings',
-        'callback'     => 'asin_widget_locale_product_group',
-        'method'       => 'replace',
-        'effect'       => 'fade',
-      ),
-    );
+  $form['widget_settings'] = array(
+    '#prefix' => '<div id="asin-autocomplete-widget-settings">',
+    '#suffix' => '</div>',
+  );
+  $form['widget_settings']['locale'] = array(
+    '#title' => t('Amazon Locale'),
+    '#type' => 'select',
+    '#options' => $locale_options,
+    '#default_value' => isset($settings['widget_settings']['locale']) ? $settings['widget_settings']['locale'] : '',
+    '#required' => TRUE,
+    '#ajax' => array(
+      'wrapper' => 'asin-autocomplete-widget-settings',
+      'callback' => 'asin_widget_locale_product_group',
+      'method' => 'replace',
+      'effect' => 'fade',
+    ),
+  );
 
-    if (isset($settings['widget_settings']['locale'])) {
-      $form['widget_settings']['productgroup'] = array(
-        '#title' => t('Search Index'),
-        '#type'  => 'select',
-        '#options' => $cache['locales'][$settings['widget_settings']['locale']]['search_indexes'],
-        '#default_value' => isset($settings['widget_settings']['productgroup']) ? $settings['widget_settings']['productgroup'] : 'All',
-      );
+  // Default value for the dropdown.
+  $productgroup_options = array('All' => 'All indexes');
+  if (isset($settings['widget_settings']['locale'])) {
+    if (isset($cache['locales'][$settings['widget_settings']['locale']]['search_indexes'])) {
+      // Populate list.
+      $productgroup_options = $cache['locales'][$settings['widget_settings']['locale']]['search_indexes'];
     }
-    return $form;
   }
+  if ($instance['widget']['type'] == 'asin_autocomplete') {
+    $form['widget_settings']['productgroup'] = array(
+      '#title' => t('Search Index'),
+      '#type' => 'select',
+      '#options' => $productgroup_options,
+      '#default_value' => isset($settings['widget_settings']['productgroup']) ? $settings['widget_settings']['productgroup'] : 'All',
+    );
+  }
+
+  return $form;
 }
 
 /**
@@ -295,7 +307,7 @@ function asin_field_widget_form(&$form, &$form_state, $field, $instance, $langco
 }
 
 /**
- * Widget validation function.
+ * Text callback for the asin_text widget.
  *
  * Checks to see if we can look up an ASIN, URL, or ISBN-13 using the
  * provided text. If we can, it's OK and we turn it into an ASIN.
@@ -306,11 +318,20 @@ function asin_field_widget_element_validate($element, &$form_state) {
   $langcode = $form_state['langcode'];
 
   foreach ($form_state['values'][$field_name][$langcode] as $delta => &$item) {
+    $locale = NULL;
+    if (isset($form_state['field'][$field_name][LANGUAGE_NONE]['instance']['widget']['settings']['widget_settings']['locale'])) {
+      $locale = $form_state['field'][$field_name][LANGUAGE_NONE]['instance']['widget']['settings']['widget_settings']['locale'];
+    }
+
     $asin = trim(amazon_convert_to_asin($item['asin']));
     if (!empty($asin) && is_numeric($delta)) {
-      $results = amazon_item_lookup(array($asin));
+      $results = amazon_item_lookup(array($asin), FALSE, $locale);
       if (empty($results)) {
-        form_set_error("{$field_name}][{$langcode}][{$delta}][asin", t('No Amazon product with the ASIN "%id" could be located.', array('%id' => $asin)));
+        form_set_error("{$field_name}][{$langcode}][{$delta}][asin",
+          t('No Amazon product with the ASIN "%id" could be located in %locale.',
+            array('%id' => $asin, '%locale' => $locale)
+          )
+        );
       }
       else {
         $item['asin'] = (string)key($results);
@@ -319,12 +340,10 @@ function asin_field_widget_element_validate($element, &$form_state) {
   }
 }
 
-
 /**
  * Autocomplete callback for the asin_autocomplete widget.
  */
 function asin_autocomplete_callback($entity_type, $bundle, $field_name, $string = '') {
-  $field = field_info_field($field_name);
   $instance = field_info_instance($entity_type, $field_name, $bundle);
 
   $items = $matches = array();
@@ -335,7 +354,15 @@ function asin_autocomplete_callback($entity_type, $bundle, $field_name, $string
     'SearchIndex' => $instance['widget']['settings']['widget_settings']['productgroup'],
     'Keywords' => $cleanstring,
   );
-  $results = amazon_http_request('ItemSearch', $parameters, $instance['widget']['settings']['widget_settings']['locale']);
+
+  if (isset($instance['widget']['settings']['widget_settings']['locale'])) {
+    $locale = $instance['widget']['settings']['widget_settings']['locale'];
+  }
+  else {
+    $locale = variable_get('amazon_default_locale', 'US');
+  }
+
+  $results = amazon_http_request('ItemSearch', $parameters, $locale);
   // Process the results.
   foreach($results->Items->Item as $xml) {
     $items[(string) $xml->ASIN] = (string) $xml->ItemAttributes->Title . ' (' . $xml->ItemAttributes->ProductGroup . ')';
@@ -472,6 +499,7 @@ function _asin_devel_generate($object, $field, $instance, $bundle) {
 
   $asins = variable_get('amazon_devel_generate_asins', array());
   $amazon_item_page = variable_get('amazon_devel_generate_item_page', 1);
+  $locale = variable_get('amazon_default_locale', 'US');
 
   if (empty($asins)) {
     $parameters = array(
@@ -482,7 +510,7 @@ function _asin_devel_generate($object, $field, $instance, $bundle) {
     );
     $amazon_item_page++;
 
-    $results = amazon_http_request('ItemSearch', $parameters);
+    $results = amazon_http_request('ItemSearch', $parameters, $locale);
     foreach ($results->Items->Item as $xml) {
       $item = amazon_item_clean_xml($xml);
       amazon_item_insert($item);
@@ -529,3 +557,24 @@ function asin_devel_generate_set_values($form, &$form_state) {
   variable_set('asin_devel_generate_keywords', $form_state['values']['asin_devel_generate_keywords']);
   variable_set('asin_devel_generate_search_index', $form_state['values']['asin_devel_generate_search_index']);
 }
+
+/**
+ * Implements hook_preprocess_field().
+ */
+function asin_preprocess_field(&$variables, $hook) {
+  // Add locale class to the Asin fields.
+  if ($variables['element']['#field_type'] == 'asin') {
+    $field_name = $variables['element']['#field_name'];
+    $bundle = $variables['element']['#bundle'];
+    $entity_type = $variables['element']['#entity_type'];
+    $field_instance = field_info_instance($entity_type, $field_name, $bundle);
+
+    if (isset($field_instance['widget']['settings']['widget_settings']['locale'])) {
+      $locale = $field_instance['widget']['settings']['widget_settings']['locale'];
+      }
+    else {
+      $locale = variable_get('amazon_default_locale');
+    }
+    $variables['classes_array'][] = 'locale-' . strtolower($locale);
+  }
+}
diff --git a/tests/amazon.admin.test b/tests/amazon.admin.test
new file mode 100644
index 0000000..3230d95
--- /dev/null
+++ b/tests/amazon.admin.test
@@ -0,0 +1,132 @@
+<?php
+
+/**
+ * @file
+ * Node tests for Amazon module.
+ */
+
+class AmazonAdminUITest extends AmazonBaseTest {
+  protected $admin_user;
+
+  /**
+   * @inheritdoc
+   *
+   * @return array
+   */
+  public static function getInfo() {
+    return array(
+      'name' => 'Admin UI',
+      'description' => 'Tests for the Admin UI.',
+      'group' => 'Amazon',
+    );
+  }
+
+  /**
+   * @inheritdoc
+   *
+   * @param array $modules
+   */
+  protected function setUp($modules = array()) {
+    // Enable modules.
+    parent::setUp($modules);
+  }
+
+  /**
+   * Helper to create ASIN text fields.
+   *
+   * @param $widget
+   *   The widget: asin_text or asin_autocomplete.
+   * @param $locale
+   *   The locale.
+   */
+  protected function createAsinFieldInstance($widget, $locale) {
+    $this->drupalGet('admin/structure/types/manage/article');
+
+    $field_name = substr('asin_' . strtolower($locale) . '_' . $widget, 0, 26);
+    $field_label = 'ASIN ' . $locale . ' (' . $widget . ')';
+
+    $this->clickLink(t('Manage fields'));
+    $edit = [
+      'fields[_add_new_field][field_name]' => $field_name,
+      'fields[_add_new_field][label]' => $field_label,
+      'fields[_add_new_field][type]' => 'asin',
+      'fields[_add_new_field][widget_type]' => $widget,
+    ];
+    $this->drupalPost(NULL, $edit, t('Save'));
+    $this->drupalPost(NULL, array(), t('Save field settings'));
+    $this->drupalGet('admin/structure/types/manage/article/fields/field_' . $field_name);
+    $edit = [
+      'instance[widget][settings][widget_settings][locale]' => $locale,
+    ];
+    $this->drupalPost(NULL, $edit, t('Save settings'));
+  }
+
+  /**
+   * Test the admin UI.
+   */
+  public function testAdminUI() {
+    // Login as an admin user.
+    $this->drupalLogin($this->admin_user);
+
+    // Create fields.
+    $this->createAsinFieldInstance('asin_text', 'US');
+    $this->createAsinFieldInstance('asin_text', 'UK');
+    $this->createAsinFieldInstance('asin_autocomplete', 'US');
+    $this->createAsinFieldInstance('asin_autocomplete', 'UK');
+
+    // Check that fields have been created;
+    $this->drupalGet('admin/structure/types/manage/article/fields');
+
+    $this->assertLink('Amazon ASIN Text field');
+
+    $this->assertRaw('ASIN US (asin_text)');
+    $this->assertRaw('field_asin_us_asin_text');
+
+    $this->assertRaw('ASIN UK (asin_text)');
+    $this->assertRaw('field_asin_uk_asin_text');
+
+    $this->assertLink('Product name autocomplete');
+
+    $this->assertRaw('ASIN US (asin_autocomplete)');
+    $this->assertRaw('field_asin_us_asin_autocomplete');
+
+    $this->assertRaw('ASIN UK (asin_autocomplete)');
+    $this->assertRaw('field_asin_uk_asin_autocomplete');
+
+    // Add new article and fill in the text fields.
+    $this->drupalGet('node/add/');
+    $this->drupalGet('node/add/article');
+    $edit = [
+      'title' => 'Testing UK and US ASIN text fields',
+      'field_asin_us_asin_text[und][0][asin]' => 'B001CEE1YE',
+      'field_asin_uk_asin_text[und][0][asin]' => 'B001CEE1YE',
+    ];
+    $this->drupalPost(NULL, $edit, t('Save'));
+
+    $this->assertRaw('amazon-product--container amazon-item amazon-item-dvd amazon-item-default locale-us', t('All wrapper classes are present'));
+    $this->assertRaw('ASIN US (asin_text)', t('The field label is correct'));
+    $this->assertRaw('The Complete Matrix Trilogy', t('The item title is correct'));
+
+    $this->assertRaw('amazon-product--container amazon-item amazon-item-dvd amazon-item-default locale-uk', t('All wrapper classes are present'));
+    $this->assertRaw('ASIN UK (asin_text)', t('The field label is correct'));
+    $this->assertRaw('Complete Matrix Trilogy [Blu-ray] [1999] [Region Free]', t('The item title is correct'));
+
+    // Add new article and fill in the autocomplete fields.
+    $this->drupalGet('node/add/article');
+    $edit = [
+      'title' => 'Testing UK and US ASIN autocomplete fields',
+      'field_asin_us_asin_autocomplete[und][0][asin]' => 'B001CEE1YE',
+      'field_asin_uk_asin_autocomplete[und][0][asin]' => 'B001CEE1YE',
+    ];
+    $this->drupalPost(NULL, $edit, t('Save'));
+
+    $this->assertRaw('amazon-product--container amazon-item amazon-item-dvd amazon-item-default locale-us', t('All wrapper classes are present'));
+    $this->assertRaw('ASIN US (asin_autocomplete)', t('The field label is correct'));
+    $this->assertRaw('The Complete Matrix Trilogy', t('The item title is correct'));
+
+    $this->assertRaw('amazon-product--container amazon-item amazon-item-dvd amazon-item-default locale-uk', t('All wrapper classes are present'));
+    $this->assertRaw('ASIN UK (asin_autocomplete)', t('The field label is correct'));
+    $this->assertRaw('Complete Matrix Trilogy [Blu-ray] [1999] [Region Free]', t('The item title is correct'));
+  }
+
+}
diff --git a/tests/amazon.base.test b/tests/amazon.base.test
index ae0e2a7..8d05ccc 100644
--- a/tests/amazon.base.test
+++ b/tests/amazon.base.test
@@ -23,6 +23,7 @@ class AmazonBaseTest extends DrupalWebTestCase {
     $this->admin_user = $this->drupalCreateUser(array(
         'administer content types',
         'administer nodes',
+        'create article content',
         'edit any article content',
         'administer fields',
         'administer amazon',
@@ -39,6 +40,7 @@ class AmazonBaseTest extends DrupalWebTestCase {
     variable_set('amazon_aws_secret_access_key', $id);
     variable_set('amazon_default_locale', 'US');
     variable_set('amazon_locale_US_associate_id', 'test-20');
+    variable_set('amazon_locale_UK_associate_id', 'test-21');
   }
 
   /**
diff --git a/tests/amazon.nodes.test b/tests/amazon.nodes.test
index ebe9472..1ba2c3a 100644
--- a/tests/amazon.nodes.test
+++ b/tests/amazon.nodes.test
@@ -40,7 +40,7 @@ class AmazonNodesTest extends AmazonBaseTest {
     $this->drupalGet('admin/structure/types/manage/article/display');
     $this->assertRaw('ASIN');
     // Create a node.
-    $amazon_item = amazon_test_get_amazon_item();
+    $amazon_item = amazon_test_get_amazon_items()[0];
     $node = $this->drupalCreateNode(
       array(
         'type' => 'article',
diff --git a/tests/amazon_test.json b/tests/amazon_test.json
index 7207573..41a3a24 100644
--- a/tests/amazon_test.json
+++ b/tests/amazon_test.json
@@ -1,248 +1,503 @@
-{
-  "asin": "B001CEE1YE",
-  "ean": "7321900220453",
-  "salesrank": 2860,
-  "detailpageurl": "https:\/\/www.amazon.com\/Complete-Trilogy-Reloaded-Revolutions-Blu-ray\/dp\/B001CEE1YE?SubscriptionId=AKIAIA4L2B7M4QP56BXQ&tag=test-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=B001CEE1YE",
-  "listpriceamount": 1626,
-  "listpricecurrencycode": "USD",
-  "listpriceformattedprice": "$16.26",
-  "lowestpriceamount": 1169,
-  "lowestpricecurrencycode": "USD",
-  "lowestpriceformattedprice": "$11.69",
-  "amazonpriceamount": 1169,
-  "amazonpricecurrencycode": "USD",
-  "amazonpriceformattedprice": "$11.69",
-  "aspectratio": "2.40:1",
-  "audiencerating": "Unrated (Not Rated)",
-  "binding": "Blu-ray",
-  "brand": "Warner Brothers UK",
-  "isadultproduct": "0",
-  "isautographed": "0",
-  "iseligiblefortradein": "1",
-  "ismemorabilia": "0",
-  "label": "Imports",
-  "manufacturer": "Imports",
-  "model": "MSE521532",
-  "mpn": "BDY22045",
-  "numberofdiscs": "3",
-  "packagequantity": "1",
-  "partnumber": "BDY22045",
-  "productgroup": "DVD",
-  "producttypename": "ABIS_DVD",
-  "publisher": "Imports",
-  "regioncode": "2",
-  "releasedate": "2008-10-14",
-  "runningtime": "457",
-  "studio": "Imports",
-  "title": "The Complete Matrix Trilogy",
-  "actor": [
-    "Keanu Reeves",
-    "Laurence Fishburne",
-    "Carrie-Anne Moss",
-    "Hugo Weaving",
-    "Gloria Foster"
-  ],
-  "participants": [
-    "Keanu Reeves",
-    "Laurence Fishburne",
-    "Carrie-Anne Moss",
-    "Hugo Weaving",
-    "Gloria Foster",
-    "Lana Wachowski",
-    "Lilly Wachowski",
-    "Lana Wachowski",
-    "Lilly Wachowski",
-    "Andrew Mason",
-    "Barrie M. Osborne",
-    "Bruce Berman",
-    "Carol Hughes"
-  ],
-  "director": [
-    "Lana Wachowski",
-    "Lilly Wachowski"
-  ],
-  "creator": [
-    "Lana Wachowski",
-    "Lilly Wachowski",
-    "Andrew Mason",
-    "Barrie M. Osborne",
-    "Bruce Berman",
-    "Carol Hughes"
-  ],
-  "imagesets": {
-    "smallimage": {
-      "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51zWHDbZCLL._SL75_.jpg",
-      "height": 75,
-      "width": 59
-    },
-    "mediumimage": {
-      "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51zWHDbZCLL._SL160_.jpg",
-      "height": 160,
-      "width": 126
-    },
-    "largeimage": {
-      "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51zWHDbZCLL.jpg",
-      "height": 500,
-      "width": 395
-    }
-  },
-  "imagesets_gallery": {
-    "smallimage_gallery": {
-      "1": {
-        "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51ZCOfo8FKL._SL75_.jpg",
-        "category": "variant",
-        "height": 75,
-        "width": 60
-      },
-      "2": {
-        "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51lJVMK07BL._SL75_.jpg",
-        "category": "variant",
-        "height": 75,
-        "width": 59
-      },
-      "3": {
-        "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51CoUrBGWbL._SL75_.jpg",
-        "category": "variant",
-        "height": 75,
-        "width": 59
-      },
-      "4": {
-        "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51USz%2Bm6HwL._SL75_.jpg",
-        "category": "variant",
-        "height": 75,
-        "width": 59
-      },
-      "5": {
-        "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51gStvLPGWL._SL75_.jpg",
-        "category": "variant",
-        "height": 75,
-        "width": 59
-      },
-      "6": {
-        "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51vyv9ZHE5L._SL75_.jpg",
-        "category": "variant",
-        "height": 75,
-        "width": 59
-      },
-      "7": {
-        "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/61ssFYMK8UL._SL75_.jpg",
-        "category": "variant",
-        "height": 75,
-        "width": 60
-      },
-      "8": {
+[
+  {
+    "asin": "B001CEE1YE",
+    "locale": "US",
+    "ean": "7321900220453",
+    "salesrank": 2860,
+    "detailpageurl": "https:\/\/www.amazon.com\/Complete-Trilogy-Reloaded-Revolutions-Blu-ray\/dp\/B001CEE1YE?SubscriptionId=AKIAIA4L2B7M4QP56BXQ&tag=test-20&linkCode=xm2&camp=2025&creative=165953&creativeASIN=B001CEE1YE",
+    "listpriceamount": 1626,
+    "listpricecurrencycode": "USD",
+    "listpriceformattedprice": "$16.26",
+    "lowestpriceamount": 1169,
+    "lowestpricecurrencycode": "USD",
+    "lowestpriceformattedprice": "$11.69",
+    "amazonpriceamount": 1169,
+    "amazonpricecurrencycode": "USD",
+    "amazonpriceformattedprice": "$11.69",
+    "aspectratio": "2.40:1",
+    "audiencerating": "Unrated (Not Rated)",
+    "binding": "Blu-ray",
+    "brand": "Warner Brothers UK",
+    "isadultproduct": "0",
+    "isautographed": "0",
+    "iseligiblefortradein": "1",
+    "ismemorabilia": "0",
+    "label": "Imports",
+    "manufacturer": "Imports",
+    "model": "MSE521532",
+    "mpn": "BDY22045",
+    "numberofdiscs": "3",
+    "packagequantity": "1",
+    "partnumber": "BDY22045",
+    "productgroup": "DVD",
+    "producttypename": "ABIS_DVD",
+    "publisher": "Imports",
+    "regioncode": "2",
+    "releasedate": "2008-10-14",
+    "runningtime": "457",
+    "studio": "Imports",
+    "title": "The Complete Matrix Trilogy",
+    "actor": [
+      "Keanu Reeves",
+      "Laurence Fishburne",
+      "Carrie-Anne Moss",
+      "Hugo Weaving",
+      "Gloria Foster"
+    ],
+    "participants": [
+      "Keanu Reeves",
+      "Laurence Fishburne",
+      "Carrie-Anne Moss",
+      "Hugo Weaving",
+      "Gloria Foster",
+      "Lana Wachowski",
+      "Lilly Wachowski",
+      "Lana Wachowski",
+      "Lilly Wachowski",
+      "Andrew Mason",
+      "Barrie M. Osborne",
+      "Bruce Berman",
+      "Carol Hughes"
+    ],
+    "director": [
+      "Lana Wachowski",
+      "Lilly Wachowski"
+    ],
+    "creator": [
+      "Lana Wachowski",
+      "Lilly Wachowski",
+      "Andrew Mason",
+      "Barrie M. Osborne",
+      "Bruce Berman",
+      "Carol Hughes"
+    ],
+    "imagesets": {
+      "smallimage": {
         "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51zWHDbZCLL._SL75_.jpg",
-        "category": "primary",
         "height": 75,
         "width": 59
-      }
-    },
-    "mediumimage_gallery": {
-      "1": {
-        "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51ZCOfo8FKL._SL160_.jpg",
-        "category": "variant",
-        "height": 160,
-        "width": 127
-      },
-      "2": {
-        "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51lJVMK07BL._SL160_.jpg",
-        "category": "variant",
-        "height": 160,
-        "width": 126
-      },
-      "3": {
-        "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51CoUrBGWbL._SL160_.jpg",
-        "category": "variant",
-        "height": 160,
-        "width": 126
-      },
-      "4": {
-        "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51USz%2Bm6HwL._SL160_.jpg",
-        "category": "variant",
-        "height": 160,
-        "width": 125
-      },
-      "5": {
-        "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51gStvLPGWL._SL160_.jpg",
-        "category": "variant",
-        "height": 160,
-        "width": 126
-      },
-      "6": {
-        "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51vyv9ZHE5L._SL160_.jpg",
-        "category": "variant",
-        "height": 160,
-        "width": 126
       },
-      "7": {
-        "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/61ssFYMK8UL._SL160_.jpg",
-        "category": "variant",
-        "height": 160,
-        "width": 127
-      },
-      "8": {
+      "mediumimage": {
         "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51zWHDbZCLL._SL160_.jpg",
-        "category": "primary",
         "height": 160,
         "width": 126
-      }
-    },
-    "largeimage_gallery": {
-      "1": {
-        "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51ZCOfo8FKL.jpg",
-        "category": "variant",
-        "height": 500,
-        "width": 398
       },
-      "2": {
-        "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51lJVMK07BL.jpg",
-        "category": "variant",
+      "largeimage": {
+        "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51zWHDbZCLL.jpg",
         "height": 500,
         "width": 395
+      }
+    },
+    "imagesets_gallery": {
+      "smallimage_gallery": {
+        "1": {
+          "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51ZCOfo8FKL._SL75_.jpg",
+          "category": "variant",
+          "height": 75,
+          "width": 60
+        },
+        "2": {
+          "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51lJVMK07BL._SL75_.jpg",
+          "category": "variant",
+          "height": 75,
+          "width": 59
+        },
+        "3": {
+          "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51CoUrBGWbL._SL75_.jpg",
+          "category": "variant",
+          "height": 75,
+          "width": 59
+        },
+        "4": {
+          "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51USz%2Bm6HwL._SL75_.jpg",
+          "category": "variant",
+          "height": 75,
+          "width": 59
+        },
+        "5": {
+          "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51gStvLPGWL._SL75_.jpg",
+          "category": "variant",
+          "height": 75,
+          "width": 59
+        },
+        "6": {
+          "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51vyv9ZHE5L._SL75_.jpg",
+          "category": "variant",
+          "height": 75,
+          "width": 59
+        },
+        "7": {
+          "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/61ssFYMK8UL._SL75_.jpg",
+          "category": "variant",
+          "height": 75,
+          "width": 60
+        },
+        "8": {
+          "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51zWHDbZCLL._SL75_.jpg",
+          "category": "primary",
+          "height": 75,
+          "width": 59
+        }
       },
-      "3": {
-        "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51CoUrBGWbL.jpg",
-        "category": "variant",
-        "height": 500,
-        "width": 394
+      "mediumimage_gallery": {
+        "1": {
+          "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51ZCOfo8FKL._SL160_.jpg",
+          "category": "variant",
+          "height": 160,
+          "width": 127
+        },
+        "2": {
+          "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51lJVMK07BL._SL160_.jpg",
+          "category": "variant",
+          "height": 160,
+          "width": 126
+        },
+        "3": {
+          "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51CoUrBGWbL._SL160_.jpg",
+          "category": "variant",
+          "height": 160,
+          "width": 126
+        },
+        "4": {
+          "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51USz%2Bm6HwL._SL160_.jpg",
+          "category": "variant",
+          "height": 160,
+          "width": 125
+        },
+        "5": {
+          "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51gStvLPGWL._SL160_.jpg",
+          "category": "variant",
+          "height": 160,
+          "width": 126
+        },
+        "6": {
+          "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51vyv9ZHE5L._SL160_.jpg",
+          "category": "variant",
+          "height": 160,
+          "width": 126
+        },
+        "7": {
+          "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/61ssFYMK8UL._SL160_.jpg",
+          "category": "variant",
+          "height": 160,
+          "width": 127
+        },
+        "8": {
+          "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51zWHDbZCLL._SL160_.jpg",
+          "category": "primary",
+          "height": 160,
+          "width": 126
+        }
       },
-      "4": {
-        "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51USz%2Bm6HwL.jpg",
-        "category": "variant",
-        "height": 500,
-        "width": 391
+      "largeimage_gallery": {
+        "1": {
+          "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51ZCOfo8FKL.jpg",
+          "category": "variant",
+          "height": 500,
+          "width": 398
+        },
+        "2": {
+          "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51lJVMK07BL.jpg",
+          "category": "variant",
+          "height": 500,
+          "width": 395
+        },
+        "3": {
+          "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51CoUrBGWbL.jpg",
+          "category": "variant",
+          "height": 500,
+          "width": 394
+        },
+        "4": {
+          "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51USz%2Bm6HwL.jpg",
+          "category": "variant",
+          "height": 500,
+          "width": 391
+        },
+        "5": {
+          "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51gStvLPGWL.jpg",
+          "category": "variant",
+          "height": 500,
+          "width": 393
+        },
+        "6": {
+          "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51vyv9ZHE5L.jpg",
+          "category": "variant",
+          "height": 500,
+          "width": 394
+        },
+        "7": {
+          "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/61ssFYMK8UL.jpg",
+          "category": "variant",
+          "height": 500,
+          "width": 398
+        },
+        "8": {
+          "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51zWHDbZCLL.jpg",
+          "category": "primary",
+          "height": 500,
+          "width": 395
+        }
+      }
+    },
+    "editorialreviews": [
+      {
+        "source": "Product Description",
+        "content": "<P><B>ITEM IS FACTORY SEALED AND BRAND NEW<\/B>"
+      }
+    ],
+    "customerreviews_iframe": "https:\/\/www.amazon.com\/reviews\/iframe?akid=AKIAIA4L2B7M4QP56BXQ&alinkCode=xm2&asin=B001CEE1YE&atag=test-20&exp=2019-10-25T15%3A06%3A23Z&v=2&sig=rvHtI6Y0P97aWYMIusZ0vli7GiSh3VRxMI%253D"
+  },
+  {
+    "asin": "B001CEE1YE",
+    "locale": "UK",
+    "ean": "7321900220453",
+    "salesrank": 836,
+    "detailpageurl": "https:\/\/www.amazon.co.uk\/Complete-Matrix-Trilogy-Blu-ray-Region\/dp\/B001CEE1YE?SubscriptionId=AKIAIA4L2B7M4QP56BXQ&tag=experevi-21&linkCode=xm2&camp=2025&creative=165953&creativeASIN=B001CEE1YE",
+    "lowestpriceamount": 872,
+    "lowestpricecurrencycode": "GBP",
+    "lowestpriceformattedprice": "\u00A38.72",
+    "amazonpriceamount": 931,
+    "amazonpricecurrencycode": "GBP",
+    "amazonpriceformattedprice": "\u00A39.31",
+    "aspectratio": "16:9 - 2.40:1",
+    "audiencerating": "Suitable for 15 years and over",
+    "binding": "Blu-ray",
+    "brand": "Warner Home Video",
+    "edition": "STANDARD EDITION",
+    "feature": "Polish Release, cover may contain Polish text\/markings. The disk has English audio and subtitles.",
+    "isadultproduct": "0",
+    "isautographed": "0",
+    "ismemorabilia": "0",
+    "label": "Warner Home Video",
+    "manufacturer": "Warner Home Video",
+    "model": "MSE521532",
+    "mpn": "BDY22045",
+    "numberofdiscs": "3",
+    "numberofitems": "3",
+    "packagequantity": "1",
+    "partnumber": "BDY22045",
+    "productgroup": "DVD",
+    "producttypename": "ABIS_DVD",
+    "publisher": "Warner Home Video",
+    "regioncode": "2",
+    "releasedate": "2008-11-24",
+    "runningtime": "396",
+    "studio": "Warner Home Video",
+    "title": "Complete Matrix Trilogy [Blu-ray] [1999] [Region Free]",
+    "actor": [
+      "Keanu Reeves",
+      "Laurence Fishburne",
+      "Carrie-Anne Moss",
+      "Hugo Weaving",
+      "Gloria Foster"
+    ],
+    "participants": [
+      "Keanu Reeves",
+      "Laurence Fishburne",
+      "Carrie-Anne Moss",
+      "Hugo Weaving",
+      "Gloria Foster",
+      "Lana Wachowski",
+      "Lilly Wachowski",
+      "Keanu Reeves",
+      "Laurence Fishburne",
+      "Lana Wachowski",
+      "Lilly Wachowski",
+      "Andrew Mason",
+      "Barrie M. Osborne",
+      "Bruce Berman",
+      "Carol Hughes"
+    ],
+    "director": [
+      "Lana Wachowski",
+      "Lilly Wachowski"
+    ],
+    "creator": [
+      "Keanu Reeves",
+      "Laurence Fishburne",
+      "Lana Wachowski",
+      "Lilly Wachowski",
+      "Andrew Mason",
+      "Barrie M. Osborne",
+      "Bruce Berman",
+      "Carol Hughes"
+    ],
+    "imagesets": {
+      "smallimage": {
+        "url": "https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/51zWHDbZCLL._SL75_.jpg",
+        "height": 75,
+        "width": 59
       },
-      "5": {
-        "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51gStvLPGWL.jpg",
-        "category": "variant",
-        "height": 500,
-        "width": 393
+      "mediumimage": {
+        "url": "https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/51zWHDbZCLL._SL160_.jpg",
+        "height": 160,
+        "width": 126
       },
-      "6": {
-        "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51vyv9ZHE5L.jpg",
-        "category": "variant",
+      "largeimage": {
+        "url": "https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/51zWHDbZCLL.jpg",
         "height": 500,
-        "width": 394
+        "width": 395
+      }
+    },
+    "imagesets_gallery": {
+      "smallimage_gallery": {
+        "1": {
+          "url": "https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/51ZCOfo8FKL._SL75_.jpg",
+          "category": "variant",
+          "height": 75,
+          "width": 60
+        },
+        "2": {
+          "url": "https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/51lJVMK07BL._SL75_.jpg",
+          "category": "variant",
+          "height": 75,
+          "width": 59
+        },
+        "3": {
+          "url": "https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/51CoUrBGWbL._SL75_.jpg",
+          "category": "variant",
+          "height": 75,
+          "width": 59
+        },
+        "4": {
+          "url": "https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/51USz%2Bm6HwL._SL75_.jpg",
+          "category": "variant",
+          "height": 75,
+          "width": 59
+        },
+        "5": {
+          "url": "https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/51gStvLPGWL._SL75_.jpg",
+          "category": "variant",
+          "height": 75,
+          "width": 59
+        },
+        "6": {
+          "url": "https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/51vyv9ZHE5L._SL75_.jpg",
+          "category": "variant",
+          "height": 75,
+          "width": 59
+        },
+        "7": {
+          "url": "https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/61ssFYMK8UL._SL75_.jpg",
+          "category": "variant",
+          "height": 75,
+          "width": 60
+        },
+        "8": {
+          "url": "https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/51zWHDbZCLL._SL75_.jpg",
+          "category": "primary",
+          "height": 75,
+          "width": 59
+        }
       },
-      "7": {
-        "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/61ssFYMK8UL.jpg",
-        "category": "variant",
-        "height": 500,
-        "width": 398
+      "mediumimage_gallery": {
+        "1": {
+          "url": "https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/51ZCOfo8FKL._SL160_.jpg",
+          "category": "variant",
+          "height": 160,
+          "width": 127
+        },
+        "2": {
+          "url": "https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/51lJVMK07BL._SL160_.jpg",
+          "category": "variant",
+          "height": 160,
+          "width": 126
+        },
+        "3": {
+          "url": "https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/51CoUrBGWbL._SL160_.jpg",
+          "category": "variant",
+          "height": 160,
+          "width": 126
+        },
+        "4": {
+          "url": "https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/51USz%2Bm6HwL._SL160_.jpg",
+          "category": "variant",
+          "height": 160,
+          "width": 125
+        },
+        "5": {
+          "url": "https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/51gStvLPGWL._SL160_.jpg",
+          "category": "variant",
+          "height": 160,
+          "width": 126
+        },
+        "6": {
+          "url": "https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/51vyv9ZHE5L._SL160_.jpg",
+          "category": "variant",
+          "height": 160,
+          "width": 126
+        },
+        "7": {
+          "url": "https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/61ssFYMK8UL._SL160_.jpg",
+          "category": "variant",
+          "height": 160,
+          "width": 127
+        },
+        "8": {
+          "url": "https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/51zWHDbZCLL._SL160_.jpg",
+          "category": "primary",
+          "height": 160,
+          "width": 126
+        }
       },
-      "8": {
-        "url": "https:\/\/images-na.ssl-images-amazon.com\/images\/I\/51zWHDbZCLL.jpg",
-        "category": "primary",
-        "height": 500,
-        "width": 395
+      "largeimage_gallery": {
+        "1": {
+          "url": "https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/51ZCOfo8FKL.jpg",
+          "category": "variant",
+          "height": 500,
+          "width": 398
+        },
+        "2": {
+          "url": "https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/51lJVMK07BL.jpg",
+          "category": "variant",
+          "height": 500,
+          "width": 395
+        },
+        "3": {
+          "url": "https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/51CoUrBGWbL.jpg",
+          "category": "variant",
+          "height": 500,
+          "width": 394
+        },
+        "4": {
+          "url": "https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/51USz%2Bm6HwL.jpg",
+          "category": "variant",
+          "height": 500,
+          "width": 391
+        },
+        "5": {
+          "url": "https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/51gStvLPGWL.jpg",
+          "category": "variant",
+          "height": 500,
+          "width": 393
+        },
+        "6": {
+          "url": "https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/51vyv9ZHE5L.jpg",
+          "category": "variant",
+          "height": 500,
+          "width": 394
+        },
+        "7": {
+          "url": "https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/61ssFYMK8UL.jpg",
+          "category": "variant",
+          "height": 500,
+          "width": 398
+        },
+        "8": {
+          "url": "https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/51zWHDbZCLL.jpg",
+          "category": "primary",
+          "height": 500,
+          "width": 395
+        }
       }
-    }
-  },
-  "editorialreviews": [
-    {
-      "source": "Product Description",
-      "content": "<P><B>ITEM IS FACTORY SEALED AND BRAND NEW<\/B>"
-    }
-  ],
-  "customerreviews_iframe": "https:\/\/www.amazon.com\/reviews\/iframe?akid=AKIAIA4L2B7M4QP56BXQ&alinkCode=xm2&asin=B001CEE1YE&atag=test-20&exp=2019-10-25T15%3A06%3A23Z&v=2&sig=rvHtI6Y0P97aWYMIusZ0vli7GiSh3VRxMI%253D"
-}
+    },
+    "editorialreviews": [
+      {
+        "source": "From Amazon.co.uk",
+        "content": "The first film of The Matrix<\/i> trilogy established the Wachowski brothers as innovative filmmakers who push the boundaries of live-action films. Like the groundbreaking Star Wars, The Matrix<\/i> showcases a unique visual style, one the Wachowskis achieved through an array of techniques and digital effects, some never before seen in mainstream Hollywood films. Although computer morphing technology had been used before in The Abyss<\/i> and Terminator 2<\/i>, the Wachowskis were the first to use \"bullet time\", a time-bending digital effect that utilises both computer-generated imagery and still photography. The sequel The Matrix Reloaded<\/i> showcased that visual style to further effect, with The Matrix Revolutions<\/I> completing the trilogy.The Matrix Reloaded<\/i> sequel delivers added amounts of everything that the first film had, with the exception of surprises. We see more of the \"real world\" in the last human city of Zion and we go back to the 1999-look urban virtual reality of the Matrix for more encounters with artificially intelligent baddies and--the real reason you're watching\u2014there are a lot more martial arts superheroics. This is just part one of a story that spans two sequels, with the final film of the trilogy, The Matrix Revolutions<\/i>, required to tie up the story and sort out a great deal of plot complexity."
+      }
+    ],
+    "customerreviews_iframe": "https:\/\/www.amazon.co.uk\/reviews\/iframe?akid=AKIAIA4L2B7M4QP56BXQ&alinkCode=xm2&asin=B001CEE1YE&atag=experevi-21&exp=2017-10-31T11%3A05%3A27Z&v=2&sig=9KuDmCgozQN97u054FQlOA%252B80lGyM5BDtLWCYU1J5po%253D"
+  }
+]
diff --git a/tests/amazon_test.module b/tests/amazon_test.module
index b6de6c3..0ae4a4f 100644
--- a/tests/amazon_test.module
+++ b/tests/amazon_test.module
@@ -10,8 +10,9 @@
  */
 function amazon_test_install() {
   // Pre-populate the db.
-  $item = amazon_test_get_amazon_item();
-  amazon_item_insert($item);
+  $items = amazon_test_get_amazon_items();
+  amazon_item_insert($items[0]);
+  amazon_item_insert($items[1]);
 }
 
 /**
@@ -32,7 +33,7 @@ function amazon_test_menu() {
  */
 function amazon_test_templates_page_callback() {
   $markup = '';
-  $item = amazon_test_get_amazon_item();
+  $item = amazon_test_get_amazon_items()[0];
   $styles = array_keys(amazon_theme());
   foreach ($styles as $style) {
     $markup .= $style . theme('amazon_item', array(
@@ -47,7 +48,7 @@ function amazon_test_templates_page_callback() {
 /**
  * Provides an Amazon item for testing.
  */
-function amazon_test_get_amazon_item() {
+function amazon_test_get_amazon_items() {
   $source = drupal_get_path('module', 'amazon_test') . '/amazon_test.json';
   $json = file_get_contents($source);
 
