diff --git a/src/Plugin/Field/FieldWidget/InlineEntityFormMultiple.php b/src/Plugin/Field/FieldWidget/InlineEntityFormMultiple.php
index b30c64c..a955a73 100644
--- a/src/Plugin/Field/FieldWidget/InlineEntityFormMultiple.php
+++ b/src/Plugin/Field/FieldWidget/InlineEntityFormMultiple.php
@@ -9,13 +9,9 @@ namespace Drupal\inline_entity_form\Plugin\Field\FieldWidget;
 
 use Drupal\Component\Utility\NestedArray;
 use Drupal\Component\Utility\SortArray;
-use Drupal\Core\Entity\EntityManagerInterface;
-use Drupal\Core\Field\FieldDefinitionInterface;
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Field\WidgetBase;
 use Drupal\Core\Form\FormStateInterface;
-use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
-use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
  * Multiple value widget.
@@ -29,173 +25,7 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
  *   multiple_values = true
  * )
  */
-class InlineEntityFormMultiple extends WidgetBase implements ContainerFactoryPluginInterface {
-
-  /**
-   * The entity manager.
-   *
-   * @var \Drupal\Core\Entity\EntityManagerInterface
-   */
-  protected $entityManager;
-
-  /**
-   * The inline entity from handler.
-   *
-   * @var \Drupal\inline_entity_form\InlineEntityFormHandlerInterface
-   */
-  protected $iefHandler;
-
-  /**
-   * The inline entity form id.
-   *
-   * @var string
-   */
-  protected $iefId;
-
-  public function __construct($plugin_id, $plugin_definition, FieldDefinitionInterface $field_definition, array $settings, array $third_party_settings, EntityManagerInterface $entity_manager) {
-    parent::__construct($plugin_id, $plugin_definition, $field_definition, $settings, $third_party_settings);
-    $this->entityManager = $entity_manager;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
-    return new static(
-      $plugin_id,
-      $plugin_definition,
-      $configuration['field_definition'],
-      $configuration['settings'],
-      $configuration['third_party_settings'],
-      $container->get('entity.manager')
-    );
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function __sleep() {
-    $keys = array_diff(parent::__sleep(), array('iefHandler'));
-    return $keys;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function __wakeup() {
-    parent::__wakeup();
-    $this->initializeIefController();
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public static function defaultSettings() {
-    return array(
-      "allow_existing" => FALSE,
-      "match_operator" => "CONTAINS",
-      "delete_references" => FALSE,
-      "override_labels" => FALSE,
-      "label_singular" => "",
-      "label_plural" => "",
-    );
-  }
-
-  /**
-   * Returns the settings form for the current entity type.
-   *
-   * The settings form is embedded into the IEF widget settings form.
-   * Settings are later injected into the controller through $this->settings.
-   *
-   * @param $field
-   *   The definition of the reference field used by IEF.
-   * @param $instance
-   *   The definition of the reference field instance.
-   */
-  public function settingsForm(array $form, FormStateInterface $form_state) {
-    $labels = $this->labels();
-    $states_prefix = 'instance[widget][settings][type_settings]';
-
-    $element['allow_existing'] = array(
-      '#type' => 'checkbox',
-      '#title' => t('Allow users to add existing @label.', array('@label' => $labels['plural'])),
-      '#default_value' => $this->settings['allow_existing'],
-    );
-    $element['match_operator'] = array(
-      '#type' => 'select',
-      '#title' => t('Autocomplete matching'),
-      '#default_value' => $this->settings['match_operator'],
-      '#options' => array(
-        'STARTS_WITH' => t('Starts with'),
-        'CONTAINS' => t('Contains'),
-      ),
-      '#description' => t('Select the method used to collect autocomplete suggestions. Note that <em>Contains</em> can cause performance issues on sites with thousands of nodes.'),
-      '#states' => array(
-        'visible' => array(
-          ':input[name="' . $states_prefix . '[allow_existing]"]' => array('checked' => TRUE),
-        ),
-      ),
-    );
-    // The single widget doesn't offer autocomplete functionality.
-    if ($form_state->get(['widget', 'type']) == 'inline_entity_form_single') {
-      $form['allow_existing']['#access'] = FALSE;
-      $form['match_operator']['#access'] = FALSE;
-    }
-
-    $element['delete_references'] = array(
-      '#type' => 'checkbox',
-      '#title' => t('Delete referenced @label when the parent entity is deleted.', array('@label' => $labels['plural'])),
-      '#default_value' => $this->settings['delete_references'],
-    );
-
-    $element['override_labels'] = array(
-      '#type' => 'checkbox',
-      '#title' => t('Override labels'),
-      '#default_value' => $this->settings['override_labels'],
-    );
-    $element['label_singular'] = array(
-      '#type' => 'textfield',
-      '#title' => t('Singular label'),
-      '#default_value' => $this->settings['label_singular'],
-      '#states' => array(
-        'visible' => array(
-          ':input[name="' . $states_prefix . '[override_labels]"]' => array('checked' => TRUE),
-        ),
-      ),
-    );
-    $element['label_plural'] = array(
-      '#type' => 'textfield',
-      '#title' => t('Plural label'),
-      '#default_value' => $this->settings['label_plural'],
-      '#states' => array(
-        'visible' => array(
-          ':input[name="' . $states_prefix . '[override_labels]"]' => array('checked' => TRUE),
-        ),
-      ),
-    );
-
-    return $element;
-  }
-
-  /**
-   * @param mixed $iefId
-   */
-  public function setIefId($iefId) {
-    $this->iefId = $iefId;
-  }
-
-  /**
-   * @return mixed
-   */
-  public function getIefId() {
-    return $this->iefId;
-  }
-
-  function initializeIefController() {
-    if (!isset($this->iefHandler)) {
-      $this->iefHandler = inline_entity_form_get_controller($this->fieldDefinition);
-    }
-  }
+class InlineEntityFormMultiple extends InlineEntityFormSingle {
 
   /**
    * {@inheritdoc}
@@ -590,7 +420,6 @@ class InlineEntityFormMultiple extends WidgetBase implements ContainerFactoryPlu
         }
       }
       elseif ($form_state->get(['inline_entity_form', $this->getIefId(), 'form']) == 'ief_add_existing') {
-        // TODO - autocomplete seems to be broken and needs to be fixed.
         $element['form'] = array(
           '#type' => 'fieldset',
           '#attributes' => array('class' => array('ief-form', 'ief-form-bottom')),
@@ -950,33 +779,6 @@ class InlineEntityFormMultiple extends WidgetBase implements ContainerFactoryPlu
   }
 
   /**
-   * Returns an array of entity type labels (singular, plural) fit to be
-   * included in the UI text.
-   *
-   * @TODO - This could be shared with InlineEntityFormSingle. Let's see if we
-   * base one of the widgets out of the other one. We could use a trait if that
-   * won't be possible.
-   *
-   * @return array
-   *   Array containing two values:
-   *     - singular: label for singular form,
-   *     - plural: label for plural form.
-   */
-  protected function labels() {
-    // The admin has specified the exact labels that should be used.
-    if ($this->settings['override_labels']) {
-      return [
-        'singular' => $this->settings['label_singular'],
-        'plural' => $this->settings['label_plural'],
-      ];
-    }
-    else {
-      $this->initializeIefController();
-      return $this->iefHandler->labels();
-    }
-  }
-
-  /**
    * Determines bundle to be used when creating entity.
    *
    * @param FormStateInterface $form_state
@@ -1040,4 +842,3 @@ class InlineEntityFormMultiple extends WidgetBase implements ContainerFactoryPlu
     }
   }
 }
-
diff --git a/src/Plugin/Field/FieldWidget/InlineEntityFormSingle.php b/src/Plugin/Field/FieldWidget/InlineEntityFormSingle.php
index 8b8887e..d21dfc9 100644
--- a/src/Plugin/Field/FieldWidget/InlineEntityFormSingle.php
+++ b/src/Plugin/Field/FieldWidget/InlineEntityFormSingle.php
@@ -7,9 +7,13 @@
 
 namespace Drupal\inline_entity_form\Plugin\Field\FieldWidget;
 
+use Symfony\Component\DependencyInjection\ContainerInterface;
+use Drupal\Core\Entity\EntityManagerInterface;
+use Drupal\Core\Field\FieldDefinitionInterface;
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Field\WidgetBase;
 use Drupal\Core\Form\FormStateInterface;
+use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
 
 /**
  * Single value widget.
@@ -31,7 +35,77 @@ use Drupal\Core\Form\FormStateInterface;
  *   multiple_values = false
  * )
  */
-class InlineEntityFormSingle extends WidgetBase {
+class InlineEntityFormSingle extends WidgetBase implements ContainerFactoryPluginInterface {
+
+  /**
+   * The inline entity from handler.
+   *
+   * @var \Drupal\inline_entity_form\InlineEntityFormHandlerInterface
+   */
+  protected $iefHandler;
+
+  /**
+   * The entity manager.
+   *
+   * @var \Drupal\Core\Entity\EntityManagerInterface
+   */
+  protected $entityManager;
+
+  /**
+   * The inline entity form id.
+   *
+   * @var string
+   */
+  protected $iefId;
+
+  public function __construct($plugin_id, $plugin_definition, FieldDefinitionInterface $field_definition, array $settings, array $third_party_settings, EntityManagerInterface $entity_manager) {
+    parent::__construct($plugin_id, $plugin_definition, $field_definition, $settings, $third_party_settings);
+    $this->entityManager = $entity_manager;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
+    return new static(
+      $plugin_id,
+      $plugin_definition,
+      $configuration['field_definition'],
+      $configuration['settings'],
+      $configuration['third_party_settings'],
+      $container->get('entity.manager')
+    );
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function __sleep() {
+    $keys = array_diff(parent::__sleep(), array('iefHandler'));
+    return $keys;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function __wakeup() {
+    parent::__wakeup();
+    $this->initializeIefController();
+  }
+
+  /**
+   * @param mixed $iefId
+   */
+  public function setIefId($iefId) {
+    $this->iefId = $iefId;
+  }
+
+  /**
+   * @return mixed
+   */
+  public function getIefId() {
+    return $this->iefId;
+  }
 
   /**
    * {@inheritdoc}
@@ -47,6 +121,38 @@ class InlineEntityFormSingle extends WidgetBase {
     );
   }
 
+  function initializeIefController() {
+    if (!isset($this->iefHandler)) {
+      $this->iefHandler = inline_entity_form_get_controller($this->fieldDefinition);
+    }
+  }
+
+  /**
+   * Returns an array of entity type labels (singular, plural) fit to be
+   * included in the UI text.
+   *
+   * base one of the widgets out of the other one. We could use a trait if that
+   * won't be possible.
+   *
+   * @return array
+   *   Array containing two values:
+   *     - singular: label for singular form,
+   *     - plural: label for plural form.
+   */
+  protected function labels() {
+    // The admin has specified the exact labels that should be used.
+    if ($this->settings['override_labels']) {
+      return [
+        'singular' => $this->settings['label_singular'],
+        'plural' => $this->settings['label_plural'],
+      ];
+    }
+    else {
+      $this->initializeIefController();
+      return $this->iefHandler->labels();
+    }
+  }
+
   /**
    * Returns the settings form for the current entity type.
    *
@@ -140,11 +246,15 @@ class InlineEntityFormSingle extends WidgetBase {
   public function settingsSummary() {
     $summary = array();
 
-    $summary[] = t('Example summary');
-    /*$placeholder = $this->getSetting('placeholder');
-    if (!empty($placeholder)) {
-      $summary[] = t('Placeholder: @placeholder', array('@placeholder' => $placeholder));
-    } */
+    $summary[] = t('Allow users to add existing entity: @allow_existing', array('@allow_existing' => ($this->getSetting('allow_existing')) ? t('Yes') : t('No')));
+    $summary[] = t('Autocomplete matching: @match_operator', array('@match_operator' => $this->getSetting('match_operator')));
+    $summary[] = t('Delete referenced entity when the parent entity is deleted: @delete_references', array('@delete_references' => ($this->getSetting('delete_references')) ? t('Yes') : t('No')));
+    $summary[] = t('Override labels: @override_labels', array('@override_labels' => ($this->getSetting('override_labels')) ? t('Yes') : t('No')));
+
+    if($this->getSetting('override_labels')){
+      $summary[] = t('Singular label: @label_singular', array('@label_singular' => $this->getSetting('label_singular')));
+      $summary[] = t('Plural label: @label_plural', array('@label_plural' => $this->getSetting('label_plural')));
+    }
 
     return $summary;
   }
