diff --git a/src/Plugin/Field/FieldType/DynamicEntityReferenceItem.php b/src/Plugin/Field/FieldType/DynamicEntityReferenceItem.php
index ae014e8..566bfe3 100644
--- a/src/Plugin/Field/FieldType/DynamicEntityReferenceItem.php
+++ b/src/Plugin/Field/FieldType/DynamicEntityReferenceItem.php
@@ -47,8 +47,11 @@ class DynamicEntityReferenceItem extends ConfigurableEntityReferenceItem {
    */
   public static function defaultFieldSettings() {
     return array(
-      'handler' => 'default',
-    ) + parent::defaultFieldSettings();
+      'node' => array(
+        'handler' => 'default',
+        'handler_settings' => array(),
+      )
+    );
   }
 
   /**
@@ -155,7 +158,28 @@ class DynamicEntityReferenceItem extends ConfigurableEntityReferenceItem {
    * {@inheritdoc}
    */
   public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
-    return array();
+
+    $settings_form = array();
+    $field = $form_state->get('field');
+    $labels = \Drupal::entityManager()->getEntityTypeLabels(TRUE);
+    $options = $labels['Content'];
+    $settings = $this->getSettings();
+
+    if ($settings['exclude_entity_types']) {
+      $entity_type_ids = array_diff_key($options, $settings['entity_type_ids'] ?: array());
+    }
+    else {
+      $entity_type_ids = array_intersect_key($options, $settings['entity_type_ids'] ?: array());
+    }
+    foreach (array_keys($entity_type_ids) as $entity_type_id) {
+      // We put the dummy value here so selection plugins can work.
+      $field->settings['target_type'] = $entity_type_id;
+      $field->settings['handler'] = $settings[$entity_type_id]['handler'];
+      $field->settings['handler_settings'] = $settings[$entity_type_id]['handler_settings'];
+      $settings_form[$entity_type_id] = parent::fieldSettingsForm($form, $form_state);
+      $settings_form[$entity_type_id]['handler']['#title'] = t('Reference type for @entity_type_id', array('@entity_type_id' => $entity_type_ids[$entity_type_id]));
+    }
+    return $settings_form;
   }
 
   /**
@@ -169,7 +193,10 @@ class DynamicEntityReferenceItem extends ConfigurableEntityReferenceItem {
    */
   public static function fieldSettingsFormValidate(array $form, FormStateInterface $form_state) {
     if ($form_state->hasValue('field')) {
-      $form_state->unsetValue(array('field', 'settings', 'handler_submit'));
+      $settings = $form_state->getValue(array('field', 'settings'));
+      foreach (array_keys($settings) as $entity_typ_id) {
+        $form_state->unsetValue(array('field', 'settings', $entity_typ_id, 'handler_submit'));
+      }
       $form_state->get('field')->settings = $form_state->getValue(array('field', 'settings'));
     }
   }
