diff --git a/src/Plugin/Field/FieldType/DynamicEntityReferenceItem.php b/src/Plugin/Field/FieldType/DynamicEntityReferenceItem.php
index a1792ad..c7a4f5c 100644
--- a/src/Plugin/Field/FieldType/DynamicEntityReferenceItem.php
+++ b/src/Plugin/Field/FieldType/DynamicEntityReferenceItem.php
@@ -150,8 +150,7 @@ class DynamicEntityReferenceItem extends ConfigurableEntityReferenceItem {
     $field_definition = $this->getFieldDefinition();
     $options = array();
     $settings = $this->getSettings();
-    $target_types = static::getTargetTypes($settings);
-    foreach (array_keys($target_types) as $target_type) {
+    foreach (static::getTargetTypes($settings) as $target_type) {
       $options[$target_type] = \Drupal::service('plugin.manager.dynamic_entity_reference_selection')->getSelectionHandler($field_definition, $this->getEntity(), $target_type)->getReferenceableEntities();
     }
     if (empty($options)) {
@@ -204,12 +203,11 @@ class DynamicEntityReferenceItem extends ConfigurableEntityReferenceItem {
   public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
 
     $settings_form = array();
-    $field = $form_state->getFormObject()->getEntity();
     $settings = $this->getSettings();
-    $target_types = static::getTargetTypes($settings);
-    foreach (array_keys($target_types) as $target_type) {
+    foreach (static::getTargetTypes($settings) as $target_type) {
+      $entity_type = \Drupal::entityManager()->getDefinition($target_type);
       $settings_form[$target_type] = $this->targetTypeFieldSettingsForm($form, $form_state, $target_type);
-      $settings_form[$target_type]['handler']['#title'] = t('Reference type for @target_type', array('@target_type' => $target_types[$target_type]));
+      $settings_form[$target_type]['handler']['#title'] = t('Reference type for @target_type', ['@target_type' => $entity_type->getLabel()]);
     }
     return $settings_form;
   }
@@ -415,8 +413,7 @@ class DynamicEntityReferenceItem extends ConfigurableEntityReferenceItem {
     /** @var \Drupal\dynamic_entity_reference\SelectionPluginManager $manager */
     $manager = \Drupal::service('plugin.manager.dynamic_entity_reference_selection');
     $settings = $field_definition->getSettings();
-    $target_types = static::getTargetTypes($settings);
-    foreach (array_keys($target_types) as $target_type) {
+    foreach (static::getTargetTypes($settings) as $target_type) {
       $values['target_type'] = $target_type;
       if ($referenceable = $manager->getSelectionHandler($field_definition, NULL, $target_type)->getReferenceableEntities()) {
         $group = array_rand($referenceable);
@@ -461,15 +458,14 @@ class DynamicEntityReferenceItem extends ConfigurableEntityReferenceItem {
    */
   public static function getTargetTypes($settings) {
     $labels = \Drupal::entityManager()->getEntityTypeLabels(TRUE);
-    $options = $labels['Content'];
+    $options = array_keys($labels['Content']);
 
-    if ($settings['exclude_entity_types']) {
-      $target_types = array_diff_key($options, $settings['entity_type_ids'] ?: array());
+    if (!empty($settings['exclude_entity_types'])) {
+      return array_diff($options, $settings['entity_type_ids'] ?: []);
     }
     else {
-      $target_types = array_intersect_key($options, $settings['entity_type_ids'] ?: array());
+      return array_intersect($options, $settings['entity_type_ids'] ?: []);
     }
-    return $target_types;
   }
 
 }
diff --git a/src/Plugin/Field/FieldWidget/DynamicEntityReferenceWidget.php b/src/Plugin/Field/FieldWidget/DynamicEntityReferenceWidget.php
index 1fd79ba..2e2dd00 100644
--- a/src/Plugin/Field/FieldWidget/DynamicEntityReferenceWidget.php
+++ b/src/Plugin/Field/FieldWidget/DynamicEntityReferenceWidget.php
@@ -50,9 +50,10 @@ class DynamicEntityReferenceWidget extends EntityReferenceAutocompleteWidget {
     $referenced_entities = $items->referencedEntities();
 
     $settings = $this->getFieldSettings();
+    $labels = \Drupal::entityManager()->getEntityTypeLabels();
     $available = DynamicEntityReferenceItem::getTargetTypes($settings);
     $cardinality = $items->getFieldDefinition()->getFieldStorageDefinition()->getCardinality();
-    $target_type = $items->get($delta)->target_type ?: key($available);
+    $target_type = $items->get($delta)->target_type ?: reset($available);
 
     $element += array(
       '#type' => 'entity_autocomplete',
@@ -84,7 +85,7 @@ class DynamicEntityReferenceWidget extends EntityReferenceAutocompleteWidget {
 
     $entity_type = array(
       '#type' => 'select',
-      '#options' => $available,
+      '#options' => array_intersect_key($labels, array_combine($available, $available)),
       '#title' => $this->t('Entity type'),
       '#default_value' => $target_type,
       '#weight' => -50,
@@ -106,7 +107,7 @@ class DynamicEntityReferenceWidget extends EntityReferenceAutocompleteWidget {
         ),
         'drupalSettings' => array(
           'dynamic_entity_reference' => array(
-            "{$items->getName()}[$delta][target_type]" => $this->createAutoCompletePaths(array_keys($available)),
+            "{$items->getName()}[$delta][target_type]" => $this->createAutoCompletePaths($available),
           ),
         ),
       ),
diff --git a/src/Plugin/Validation/Constraint/ValidDynamicReferenceConstraintValidator.php b/src/Plugin/Validation/Constraint/ValidDynamicReferenceConstraintValidator.php
index e429fe8..78958f1 100644
--- a/src/Plugin/Validation/Constraint/ValidDynamicReferenceConstraintValidator.php
+++ b/src/Plugin/Validation/Constraint/ValidDynamicReferenceConstraintValidator.php
@@ -27,7 +27,7 @@ class ValidDynamicReferenceConstraintValidator extends ConstraintValidator {
     $id = $value->get('target_id')->getValue();
     $type = $value->get('target_type')->getValue();
     $types = DynamicEntityReferenceItem::getTargetTypes($value->getFieldDefinition()->getSettings());
-    $valid_type = !empty($type) && in_array($type, array_keys($types));
+    $valid_type = !empty($type) && in_array($type, $types);
     // '0' or NULL are considered valid empty references.
     if (empty($id) && $valid_type) {
       return;
