diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Entity/Feed.php b/core/modules/aggregator/lib/Drupal/aggregator/Entity/Feed.php
index 1a6bcdf..8ae4a9a 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Entity/Feed.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Entity/Feed.php
@@ -134,7 +134,12 @@ public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
 
     $fields['title'] = FieldDefinition::create('string')
       ->setLabel(t('Title'))
-      ->setDescription(t('The title of the feed.'));
+      ->setDescription(t('The title of the feed.'))
+      ->setDisplayOptions('form', array(
+        'type' => 'string',
+        'weight' => -5,
+      ))
+      ->setDisplayConfigurable('form', TRUE);
 
     $fields['langcode'] = FieldDefinition::create('language')
       ->setLabel(t('Language code'))
@@ -164,7 +169,12 @@ public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
 
     $fields['description'] = FieldDefinition::create('string')
       ->setLabel(t('Description'))
-      ->setDescription(t("The parent website's description that comes from the !description element in the feed.", array('!description' => '<description>')));
+      ->setDescription(t("The parent website's description that comes from the !description element in the feed.", array('!description' => '<description>')))
+      ->setDisplayOptions('form', array(
+        'type' => 'text_textfield',
+        'weight' => 0,
+      ))
+      ->setDisplayConfigurable('form', TRUE);
 
     $fields['image'] = FieldDefinition::create('uri')
       ->setLabel(t('Image'))
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/FeedFormController.php b/core/modules/aggregator/lib/Drupal/aggregator/FeedFormController.php
index 2edb0f0..e5dddf2 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/FeedFormController.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/FeedFormController.php
@@ -27,15 +27,6 @@ public function form(array $form, array &$form_state) {
     $period = array_map('format_interval', array_combine($intervals, $intervals));
     $period[AGGREGATOR_CLEAR_NEVER] = $this->t('Never');
 
-    $form['title'] = array(
-      '#type' => 'textfield',
-      '#title' => $this->t('Title'),
-      '#default_value' => $feed->label(),
-      '#maxlength' => 255,
-      '#description' => $this->t('The name of the feed (or the name of the website providing the feed).'),
-      '#required' => TRUE,
-    );
-
     $form['langcode'] = array(
       '#title' => $this->t('Language'),
       '#type' => 'language_select',
diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockFormController.php b/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockFormController.php
index 4ad8ba9..4315b56 100644
--- a/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockFormController.php
+++ b/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockFormController.php
@@ -96,16 +96,6 @@ public function form(array $form, array &$form_state) {
     // names.
     $form['#attributes']['class'][0] = drupal_html_class('block-' . $block->bundle() . '-form');
 
-    // Basic block information.
-    $form['info'] = array(
-      '#type' => 'textfield',
-      '#title' => $this->t('Block description'),
-      '#required' => TRUE,
-      '#default_value' => $block->label(),
-      '#weight' => -5,
-      '#description' => $this->t('A brief description of your block. Used on the <a href="@overview">Blocks administration page</a>.', array('@overview' => $this->url('block.admin_display'))),
-    );
-
     if ($this->moduleHandler->moduleExists('language')) {
       $language_configuration = language_get_default_configuration('custom_block', $block->bundle());
 
diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/Entity/CustomBlock.php b/core/modules/block/custom_block/lib/Drupal/custom_block/Entity/CustomBlock.php
index 008774f..48e3ec9 100644
--- a/core/modules/block/custom_block/lib/Drupal/custom_block/Entity/CustomBlock.php
+++ b/core/modules/block/custom_block/lib/Drupal/custom_block/Entity/CustomBlock.php
@@ -185,8 +185,18 @@ public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
       ->setDescription(t('The custom block language code.'));
 
     $fields['info'] = FieldDefinition::create('string')
-      ->setLabel(t('Subject'))
-      ->setDescription(t('The custom block name.'));
+      ->setLabel(t('Block description'))
+      ->setDescription(t('A brief description of your block.'))
+      ->setDisplayOptions('view', array(
+        'label' => 'hidden',
+        'type' => 'string',
+        'weight' => -5,
+      ))
+      ->setDisplayOptions('form', array(
+        'type' => 'string',
+        'weight' => -5,
+      ))
+      ->setDisplayConfigurable('form', TRUE);
 
     $fields['type'] = FieldDefinition::create('entity_reference')
       ->setLabel(t('Block type'))
diff --git a/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverviewBase.php b/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverviewBase.php
index c9ce1be..85484af 100644
--- a/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverviewBase.php
+++ b/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverviewBase.php
@@ -300,6 +300,7 @@ protected function buildFieldRow(FieldDefinitionInterface $field_definition, Ent
 
     );
 
+    debug($display_options, $field_name);
     $field_row['plugin'] = array(
       'type' => array(
         '#type' => 'select',
diff --git a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTest.php b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTest.php
index d55bb8d..215f8ff 100644
--- a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTest.php
+++ b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTest.php
@@ -128,7 +128,17 @@ public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
       ->setLabel(t('Name'))
       ->setDescription(t('The name of the test entity.'))
       ->setTranslatable(TRUE)
-      ->setSetting('max_length', 32);
+      ->setSetting('max_length', 32)
+      ->setDisplayOptions('view', array(
+        'label' => 'hidden',
+        'type' => 'string',
+        'weight' => -5,
+      ))
+      ->setDisplayOptions('form', array(
+        'type' => 'string',
+        'weight' => -5,
+      ))
+      ->setDisplayConfigurable('form', TRUE);
 
     // @todo: Add allowed values validation.
     $fields['type'] = FieldDefinition::create('string')
diff --git a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/EntityTestFormController.php b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/EntityTestFormController.php
index 749ee44..b0de546 100644
--- a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/EntityTestFormController.php
+++ b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/EntityTestFormController.php
@@ -21,16 +21,6 @@ public function form(array $form, array &$form_state) {
     $form = parent::form($form, $form_state);
     $entity = $this->entity;
 
-    $form['name'] = array(
-      '#type' => 'textfield',
-      '#title' => t('Name'),
-      '#default_value' => $entity->name->value,
-      '#size' => 60,
-      '#maxlength' => 128,
-      '#required' => TRUE,
-      '#weight' => -10,
-    );
-
     $form['user_id'] = array(
       '#type' => 'textfield',
       '#title' => 'UID',
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Entity/Term.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Entity/Term.php
index 5a7e6fd..8aeb31b 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Entity/Term.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Entity/Term.php
@@ -222,12 +222,32 @@ public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
       ->setLabel(t('Name'))
       ->setDescription(t('The term name.'))
       ->setRequired(TRUE)
-      ->setSetting('max_length', 255);
+      ->setSetting('max_length', 255)
+      ->setDisplayOptions('view', array(
+        'label' => 'hidden',
+        'type' => 'string',
+        'weight' => -5,
+      ))
+      ->setDisplayOptions('form', array(
+        'type' => 'string',
+        'weight' => -5,
+      ))
+      ->setDisplayConfigurable('form', TRUE);
 
     $fields['description'] = FieldDefinition::create('text_long')
       ->setLabel(t('Description'))
       ->setDescription(t('A description of the term.'))
-      ->setSetting('text_processing', 1);
+      ->setSetting('text_processing', 1)
+      ->setDisplayOptions('view', array(
+        'label' => 'hidden',
+        'type' => 'text_default',
+        'weight' => 0,
+      ))
+      ->setDisplayOptions('form', array(
+        'type' => 'text_textfield',
+        'weight' => 0,
+      ))
+      ->setDisplayConfigurable('form', TRUE);
 
     $fields['weight'] = FieldDefinition::create('integer')
       ->setLabel(t('Weight'))
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/TermFormController.php b/core/modules/taxonomy/lib/Drupal/taxonomy/TermFormController.php
index 52ef2a8..94cd8fd 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/TermFormController.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/TermFormController.php
@@ -61,22 +61,6 @@ public function form(array $form, array &$form_state) {
     $form_state['taxonomy']['parent'] = $parent;
     $form_state['taxonomy']['vocabulary'] = $vocabulary;
 
-    $form['name'] = array(
-      '#type' => 'textfield',
-      '#title' => $this->t('Name'),
-      '#default_value' => $term->name->value,
-      '#maxlength' => 255,
-      '#required' => TRUE,
-      '#weight' => -5,
-    );
-
-    $form['description'] = array(
-      '#type' => 'text_format',
-      '#title' => $this->t('Description'),
-      '#default_value' => $term->description->value,
-      '#format' => $term->description->format,
-      '#weight' => 0,
-    );
     $language_configuration = $this->moduleHandler->moduleExists('language') ? language_get_default_configuration('taxonomy_term', $vocabulary->id()) : FALSE;
     $form['langcode'] = array(
       '#type' => 'language_select',
@@ -136,16 +120,6 @@ public function form(array $form, array &$form_state) {
       '#required' => TRUE,
     );
 
-    $form['vid'] = array(
-      '#type' => 'value',
-      '#value' => $vocabulary->id(),
-    );
-
-    $form['tid'] = array(
-      '#type' => 'value',
-      '#value' => $term->id(),
-    );
-
     if ($term->isNew()) {
       $form_state['redirect'] = current_path();
     }
@@ -174,12 +148,6 @@ public function buildEntity(array $form, array &$form_state) {
     // Prevent leading and trailing spaces in term names.
     $term->name->value = trim($term->name->value);
 
-    // Convert text_format field into values expected by
-    // \Drupal\Core\Entity\Entity::save() method.
-    $description = $form_state['values']['description'];
-    $term->description->value = $description['value'];
-    $term->description->format = $description['format'];
-
     // Assign parents with proper delta values starting from 0.
     $term->parent = array_keys($form_state['values']['parent']);
 
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/TermViewBuilder.php b/core/modules/taxonomy/lib/Drupal/taxonomy/TermViewBuilder.php
index 1eb21f0..a1d72f9 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/TermViewBuilder.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/TermViewBuilder.php
@@ -19,27 +19,6 @@ class TermViewBuilder extends EntityViewBuilder {
   /**
    * {@inheritdoc}
    */
-  public function buildContent(array $entities, array $displays, $view_mode, $langcode = NULL) {
-    parent::buildContent($entities, $displays, $view_mode, $langcode);
-
-    foreach ($entities as $entity) {
-      // Add the description if enabled.
-      // @todo Remove this when base fields are able to use formatters.
-      // https://drupal.org/node/2144919
-      $display = $displays[$entity->bundle()];
-      if (!empty($entity->description->value) && $display->getComponent('description')) {
-        $entity->content['description'] = array(
-          '#markup' => $entity->description->processed,
-          '#prefix' => '<div class="taxonomy-term-description">',
-          '#suffix' => '</div>',
-        );
-      }
-    }
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   protected function alterBuild(array &$build, EntityInterface $entity, EntityViewDisplayInterface $display, $view_mode, $langcode = NULL) {
     parent::alterBuild($build, $entity, $display, $view_mode, $langcode);
     $build['#attached']['css'][] = drupal_get_path('module', 'taxonomy') . '/css/taxonomy.module.css';
diff --git a/core/modules/taxonomy/taxonomy.module b/core/modules/taxonomy/taxonomy.module
index d9147c0..dd253d5 100644
--- a/core/modules/taxonomy/taxonomy.module
+++ b/core/modules/taxonomy/taxonomy.module
@@ -134,38 +134,6 @@ function taxonomy_term_uri($term) {
 }
 
 /**
- * Implements hook_field_extra_fields().
- */
-function taxonomy_field_extra_fields() {
-  $return = array();
-  foreach (entity_get_bundles('taxonomy_term') as $bundle => $bundle_info) {
-    $return['taxonomy_term'][$bundle] = array(
-      'form' => array(
-        'name' => array(
-          'label' => t('Name'),
-          'description' => t('Term name textfield'),
-          'weight' => -5,
-        ),
-        'description' => array(
-          'label' => t('Description'),
-          'description' => t('Term description textarea'),
-          'weight' => 0,
-        ),
-      ),
-      'display' => array(
-        'description' => array(
-          'label' => t('Description'),
-          'description' => t('Term description'),
-          'weight' => 0,
-        ),
-      ),
-    );
-  }
-
-  return $return;
-}
-
-/**
  * Return nodes attached to a term across all field instances.
  *
  * This function requires taxonomy module to be maintaining its own tables,
@@ -376,8 +344,8 @@ function template_preprocess_taxonomy_term(&$variables) {
   $term = $variables['term'];
 
   $variables['url'] = $term->url();
-  // We use name here because that is what appears in the UI.
-  $variables['name'] = check_plain($term->label());
+  $variables['label'] = $variables['elements']['name'];
+  unset($variables['elements']['name']);
   $variables['page'] = $variables['view_mode'] == 'full' && taxonomy_term_is_page($term);
 
   // Helpful $content variable for templates.
