diff --git a/acdx_entityreference/acdx_entityreference.module b/acdx_entityreference/acdx_entityreference.module
index 46fac99..f0ab750 100644
--- a/acdx_entityreference/acdx_entityreference.module
+++ b/acdx_entityreference/acdx_entityreference.module
@@ -18,6 +18,18 @@ function acdx_entityreference_field_widget_info() {
       'path' => '',
     ),
   );
+  $widgets['entityreference_autocomplete_deluxe_tags'] = array(
+    'label' => t('Autocomplete Deluxe (tags)'),
+    'description' => t('An autocomplete text field with deluxe tagging behavior.'),
+    'field types' => array('entityreference'),
+    'settings' => array(
+      'match_operator' => 'CONTAINS',
+      'size' => 60,
+    ),
+    'behaviors' => array(
+      'multiple values' => FIELD_BEHAVIOR_CUSTOM,
+    ),
+  );
 
   return $widgets;
 }
@@ -40,7 +52,7 @@ function acdx_entityreference_field_widget_settings_form($field, $instance) {
 
   $form = array();
 
-  if ($widget['type'] == 'entityreference_autocomplete_deluxe') {
+  if (in_array($widget['type'], array('entityreference_autocomplete_deluxe', 'entityreference_autocomplete_deluxe_tags'))) {
     $form['match_operator'] = array(
       '#type' => 'select',
       '#title' => t('Autocomplete matching'),
@@ -69,37 +81,44 @@ function acdx_entityreference_field_widget_settings_form($field, $instance) {
  */
 function acdx_entityreference_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
   $handler = entityreference_get_handler($field);
-  if ($instance['widget']['type'] == 'entityreference_autocomplete_deluxe') {
-    // We let the Field API handles multiple values for us, only take
-    // care of the one matching our delta.
-    if (isset($items[$delta])) {
-      $items = array($items[$delta]);
-    }
-    else {
-      $items = array();
-    }
-    
-    $entity_ids = array();
-    $entity_labels = array();
+  switch ($instance['widget']['type']) {
+    case 'entityreference_autocomplete_deluxe':
+    case 'entityreference_autocomplete_deluxe_tags':
+      if ($instance['widget']['type'] == 'entityreference_autocomplete_deluxe') {
+        // We let the Field API handles multiple values for us, only take
+        // care of the one matching our delta.
+        if (isset($items[$delta])) {
+          $items = array($items[$delta]);
+        }
+        else {
+          $items = array();
+        }
+      }
+      elseif ($instance['widget']['type'] == 'entityreference_autocomplete_deluxe_tags') {
+        $element['#element_validate'] = array('_acdx_entityreference_autocomplete_tags_validate');
+        $element['#multiple'] = TRUE;
+      }
 
-    // Build an array of entities ID.
-    foreach ($items as $item) {
-      $entity_ids[] = $item['target_id'];
-    }
+      $entity_ids = array();
+      $entity_labels = array();
 
-    // Load those entities and loop through them to extract their labels.
-    $entities = entity_load($field['settings']['target_type'], $entity_ids);
+      // Build an array of entities ID.
+      foreach ($items as $item) {
+        $entity_ids[] = $item['target_id'];
+      }
+
+      // Load those entities and loop through them to extract their labels.
+      $entities = entity_load($field['settings']['target_type'], $entity_ids);
 
-    foreach ($entities as $entity_id => $entity) {
-      $label = $handler->getLabel($entity);
-      $key = "$label ($entity_id)";
-      // Labels containing commas or quotes must be wrapped in quotes.
-      if (strpos($key, ',') !== FALSE || strpos($key, '"') !== FALSE) {
-        $key = '"' . str_replace('"', '""', $key) . '"';
+      foreach ($entities as $entity_id => $entity) {
+        $label = $handler->getLabel($entity);
+        $key = "$label ($entity_id)";
+        // Labels containing commas or quotes must be wrapped in quotes.
+        if (strpos($key, ',') !== FALSE || strpos($key, '"') !== FALSE) {
+          $key = '"' . str_replace('"', '""', $key) . '"';
+        }
+        $entity_labels[] = $key;
       }
-      $entity_labels[] = $key;
-    }
-    if ($instance['widget']['type'] == 'entityreference_autocomplete_deluxe') {
       $path = !empty($instance['widget']['settings']['path']) ? $instance['widget']['settings']['path'] : 'entityreference/autocomplete/single';
       $element += array(
         '#type' => 'autocomplete_deluxe',
@@ -108,9 +127,12 @@ function acdx_entityreference_field_widget_form(&$form, &$form_state, $field, $i
         '#autocomplete_deluxe_path' => url($path . '/' . $field['field_name'] . '/' . $instance['entity_type'] . '/' . $instance['bundle'], array('absolute' => TRUE)),
         '#size' => $instance['widget']['settings']['size'],
         '#element_validate' => array('_entityreference_autocomplete_validate'),
+        '#autocomplete_min_length' => 1,
       );
-      return array('target_id' => $element);
-    }
+      if ($instance['widget']['type'] == 'entityreference_autocomplete_deluxe') {
+        return array('target_id' => $element);
+      }
+      return $element;
   }
 }
 
@@ -125,4 +147,16 @@ function _acdx_entityreference_autocomplete_validate($element, &$form_state, $fo
   }
   // Update the value of this element so the field can validate the product IDs.
   form_set_value($element, $value, $form_state);
-}
\ No newline at end of file
+}
+
+function _acdx_entityreference_autocomplete_tags_validate($element, &$form_state, $form) {
+  $value = array();
+  if (preg_match_all('/"(?:""|[^"])*"|[^",]+/', $element['value_field']['#value'], $matches)) {
+    foreach ($matches[0] as $match) {
+      if (preg_match('/\((\d+)\)"?$/', $match, $id_matches)) {
+        $value[]['target_id'] = $id_matches[1];
+      }
+    }
+  }
+  form_set_value($element, $value, $form_state);
+}
