diff --git a/core/modules/email/email.info.yml b/core/modules/email/email.info.yml
deleted file mode 100644
index 7a9293e..0000000
--- a/core/modules/email/email.info.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-name: E-mail
-type: module
-description: 'Defines a field type for e-mail addresses.'
-package: Field types
-version: VERSION
-core: 8.x
-dependencies:
-  - field
diff --git a/core/modules/email/email.module b/core/modules/email/email.module
deleted file mode 100644
index f74da6f..0000000
--- a/core/modules/email/email.module
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-/**
- * @file
- * Defines a simple e-mail field type.
- */
-
-/**
- * Implements hook_help().
- */
-function email_help($path, $arg) {
-  switch ($path) {
-    case 'admin/help#email':
-      $output = '';
-      $output .= '<h3>' . t('About') . '</h3>';
-      $output .= '<p>' . t('The E-mail module allows you to create fields that contain e-mail addresses. See the <a href="@field">Field module help</a> and the <a href="@field_ui">Field UI help</a> pages for general information on fields and how to create and manage them. For more information, see the <a href="@email_documentation">online documentation for the E-mail module</a>.', array('@field' => url('admin/help/field'), '@field_ui' => url('admin/help/field_ui'), '@email_documentation' => 'https://drupal.org/documentation/modules/email')) . '</p>';
-      $output .= '<h3>' . t('Uses') . '</h3>';
-      $output .= '<dl>';
-      $output .= '<dt>' . t('Managing and displaying email fields') . '</dt>';
-      $output .= '<dd>' . t('The <em>settings</em> and the <em>display</em> of the email field can be configured separately. See the <a href="@field_ui">Field UI help</a> for more information on how to manage fields and their display.', array('@field_ui' => url('admin/help/field_ui'))) . '</dd>';
-      $output .= '<dt>' . t('Displaying e-mail addresses as links') . '</dt>';
-      $output .= '<dd>' . t('E-mail addresses can be displayed as <em>plain text</em> or as <em>links</em> by choosing the appropriate display format.') . '</dd>';
-      $output .= '<dt>' . t('Validating E-mail addresses') . '</dt>';
-      $output .= '<dd>' . t('E-mail addresses are validated when the content is saved.') . '</dd>';
-      $output .= '</dl>';
-      return $output;
-  }
-}
-
-/**
- * Implements hook_field_info_alter().
- */
-function email_field_info_alter(&$info) {
-  $info['email']['configurable'] = TRUE;
-  $info['email']['class'] = '\Drupal\email\ConfigurableEmailItem';
-  $info['email']['list_class'] = '\Drupal\Core\Field\ConfigFieldItemList';
-  $info['email']['default_widget'] = 'email_default';
-  if (\Drupal::moduleHandler()->moduleExists('text')) {
-    $info['email']['default_formatter'] = 'text_plain';
-  }
-  else {
-    $info['email']['default_formatter'] = 'email_mailto';
-  }
-  $info['email']['provider'] = 'email';
-}
-
-/**
- * Implements hook_field_formatter_info_alter().
- */
-function email_field_formatter_info_alter(&$info) {
-  if (isset($info['text_plain'])) {
-    $info['text_plain']['field_types'][] = 'email';
-  }
-}
diff --git a/core/modules/field/config/field.settings.yml b/core/modules/field/config/field.settings.yml
index b6172c1..bdfe7e6 100644
--- a/core/modules/field/config/field.settings.yml
+++ b/core/modules/field/config/field.settings.yml
@@ -1 +1,2 @@
+default_summary_length: 600
 purge_batch_size: 10
diff --git a/core/modules/email/config/schema/email.schema.yml b/core/modules/field/config/schema/field.email.schema.yml
similarity index 100%
rename from core/modules/email/config/schema/email.schema.yml
rename to core/modules/field/config/schema/field.email.schema.yml
diff --git a/core/modules/link/config/schema/link.schema.yml b/core/modules/field/config/schema/field.link.schema.yml
similarity index 100%
rename from core/modules/link/config/schema/link.schema.yml
rename to core/modules/field/config/schema/field.link.schema.yml
diff --git a/core/modules/number/config/schema/number.schema.yml b/core/modules/field/config/schema/field.number.schema.yml
similarity index 100%
rename from core/modules/number/config/schema/number.schema.yml
rename to core/modules/field/config/schema/field.number.schema.yml
diff --git a/core/modules/field/config/schema/field.schema.yml b/core/modules/field/config/schema/field.schema.yml
index 66a1444..7da538d 100644
--- a/core/modules/field/config/schema/field.schema.yml
+++ b/core/modules/field/config/schema/field.schema.yml
@@ -4,6 +4,9 @@ field.settings:
   type: mapping
   label: 'Field settings'
   mapping:
+    default_summary_length:
+      type: integer
+      label: 'Default summary length'
     purge_batch_size:
       type: integer
       label: 'Maximum number of field data records to purge'
diff --git a/core/modules/telephone/config/schema/telephone.schema.yml b/core/modules/field/config/schema/field.telephone.schema.yml
similarity index 100%
rename from core/modules/telephone/config/schema/telephone.schema.yml
rename to core/modules/field/config/schema/field.telephone.schema.yml
diff --git a/core/modules/text/config/schema/text.schema.yml b/core/modules/field/config/schema/field.text.schema.yml
similarity index 96%
rename from core/modules/text/config/schema/text.schema.yml
rename to core/modules/field/config/schema/field.text.schema.yml
index d377366..dfda050 100644
--- a/core/modules/text/config/schema/text.schema.yml
+++ b/core/modules/field/config/schema/field.text.schema.yml
@@ -1,13 +1,5 @@
 # Schema for the configuration files of the text module.
 
-text.settings:
-  type: mapping
-  label: 'Text settings'
-  mapping:
-    default_summary_length:
-      type: integer
-      label: 'Default summary length'
-
 field.text.settings:
   type: mapping
   label: 'Text settings'
diff --git a/core/modules/field/field.info.yml b/core/modules/field/field.info.yml
index f30ba86..4b31099 100644
--- a/core/modules/field/field.info.yml
+++ b/core/modules/field/field.info.yml
@@ -5,3 +5,5 @@ package: Core
 version: VERSION
 core: 8.x
 required: true
+dependencies:
+  - filter
diff --git a/core/modules/field/field.module b/core/modules/field/field.module
index 6bd2c6d..5430b20 100644
--- a/core/modules/field/field.module
+++ b/core/modules/field/field.module
@@ -5,6 +5,7 @@
  */
 
 use Drupal\Component\Utility\Html;
+use Drupal\Component\Utility\String;
 use Drupal\Component\Utility\Xss;
 use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Template\Attribute;
@@ -137,10 +138,33 @@ function field_theme() {
     'field_multiple_value_form' => array(
       'render element' => 'element',
     ),
+    'link_formatter_link_separate' => array(
+      'variables' => array('title' => NULL, 'url_title' => NULL, 'href' => NULL, 'options' => array()),
+      'template' => 'link-formatter-link-separate',
+    ),
   );
 }
 
 /**
+ * Implements hook_library_info().
+ */
+function field_library_info() {
+  $libraries['drupal.text'] = array(
+    'title' => 'Text',
+    'version' => \Drupal::VERSION,
+    'js' => array(
+      drupal_get_path('module', 'field') . '/js/text.js' => array(),
+    ),
+    'dependencies' => array(
+      array('system', 'jquery'),
+      array('system', 'jquery.once'),
+      array('system', 'drupal'),
+    ),
+  );
+  return $libraries;
+}
+
+/**
  * Implements hook_cron().
  */
 function field_cron() {
@@ -189,6 +213,33 @@ function field_system_info_alter(&$info, $file, $type) {
 }
 
 /**
+ * Implements hook_field_info_alter().
+ */
+function field_field_info_alter(&$info) {
+  // Email.
+  $info['email']['configurable'] = TRUE;
+  $info['email']['provider'] = 'field';
+  $info['email']['class'] = '\Drupal\field\Plugin\Field\FieldType\ConfigurableEmailItem';
+  $info['email']['list_class'] = '\Drupal\Core\Field\ConfigFieldItemList';
+  $info['email']['default_widget'] = 'email_default';
+  $info['email']['default_formatter'] = 'text_plain';
+
+  // Telephone.
+  $info['telephone']['default_formatter'] = 'text_plain';
+}
+
+/**
+ * Implements hook_field_formatter_info_alter().
+ */
+function field_field_formatter_info_alter(&$info) {
+  // Email.
+  $info['text_plain']['field_types'][] = 'email';
+
+  // Telephone.
+  $info['text_plain']['field_types'][] = 'telephone';
+}
+
+/**
  * Implements hook_entity_field_info() to define all configured fields.
  */
 function field_entity_field_info($entity_type) {
@@ -568,6 +619,28 @@ function template_preprocess_field(&$variables, $hook) {
 }
 
 /**
+ * Prepares variables for separated link field templates.
+ *
+ * This template outputs a separate title and link.
+ *
+ * Default template: link-formatter-link-separate.html.twig.
+ *
+ * @param array $variables
+ *   An associative array containing:
+ *   - title: (optional) A descriptive or alternate title for the link, which
+ *     may be different than the actual link text.
+ *   - url_title: The anchor text for the link.
+ *   - href: The link URL.
+ *   - options: (optional) An array of options to pass to l().
+ */
+function template_preprocess_link_formatter_link_separate(&$variables) {
+  if (!empty($variables['title'])) {
+    $variables['title'] = String::checkPlain($variables['title']);
+  }
+  $variables['link'] = l($variables['url_title'], $variables['href'], $variables['options']);
+}
+
+/**
  * @} End of "defgroup field".
  */
 
@@ -690,3 +763,137 @@ function field_hook_info() {
 
   return $hooks;
 }
+
+/**
+ * Generates a trimmed, formatted version of a text field value.
+ *
+ * If the end of the summary is not indicated using the <!--break--> delimiter
+ * then we generate the summary automatically, trying to end it at a sensible
+ * place such as the end of a paragraph, a line break, or the end of a sentence
+ * (in that order of preference).
+ *
+ * @param $text
+ *   The content for which a summary will be generated.
+ * @param $format
+ *   The format of the content. If the line break filter is present then we
+ *   treat newlines embedded in $text as line breaks. If the htmlcorrector
+ *   filter is present, it will be run on the generated summary (if different
+ *   from the incoming $text).
+ * @param $size
+ *   The desired character length of the summary. If omitted, the default value
+ *   will be used. Ignored if the special delimiter is present in $text.
+ *
+ * @return
+ *   The generated summary.
+ */
+function text_summary($text, $format = NULL, $size = NULL) {
+  if (!isset($size)) {
+    $size = \Drupal::config('field.settings')->get('default_summary_length');
+  }
+
+  // Find where the delimiter is in the body
+  $delimiter = strpos($text, '<!--break-->');
+
+  // If the size is zero, and there is no delimiter, the entire body is the summary.
+  if ($size == 0 && $delimiter === FALSE) {
+    return $text;
+  }
+
+  // If a valid delimiter has been specified, use it to chop off the summary.
+  if ($delimiter !== FALSE) {
+    return substr($text, 0, $delimiter);
+  }
+
+  // Retrieve the filters of the specified text format, if any.
+  if (isset($format)) {
+    $filters = entity_load('filter_format', $format)->filters();
+    // If the specified format does not exist, return nothing. $text is already
+    // filtered text, but the remainder of this function will not be able to
+    // ensure a sane and secure summary.
+    if (!$filters) {
+      return '';
+    }
+  }
+
+  // If we have a short body, the entire body is the summary.
+  if (drupal_strlen($text) <= $size) {
+    return $text;
+  }
+
+  // If the delimiter has not been specified, try to split at paragraph or
+  // sentence boundaries.
+
+  // The summary may not be longer than maximum length specified. Initial slice.
+  $summary = truncate_utf8($text, $size);
+
+  // Store the actual length of the UTF8 string -- which might not be the same
+  // as $size.
+  $max_rpos = strlen($summary);
+
+  // How much to cut off the end of the summary so that it doesn't end in the
+  // middle of a paragraph, sentence, or word.
+  // Initialize it to maximum in order to find the minimum.
+  $min_rpos = $max_rpos;
+
+  // Store the reverse of the summary. We use strpos on the reversed needle and
+  // haystack for speed and convenience.
+  $reversed = strrev($summary);
+
+  // Build an array of arrays of break points grouped by preference.
+  $break_points = array();
+
+  // A paragraph near the end of sliced summary is most preferable.
+  $break_points[] = array('</p>' => 0);
+
+  // If no complete paragraph then treat line breaks as paragraphs.
+  $line_breaks = array('<br />' => 6, '<br>' => 4);
+  // Newline only indicates a line break if line break converter
+  // filter is present.
+  if (isset($format) && $filters->has('filter_autop') && $filters->get('filter_autop')->status) {
+    $line_breaks["\n"] = 1;
+  }
+  $break_points[] = $line_breaks;
+
+  // If the first paragraph is too long, split at the end of a sentence.
+  $break_points[] = array('. ' => 1, '! ' => 1, '? ' => 1, '。' => 0, '؟ ' => 1);
+
+  // Iterate over the groups of break points until a break point is found.
+  foreach ($break_points as $points) {
+    // Look for each break point, starting at the end of the summary.
+    foreach ($points as $point => $offset) {
+      // The summary is already reversed, but the break point isn't.
+      $rpos = strpos($reversed, strrev($point));
+      if ($rpos !== FALSE) {
+        $min_rpos = min($rpos + $offset, $min_rpos);
+      }
+    }
+
+    // If a break point was found in this group, slice and stop searching.
+    if ($min_rpos !== $max_rpos) {
+      // Don't slice with length 0. Length must be <0 to slice from RHS.
+      $summary = ($min_rpos === 0) ? $summary : substr($summary, 0, 0 - $min_rpos);
+      break;
+    }
+  }
+
+  // If the htmlcorrector filter is present, apply it to the generated summary.
+  if (isset($format) && $filters->has('filter_htmlcorrector') && $filters->get('filter_htmlcorrector')->status) {
+    $summary = Html::normalize($summary);
+  }
+
+  return $summary;
+}
+
+/**
+ * Implements hook_filter_format_update().
+ */
+function field_filter_format_update($format) {
+  field_cache_clear();
+}
+
+/**
+ * Implements hook_filter_format_disable().
+ */
+function field_filter_format_disable($format) {
+  field_cache_clear();
+}
diff --git a/core/modules/text/text.js b/core/modules/field/js/text.js
similarity index 100%
rename from core/modules/text/text.js
rename to core/modules/field/js/text.js
diff --git a/core/modules/number/lib/Drupal/number/Plugin/Field/FieldFormatter/DefaultNumberFormatter.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/DefaultNumberFormatter.php
similarity index 95%
rename from core/modules/number/lib/Drupal/number/Plugin/Field/FieldFormatter/DefaultNumberFormatter.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/DefaultNumberFormatter.php
index 2d08f5c..ca3bdb3 100644
--- a/core/modules/number/lib/Drupal/number/Plugin/Field/FieldFormatter/DefaultNumberFormatter.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/DefaultNumberFormatter.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\number\Plugin\field\formatter\DefaultNumberFormatter.
+ * Contains \Drupal\field\Plugin\Field\FieldFormatter\DefaultNumberFormatter.
  */
 
-namespace Drupal\number\Plugin\Field\FieldFormatter;
+namespace Drupal\field\Plugin\Field\FieldFormatter;
 
 use Drupal\Core\Field\FormatterBase;
 use Drupal\Core\Field\FieldItemListInterface;
diff --git a/core/modules/link/lib/Drupal/link/Plugin/Field/FieldFormatter/LinkFormatter.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/LinkFormatter.php
similarity index 97%
rename from core/modules/link/lib/Drupal/link/Plugin/Field/FieldFormatter/LinkFormatter.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/LinkFormatter.php
index 04e384b..b6145d0 100644
--- a/core/modules/link/lib/Drupal/link/Plugin/Field/FieldFormatter/LinkFormatter.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/LinkFormatter.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\link\Plugin\field\formatter\LinkFormatter.
+ * Contains \Drupal\field\Plugin\Field\FieldFormatter\LinkFormatter.
  */
 
-namespace Drupal\link\Plugin\Field\FieldFormatter;
+namespace Drupal\field\Plugin\Field\FieldFormatter;
 
 use Drupal\Component\Utility\Url;
 use Drupal\Component\Utility\String;
diff --git a/core/modules/link/lib/Drupal/link/Plugin/Field/FieldFormatter/LinkSeparateFormatter.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/LinkSeparateFormatter.php
similarity index 94%
rename from core/modules/link/lib/Drupal/link/Plugin/Field/FieldFormatter/LinkSeparateFormatter.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/LinkSeparateFormatter.php
index 4392123..c3e7be6 100644
--- a/core/modules/link/lib/Drupal/link/Plugin/Field/FieldFormatter/LinkSeparateFormatter.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/LinkSeparateFormatter.php
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Contains \Drupal\link\Plugin\field\formatter\LinkSeparateFormatter.
+ * Contains \Drupal\field\Plugin\Field\FieldFormatter\LinkSeparateFormatter.
  *
  * @todo
  * Merge into 'link' formatter once there is a #type like 'item' that
@@ -10,7 +10,7 @@
  * http://drupal.org/node/1829202
  */
 
-namespace Drupal\link\Plugin\Field\FieldFormatter;
+namespace Drupal\field\Plugin\Field\FieldFormatter;
 
 use Drupal\Core\Field\FieldItemListInterface;
 
diff --git a/core/modules/email/lib/Drupal/email/Plugin/Field/FieldFormatter/MailToFormatter.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/MailToFormatter.php
similarity index 85%
rename from core/modules/email/lib/Drupal/email/Plugin/Field/FieldFormatter/MailToFormatter.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/MailToFormatter.php
index 609d46e..f290a89 100644
--- a/core/modules/email/lib/Drupal/email/Plugin/Field/FieldFormatter/MailToFormatter.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/MailToFormatter.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\email\Plugin\Field\FieldFormatter\MailToFormatter.
+ * Contains \Drupal\field\Plugin\Field\FieldFormatter\MailToFormatter.
  */
 
-namespace Drupal\email\Plugin\Field\FieldFormatter;
+namespace Drupal\field\Plugin\Field\FieldFormatter;
 
 use Drupal\Core\Field\FormatterBase;
 use Drupal\Core\Field\FieldItemListInterface;
diff --git a/core/modules/number/lib/Drupal/number/Plugin/Field/FieldFormatter/NumberDecimalFormatter.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/NumberDecimalFormatter.php
similarity index 93%
rename from core/modules/number/lib/Drupal/number/Plugin/Field/FieldFormatter/NumberDecimalFormatter.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/NumberDecimalFormatter.php
index 1fe9c72..d63d0ec 100644
--- a/core/modules/number/lib/Drupal/number/Plugin/Field/FieldFormatter/NumberDecimalFormatter.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/NumberDecimalFormatter.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Definition of Drupal\number\Plugin\field\formatter\NumberDecimalFormatter.
+ * Contains \Drupal\field\Plugin\Field\FieldFormatter\NumberDecimalFormatter.
  */
 
-namespace Drupal\number\Plugin\Field\FieldFormatter;
+namespace Drupal\field\Plugin\Field\FieldFormatter;
 
 /**
  * Plugin implementation of the 'number_decimal' formatter.
diff --git a/core/modules/number/lib/Drupal/number/Plugin/Field/FieldFormatter/NumberIntegerFormatter.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/NumberIntegerFormatter.php
similarity index 85%
rename from core/modules/number/lib/Drupal/number/Plugin/Field/FieldFormatter/NumberIntegerFormatter.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/NumberIntegerFormatter.php
index 53ff874..dfdd7c6 100644
--- a/core/modules/number/lib/Drupal/number/Plugin/Field/FieldFormatter/NumberIntegerFormatter.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/NumberIntegerFormatter.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\number\Plugin\field\formatter\NumberIntegerFormatter.
+ * Contains \Drupal\field\Plugin\Field\FieldFormatter\NumberIntegerFormatter.
  */
 
-namespace Drupal\number\Plugin\Field\FieldFormatter;
+namespace Drupal\field\Plugin\Field\FieldFormatter;
 
 /**
  * Plugin implementation of the 'number_integer' formatter.
diff --git a/core/modules/number/lib/Drupal/number/Plugin/Field/FieldFormatter/NumberUnformattedFormatter.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/NumberUnformattedFormatter.php
similarity index 83%
rename from core/modules/number/lib/Drupal/number/Plugin/Field/FieldFormatter/NumberUnformattedFormatter.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/NumberUnformattedFormatter.php
index 46f093e..d0f6c2a 100644
--- a/core/modules/number/lib/Drupal/number/Plugin/Field/FieldFormatter/NumberUnformattedFormatter.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/NumberUnformattedFormatter.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\number\Plugin\field\formatter\NumberUnformattedFormatter.
+ * Contains \Drupal\field\Plugin\Field\FieldFormatter\NumberUnformattedFormatter.
  */
 
-namespace Drupal\number\Plugin\Field\FieldFormatter;
+namespace Drupal\field\Plugin\Field\FieldFormatter;
 
 use Drupal\Core\Field\FormatterBase;
 use Drupal\Core\Field\FieldItemListInterface;
diff --git a/core/modules/telephone/lib/Drupal/telephone/Plugin/Field/FieldFormatter/TelephoneLinkFormatter.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/TelephoneLinkFormatter.php
similarity index 93%
rename from core/modules/telephone/lib/Drupal/telephone/Plugin/Field/FieldFormatter/TelephoneLinkFormatter.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/TelephoneLinkFormatter.php
index 436a4fc..aa6c2b9 100644
--- a/core/modules/telephone/lib/Drupal/telephone/Plugin/Field/FieldFormatter/TelephoneLinkFormatter.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/TelephoneLinkFormatter.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\telephone\Plugin\field\formatter\TelephoneLinkFormatter.
+ * Contains \Drupal\field\Plugin\Field\FieldFormatter\TelephoneLinkFormatter.
  */
 
-namespace Drupal\telephone\Plugin\Field\FieldFormatter;
+namespace Drupal\field\Plugin\Field\FieldFormatter;
 
 use Drupal\Core\Field\FormatterBase;
 use Drupal\Core\Field\FieldItemListInterface;
diff --git a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldFormatter/TextDefaultFormatter.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/TextDefaultFormatter.php
similarity index 85%
rename from core/modules/text/lib/Drupal/text/Plugin/Field/FieldFormatter/TextDefaultFormatter.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/TextDefaultFormatter.php
index ba85506..88a32a6 100644
--- a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldFormatter/TextDefaultFormatter.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/TextDefaultFormatter.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\text\Plugin\field\formatter\TextDefaultFormatter.
+ * Contains \Drupal\field\Plugin\Field\FieldFormatter\TextDefaultFormatter.
  */
 
-namespace Drupal\text\Plugin\Field\FieldFormatter;
+namespace Drupal\field\Plugin\Field\FieldFormatter;
 
 use Drupal\Core\Field\FormatterBase;
 use Drupal\Core\Field\FieldItemListInterface;
diff --git a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldFormatter/TextPlainFormatter.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/TextPlainFormatter.php
similarity index 87%
rename from core/modules/text/lib/Drupal/text/Plugin/Field/FieldFormatter/TextPlainFormatter.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/TextPlainFormatter.php
index 6c15bf5..dd0d1c3 100644
--- a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldFormatter/TextPlainFormatter.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/TextPlainFormatter.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\text\Plugin\field\formatter\TextPlainFormatter.
+ * Contains \Drupal\field\Plugin\Field\FieldFormatter\TextPlainFormatter.
  */
 
-namespace Drupal\text\Plugin\Field\FieldFormatter;
+namespace Drupal\field\Plugin\Field\FieldFormatter;
 
 use Drupal\Core\Field\FormatterBase;
 use Drupal\Core\Field\FieldItemListInterface;
diff --git a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldFormatter/TextSummaryOrTrimmedFormatter.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/TextSummaryOrTrimmedFormatter.php
similarity index 76%
rename from core/modules/text/lib/Drupal/text/Plugin/Field/FieldFormatter/TextSummaryOrTrimmedFormatter.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/TextSummaryOrTrimmedFormatter.php
index baebdc1..7d37daf 100644
--- a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldFormatter/TextSummaryOrTrimmedFormatter.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/TextSummaryOrTrimmedFormatter.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\text\Plugin\field\formatter\TextSummaryOrTrimmedFormatter.
+ * Contains \Drupal\field\Plugin\Field\FieldFormatter\TextSummaryOrTrimmedFormatter.
  */
 
-namespace Drupal\text\Plugin\Field\FieldFormatter;
+namespace Drupal\field\Plugin\Field\FieldFormatter;
 
 /**
  * Plugin implementation of the 'text_summary_or_trimmed' formatter.
diff --git a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldFormatter/TextTrimmedFormatter.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/TextTrimmedFormatter.php
similarity index 93%
rename from core/modules/text/lib/Drupal/text/Plugin/Field/FieldFormatter/TextTrimmedFormatter.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/TextTrimmedFormatter.php
index 8100e7b..7b73c3f 100644
--- a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldFormatter/TextTrimmedFormatter.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldFormatter/TextTrimmedFormatter.php
@@ -2,9 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\text\Plugin\field\formatter\TextTrimmedFormatter.
+ * Contains \Drupal\field\Plugin\Field\FieldFormatter\TextTrimmedFormatter.
  */
-namespace Drupal\text\Plugin\Field\FieldFormatter;
+
+namespace Drupal\field\Plugin\Field\FieldFormatter;
 
 use Drupal\Core\Field\FormatterBase;
 use Drupal\Core\Field\FieldItemListInterface;
diff --git a/core/modules/email/lib/Drupal/email/ConfigurableEmailItem.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/ConfigurableEmailItem.php
similarity index 85%
rename from core/modules/email/lib/Drupal/email/ConfigurableEmailItem.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/ConfigurableEmailItem.php
index 65e08da..7e49012 100644
--- a/core/modules/email/lib/Drupal/email/ConfigurableEmailItem.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/ConfigurableEmailItem.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\email\ConfigurableEmailItem.
+ * Contains \Drupal\field\Plugin\Field\FieldType\ConfigurableEmailItem.
  */
 
-namespace Drupal\email;
+namespace Drupal\field\Plugin\Field\FieldType;
 
 use Drupal\Core\Field\FieldDefinitionInterface;
 use Drupal\Core\Field\Plugin\Field\FieldType\EmailItem;
diff --git a/core/modules/number/lib/Drupal/number/Plugin/Field/FieldType/DecimalItem.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/DecimalItem.php
similarity index 95%
rename from core/modules/number/lib/Drupal/number/Plugin/Field/FieldType/DecimalItem.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/DecimalItem.php
index 42588e8..fb7e103 100644
--- a/core/modules/number/lib/Drupal/number/Plugin/Field/FieldType/DecimalItem.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/DecimalItem.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\number\Plugin\Field\FieldType\DecimalItem.
+ * Contains \Drupal\field\Plugin\Field\FieldType\DecimalItem.
  */
 
-namespace Drupal\number\Plugin\Field\FieldType;
+namespace Drupal\field\Plugin\Field\FieldType;
 
 use Drupal\Core\TypedData\DataDefinition;
 use Drupal\Core\Field\FieldDefinitionInterface;
diff --git a/core/modules/number/lib/Drupal/number/Plugin/Field/FieldType/FloatItem.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/FloatItem.php
similarity index 91%
rename from core/modules/number/lib/Drupal/number/Plugin/Field/FieldType/FloatItem.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/FloatItem.php
index 5765147..05072c0 100644
--- a/core/modules/number/lib/Drupal/number/Plugin/Field/FieldType/FloatItem.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/FloatItem.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\number\Plugin\Field\FieldType\FloatItem.
+ * Contains \Drupal\field\Plugin\Field\FieldType\FloatItem.
  */
 
-namespace Drupal\number\Plugin\Field\FieldType;
+namespace Drupal\field\Plugin\Field\FieldType;
 
 use Drupal\Core\TypedData\DataDefinition;
 use Drupal\Core\Field\FieldDefinitionInterface;
diff --git a/core/modules/number/lib/Drupal/number/Plugin/Field/FieldType/IntegerItem.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/IntegerItem.php
similarity index 91%
rename from core/modules/number/lib/Drupal/number/Plugin/Field/FieldType/IntegerItem.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/IntegerItem.php
index 6c44d76..f750803 100644
--- a/core/modules/number/lib/Drupal/number/Plugin/Field/FieldType/IntegerItem.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/IntegerItem.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\number\Plugin\Field\FieldType\IntegerItem.
+ * Contains \Drupal\field\Plugin\Field\FieldType\IntegerItem.
  */
 
-namespace Drupal\number\Plugin\Field\FieldType;
+namespace Drupal\field\Plugin\Field\FieldType;
 
 use Drupal\Core\TypedData\DataDefinition;
 use Drupal\Core\Field\FieldDefinitionInterface;
diff --git a/core/modules/link/lib/Drupal/link/Plugin/Field/FieldType/LinkItem.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/LinkItem.php
similarity index 96%
rename from core/modules/link/lib/Drupal/link/Plugin/Field/FieldType/LinkItem.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/LinkItem.php
index bc28594..a7af9c6 100644
--- a/core/modules/link/lib/Drupal/link/Plugin/Field/FieldType/LinkItem.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/LinkItem.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\email\Plugin\Field\FieldType\LinkItem.
+ * Contains \Drupal\field\Plugin\Field\FieldType\LinkItem.
  */
 
-namespace Drupal\link\Plugin\Field\FieldType;
+namespace Drupal\field\Plugin\Field\FieldType;
 
 use Drupal\Core\Field\ConfigFieldItemBase;
 use Drupal\Core\TypedData\DataDefinition;
diff --git a/core/modules/number/lib/Drupal/number/Plugin/Field/FieldType/NumberItemBase.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/NumberItemBase.php
similarity index 96%
rename from core/modules/number/lib/Drupal/number/Plugin/Field/FieldType/NumberItemBase.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/NumberItemBase.php
index 22f2d59..f039a6b 100644
--- a/core/modules/number/lib/Drupal/number/Plugin/Field/FieldType/NumberItemBase.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/NumberItemBase.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\number\Plugin\Field\FieldType\NumberItemBase.
+ * Contains \Drupal\field\Plugin\Field\FieldType\NumberItemBase.
  */
 
-namespace Drupal\number\Plugin\Field\FieldType;
+namespace Drupal\field\Plugin\Field\FieldType;
 
 use Drupal\Core\Field\ConfigFieldItemBase;
 
diff --git a/core/modules/telephone/lib/Drupal/telephone/Plugin/Field/FieldType/TelephoneItem.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/TelephoneItem.php
similarity index 94%
rename from core/modules/telephone/lib/Drupal/telephone/Plugin/Field/FieldType/TelephoneItem.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/TelephoneItem.php
index 67d7bdf..5392906 100644
--- a/core/modules/telephone/lib/Drupal/telephone/Plugin/Field/FieldType/TelephoneItem.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/TelephoneItem.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\telephone\Plugin\Field\FieldType\TelephoneItem.
+ * Contains \Drupal\field\Plugin\Field\FieldType\TelephoneItem.
  */
 
-namespace Drupal\telephone\Plugin\Field\FieldType;
+namespace Drupal\field\Plugin\Field\FieldType;
 
 use Drupal\Core\Field\ConfigFieldItemBase;
 use Drupal\Core\TypedData\DataDefinition;
diff --git a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextItem.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/TextItem.php
similarity index 96%
rename from core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextItem.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/TextItem.php
index 93bd949..ac400cb 100644
--- a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextItem.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/TextItem.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\text\Plugin\Field\FieldType\TextItem.
+ * Contains \Drupal\field\Plugin\Field\FieldType\TextItem.
  */
 
-namespace Drupal\text\Plugin\Field\FieldType;
+namespace Drupal\field\Plugin\Field\FieldType;
 
 use Drupal\Core\Field\FieldDefinitionInterface;
 
diff --git a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextItemBase.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/TextItemBase.php
similarity index 96%
rename from core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextItemBase.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/TextItemBase.php
index 158c416..c8522c4 100644
--- a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextItemBase.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/TextItemBase.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\text\Plugin\Field\FieldType\TextItemBase.
+ * Contains \Drupal\field\Plugin\Field\FieldType\TextItemBase.
  */
 
-namespace Drupal\text\Plugin\Field\FieldType;
+namespace Drupal\field\Plugin\Field\FieldType;
 
 use Drupal\Core\Field\ConfigFieldItemBase;
 use Drupal\Core\Field\PrepareCacheInterface;
diff --git a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextLongItem.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/TextLongItem.php
similarity index 92%
rename from core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextLongItem.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/TextLongItem.php
index 934d11f..d7d49a9 100644
--- a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextLongItem.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/TextLongItem.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\text\Plugin\Field\FieldType\TextLongItem.
+ * Contains \Drupal\field\Plugin\Field\FieldType\TextLongItem.
  */
 
-namespace Drupal\text\Plugin\Field\FieldType;
+namespace Drupal\field\Plugin\Field\FieldType;
 
 use Drupal\Core\Field\FieldDefinitionInterface;
 
diff --git a/core/modules/text/lib/Drupal/text/TextProcessed.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/TextProcessed.php
similarity index 94%
rename from core/modules/text/lib/Drupal/text/TextProcessed.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/TextProcessed.php
index d07a196..74402bf 100644
--- a/core/modules/text/lib/Drupal/text/TextProcessed.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/TextProcessed.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Definition of Drupal\text\TextProcessed.
+ * Contains \Drupal\field\Plugin\Field\FieldType\TextProcessed.
  */
 
-namespace Drupal\text;
+namespace Drupal\field\Plugin\Field\FieldType;
 
 use Drupal\Core\TypedData\DataDefinitionInterface;
 use Drupal\Core\TypedData\TypedDataInterface;
diff --git a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextWithSummaryItem.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/TextWithSummaryItem.php
similarity index 96%
rename from core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextWithSummaryItem.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/TextWithSummaryItem.php
index 3942510..0f809a1 100644
--- a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldType/TextWithSummaryItem.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldType/TextWithSummaryItem.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\text\Plugin\Field\FieldType\TextWithSummaryItem.
+ * Contains \Drupal\field\Plugin\Field\FieldType\TextWithSummaryItem.
  */
 
-namespace Drupal\text\Plugin\Field\FieldType;
+namespace Drupal\field\Plugin\Field\FieldType;
 
 use Drupal\Core\TypedData\DataDefinition;
 use Drupal\Core\Field\FieldDefinitionInterface;
diff --git a/core/modules/email/lib/Drupal/email/Plugin/Field/FieldWidget/EmailDefaultWidget.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldWidget/EmailDefaultWidget.php
similarity index 93%
rename from core/modules/email/lib/Drupal/email/Plugin/Field/FieldWidget/EmailDefaultWidget.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldWidget/EmailDefaultWidget.php
index 62db527..c429fd2 100644
--- a/core/modules/email/lib/Drupal/email/Plugin/Field/FieldWidget/EmailDefaultWidget.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldWidget/EmailDefaultWidget.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Definition of Drupal\email\Plugin\Field\FieldWidget\EmailDefaultWidget.
+ * Definition of Drupal\field\Plugin\Field\FieldWidget\EmailDefaultWidget.
  */
 
-namespace Drupal\email\Plugin\Field\FieldWidget;
+namespace Drupal\field\Plugin\Field\FieldWidget;
 
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Field\WidgetBase;
diff --git a/core/modules/link/lib/Drupal/link/Plugin/Field/FieldWidget/LinkWidget.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldWidget/LinkWidget.php
similarity index 97%
rename from core/modules/link/lib/Drupal/link/Plugin/Field/FieldWidget/LinkWidget.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldWidget/LinkWidget.php
index dc10574..cc00bf8 100644
--- a/core/modules/link/lib/Drupal/link/Plugin/Field/FieldWidget/LinkWidget.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldWidget/LinkWidget.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\link\Plugin\Field\FieldWidget\LinkWidget.
+ * Contains \Drupal\field\Plugin\Field\FieldWidget\LinkWidget.
  */
 
-namespace Drupal\link\Plugin\Field\FieldWidget;
+namespace Drupal\field\Plugin\Field\FieldWidget;
 
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Field\WidgetBase;
diff --git a/core/modules/number/lib/Drupal/number/Plugin/Field/FieldWidget/NumberWidget.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldWidget/NumberWidget.php
similarity index 96%
rename from core/modules/number/lib/Drupal/number/Plugin/Field/FieldWidget/NumberWidget.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldWidget/NumberWidget.php
index 436e2cd..1514733 100644
--- a/core/modules/number/lib/Drupal/number/Plugin/Field/FieldWidget/NumberWidget.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldWidget/NumberWidget.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\number\Plugin\Field\FieldWidget\NumberWidget.
+ * Contains \Drupal\field\Plugin\Field\FieldWidget\NumberWidget.
  */
 
-namespace Drupal\number\Plugin\Field\FieldWidget;
+namespace Drupal\field\Plugin\Field\FieldWidget;
 
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Field\WidgetBase;
diff --git a/core/modules/telephone/lib/Drupal/telephone/Plugin/Field/FieldWidget/TelephoneDefaultWidget.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldWidget/TelephoneDefaultWidget.php
similarity index 92%
rename from core/modules/telephone/lib/Drupal/telephone/Plugin/Field/FieldWidget/TelephoneDefaultWidget.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldWidget/TelephoneDefaultWidget.php
index 78c768e..aa3f012 100644
--- a/core/modules/telephone/lib/Drupal/telephone/Plugin/Field/FieldWidget/TelephoneDefaultWidget.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldWidget/TelephoneDefaultWidget.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\telephone\Plugin\Field\FieldWidget\TelephoneDefaultWidget.
+ * Contains \Drupal\field\Plugin\Field\FieldWidget\TelephoneDefaultWidget.
  */
 
-namespace Drupal\telephone\Plugin\Field\FieldWidget;
+namespace Drupal\field\Plugin\Field\FieldWidget;
 
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Field\WidgetBase;
diff --git a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldWidget/TextareaWidget.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldWidget/TextareaWidget.php
similarity index 96%
rename from core/modules/text/lib/Drupal/text/Plugin/Field/FieldWidget/TextareaWidget.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldWidget/TextareaWidget.php
index 9752a1f..163a378 100644
--- a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldWidget/TextareaWidget.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldWidget/TextareaWidget.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\text\Plugin\Field\FieldWidget\TextareaWidget.
+ * Contains \Drupal\field\Plugin\Field\FieldWidget\TextareaWidget.
  */
 
-namespace Drupal\text\Plugin\Field\FieldWidget;
+namespace Drupal\field\Plugin\Field\FieldWidget;
 
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Field\WidgetBase;
diff --git a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldWidget/TextareaWithSummaryWidget.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldWidget/TextareaWithSummaryWidget.php
similarity index 90%
rename from core/modules/text/lib/Drupal/text/Plugin/Field/FieldWidget/TextareaWithSummaryWidget.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldWidget/TextareaWithSummaryWidget.php
index 2490ed2..43a0df9 100644
--- a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldWidget/TextareaWithSummaryWidget.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldWidget/TextareaWithSummaryWidget.php
@@ -2,12 +2,12 @@
 
 /**
  * @file
- * Contains \Drupal\text\Plugin\Field\FieldWidget\TextareaWithSummaryWidget.
+ * Contains \Drupal\field\Plugin\Field\FieldWidget\TextareaWithSummaryWidget.
  */
 
-namespace Drupal\text\Plugin\Field\FieldWidget;
+namespace Drupal\field\Plugin\Field\FieldWidget;
 
-use Drupal\text\Plugin\Field\FieldWidget\TextareaWidget;
+use Drupal\field\Plugin\Field\FieldWidget\TextareaWidget;
 use Symfony\Component\Validator\ConstraintViolationInterface;
 use Drupal\Core\Field\FieldItemListInterface;
 
@@ -69,7 +69,7 @@ function formElement(FieldItemListInterface $items, $delta, array $element, arra
       '#rows' => $this->getSetting('summary_rows'),
       '#description' => t('Leave blank to use trimmed value of full text as the summary.'),
       '#attached' => array(
-        'library' => array(array('text', 'drupal.text')),
+        'library' => array(array('field', 'drupal.text')),
       ),
       '#attributes' => array('class' => array('text-summary')),
       '#prefix' => '<div class="text-summary-wrapper">',
diff --git a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldWidget/TextfieldWidget.php b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldWidget/TextfieldWidget.php
similarity index 96%
rename from core/modules/text/lib/Drupal/text/Plugin/Field/FieldWidget/TextfieldWidget.php
rename to core/modules/field/lib/Drupal/field/Plugin/Field/FieldWidget/TextfieldWidget.php
index b35e633..d085d85 100644
--- a/core/modules/text/lib/Drupal/text/Plugin/Field/FieldWidget/TextfieldWidget.php
+++ b/core/modules/field/lib/Drupal/field/Plugin/Field/FieldWidget/TextfieldWidget.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\text\Plugin\Field\FieldWidget\TextfieldWidget.
+ * Contains \Drupal\field\Plugin\Field\FieldWidget\TextfieldWidget.
  */
 
-namespace Drupal\text\Plugin\Field\FieldWidget;
+namespace Drupal\field\Plugin\Field\FieldWidget;
 
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Field\WidgetBase;
diff --git a/core/modules/email/lib/Drupal/email/Tests/EmailFieldTest.php b/core/modules/field/lib/Drupal/field/Tests/Email/EmailFieldTest.php
similarity index 95%
rename from core/modules/email/lib/Drupal/email/Tests/EmailFieldTest.php
rename to core/modules/field/lib/Drupal/field/Tests/Email/EmailFieldTest.php
index 9ae6eb0..63180a7 100644
--- a/core/modules/email/lib/Drupal/email/Tests/EmailFieldTest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/Email/EmailFieldTest.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Definition of Drupal\email\Tests\EmailFieldTest.
+ * Definition of Drupal\field\Tests\Email\EmailFieldTest.
  */
 
-namespace Drupal\email\Tests;
+namespace Drupal\field\Tests\Email;
 
 use Drupal\Core\Language\Language;
 use Drupal\simpletest\WebTestBase;
@@ -20,7 +20,7 @@ class EmailFieldTest extends WebTestBase {
    *
    * @var array
    */
-  public static $modules = array('node', 'entity_test', 'email', 'field_ui');
+  public static $modules = array('field', 'node', 'entity_test', 'field_ui');
 
   /**
    * A field to use in this test class.
diff --git a/core/modules/email/lib/Drupal/email/Tests/EmailItemTest.php b/core/modules/field/lib/Drupal/field/Tests/Email/EmailItemTest.php
similarity index 94%
rename from core/modules/email/lib/Drupal/email/Tests/EmailItemTest.php
rename to core/modules/field/lib/Drupal/field/Tests/Email/EmailItemTest.php
index 7bbd89b..4f0ebc2 100644
--- a/core/modules/email/lib/Drupal/email/Tests/EmailItemTest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/Email/EmailItemTest.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\email\Tests\EmailItemTest.
+ * Contains \Drupal\field\Tests\Email\EmailItemTest.
  */
 
-namespace Drupal\email\Tests;
+namespace Drupal\field\Tests\Email;
 
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Field\FieldItemInterface;
@@ -21,7 +21,7 @@ class EmailItemTest extends FieldUnitTestBase {
    *
    * @var array
    */
-  public static $modules = array('email');
+  public static $modules = array('field');
 
   public static function getInfo() {
     return array(
diff --git a/core/modules/field/lib/Drupal/field/Tests/FieldHelpTest.php b/core/modules/field/lib/Drupal/field/Tests/FieldHelpTest.php
index 074a009..766f3af 100644
--- a/core/modules/field/lib/Drupal/field/Tests/FieldHelpTest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/FieldHelpTest.php
@@ -54,16 +54,15 @@ public function testFieldHelp() {
     // Visit the Help page and make sure no warnings or notices are thrown.
     $this->drupalGet('admin/help/field');
 
-    // Enable the Options, E-mail and Field API Test modules.
-    \Drupal::moduleHandler()->install(array('options', 'email', 'field_test'));
+    // Enable the Options and Field API Test modules.
+    \Drupal::moduleHandler()->install(array('options', 'field_test'));
     \Drupal::service('plugin.manager.field.widget')->clearCachedDefinitions();
     \Drupal::service('plugin.manager.field.field_type')->clearCachedDefinitions();
 
     $this->drupalGet('admin/help/field');
     $this->assertLink('Options', 0, 'Options module is listed on the Field help page.');
-    $this->assertLink('E-mail', 0, 'E-mail module is listed on the Field help page.');
     $this->assertText('Field API Test', 'Modules with field types that do not implement hook_help are listed.');
     $this->assertNoLink('Field API Test', 'Modules with field types that do not implement hook_help are not linked.');
-    $this->assertNoLink('Link', 'Modules that have not been installed, are not listed.');
+    $this->assertNoLink('Datetime', 'Modules that have not been installed, are not listed.');
   }
 }
diff --git a/core/modules/link/lib/Drupal/link/Tests/LinkFieldTest.php b/core/modules/field/lib/Drupal/field/Tests/Link/LinkFieldTest.php
similarity index 99%
rename from core/modules/link/lib/Drupal/link/Tests/LinkFieldTest.php
rename to core/modules/field/lib/Drupal/field/Tests/Link/LinkFieldTest.php
index 1be52d5..0a786fd 100644
--- a/core/modules/link/lib/Drupal/link/Tests/LinkFieldTest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/Link/LinkFieldTest.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains Drupal\link\Tests\LinkFieldTest.
+ * Contains Drupal\field\Tests\Link\LinkFieldTest.
  */
 
-namespace Drupal\link\Tests;
+namespace Drupal\field\Tests\Link;
 
 use Drupal\simpletest\WebTestBase;
 use Drupal\Component\Utility\String;
@@ -20,7 +20,7 @@ class LinkFieldTest extends WebTestBase {
    *
    * @var array
    */
-  public static $modules = array('entity_test', 'link');
+  public static $modules = array('field', 'entity_test');
 
   /**
    * A field to use in this test class.
diff --git a/core/modules/link/lib/Drupal/link/Tests/LinkFieldUITest.php b/core/modules/field/lib/Drupal/field/Tests/Link/LinkFieldUITest.php
similarity index 92%
rename from core/modules/link/lib/Drupal/link/Tests/LinkFieldUITest.php
rename to core/modules/field/lib/Drupal/field/Tests/Link/LinkFieldUITest.php
index 97fda35..a45468f 100644
--- a/core/modules/link/lib/Drupal/link/Tests/LinkFieldUITest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/Link/LinkFieldUITest.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains Drupal\link\Tests\LinkFieldUITest.
+ * Contains Drupal\field\Tests\Link\LinkFieldUITest.
  */
 
-namespace Drupal\link\Tests;
+namespace Drupal\field\Tests\Link;
 
 use Drupal\simpletest\WebTestBase;
 
@@ -19,7 +19,7 @@ class LinkFieldUITest extends WebTestBase {
    *
    * @var array
    */
-  public static $modules = array('node', 'link', 'field_ui');
+  public static $modules = array('field', 'node', 'field_ui');
 
   public static function getInfo() {
     return array(
diff --git a/core/modules/link/lib/Drupal/link/Tests/LinkItemTest.php b/core/modules/field/lib/Drupal/field/Tests/Link/LinkItemTest.php
similarity index 95%
rename from core/modules/link/lib/Drupal/link/Tests/LinkItemTest.php
rename to core/modules/field/lib/Drupal/field/Tests/Link/LinkItemTest.php
index d1e4ea6..a040e0e 100644
--- a/core/modules/link/lib/Drupal/link/Tests/LinkItemTest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/Link/LinkItemTest.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\link\Tests\LinkItemTest.
+ * Contains \Drupal\field\Tests\Link\LinkItemTest.
  */
 
-namespace Drupal\link\Tests;
+namespace Drupal\field\Tests\Link;
 
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Field\FieldItemInterface;
@@ -21,7 +21,7 @@ class LinkItemTest extends FieldUnitTestBase {
    *
    * @var array
    */
-  public static $modules = array('link');
+  public static $modules = array('field');
 
   public static function getInfo() {
     return array(
diff --git a/core/modules/number/lib/Drupal/number/Tests/NumberFieldTest.php b/core/modules/field/lib/Drupal/field/Tests/Number/NumberFieldTest.php
similarity index 98%
rename from core/modules/number/lib/Drupal/number/Tests/NumberFieldTest.php
rename to core/modules/field/lib/Drupal/field/Tests/Number/NumberFieldTest.php
index a0f0a0e..453e2bc 100644
--- a/core/modules/number/lib/Drupal/number/Tests/NumberFieldTest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/Number/NumberFieldTest.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Definition of Drupal\number\NumberFieldTest.
+ * Contains \Drupal\field\Tests\Number\NumberFieldTest.
  */
 
-namespace Drupal\number\Tests;
+namespace Drupal\field\Tests\Number;
 
 use Drupal\simpletest\WebTestBase;
 
@@ -19,7 +19,7 @@ class NumberFieldTest extends WebTestBase {
    *
    * @var array
    */
-  public static $modules = array('node', 'entity_test', 'number', 'field_ui');
+  public static $modules = array('field', 'node', 'entity_test', 'field_ui');
 
   /**
    * A field to use in this class.
diff --git a/core/modules/number/lib/Drupal/number/Tests/NumberItemTest.php b/core/modules/field/lib/Drupal/field/Tests/Number/NumberItemTest.php
similarity index 96%
rename from core/modules/number/lib/Drupal/number/Tests/NumberItemTest.php
rename to core/modules/field/lib/Drupal/field/Tests/Number/NumberItemTest.php
index 5122028..b4faa80 100644
--- a/core/modules/number/lib/Drupal/number/Tests/NumberItemTest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/Number/NumberItemTest.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\number\Tests\NumberItemTest.
+ * Contains \Drupal\field\Tests\Number\NumberItemTest.
  */
 
-namespace Drupal\number\Tests;
+namespace Drupal\field\Tests\Number;
 
 use Drupal\Core\Field\FieldItemInterface;
 use Drupal\Core\Field\FieldItemListInterface;
@@ -21,7 +21,7 @@ class NumberItemTest extends FieldUnitTestBase {
    *
    * @var array
    */
-  public static $modules = array('number');
+  public static $modules = array('field');
 
   public static function getInfo() {
     return array(
diff --git a/core/modules/telephone/lib/Drupal/telephone/Tests/TelephoneFieldTest.php b/core/modules/field/lib/Drupal/field/Tests/Telephone/TelephoneFieldTest.php
similarity index 94%
rename from core/modules/telephone/lib/Drupal/telephone/Tests/TelephoneFieldTest.php
rename to core/modules/field/lib/Drupal/field/Tests/Telephone/TelephoneFieldTest.php
index e0fe150..bc0fbd1 100644
--- a/core/modules/telephone/lib/Drupal/telephone/Tests/TelephoneFieldTest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/Telephone/TelephoneFieldTest.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\telephone\TelephoneFieldTest.
+ * Contains \Drupal\field\Tests\Telephone\TelephoneFieldTest.
  */
 
-namespace Drupal\telephone\Tests;
+namespace Drupal\field\Tests\Telephone;
 
 use Drupal\simpletest\WebTestBase;
 
@@ -19,11 +19,7 @@ class TelephoneFieldTest extends WebTestBase {
    *
    * @var array
    */
-  public static $modules = array(
-    'field',
-    'node',
-    'telephone'
-  );
+  public static $modules = array('field', 'node');
 
   protected $instance;
   protected $web_user;
diff --git a/core/modules/telephone/lib/Drupal/telephone/Tests/TelephoneItemTest.php b/core/modules/field/lib/Drupal/field/Tests/Telephone/TelephoneItemTest.php
similarity index 93%
rename from core/modules/telephone/lib/Drupal/telephone/Tests/TelephoneItemTest.php
rename to core/modules/field/lib/Drupal/field/Tests/Telephone/TelephoneItemTest.php
index d2b6f11..f4c1d88 100644
--- a/core/modules/telephone/lib/Drupal/telephone/Tests/TelephoneItemTest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/Telephone/TelephoneItemTest.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\field\Tests\TelephoneItemTest.
+ * Contains \Drupal\field\Tests\Telephone\TelephoneItemTest.
  */
 
-namespace Drupal\telephone\Tests;
+namespace Drupal\field\Tests\Telephone;
 
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Field\FieldItemInterface;
@@ -21,7 +21,7 @@ class TelephoneItemTest extends FieldUnitTestBase {
    *
    * @var array
    */
-  public static $modules = array('telephone');
+  public static $modules = array('field');
 
   public static function getInfo() {
     return array(
diff --git a/core/modules/text/lib/Drupal/text/Tests/TextFieldTest.php b/core/modules/field/lib/Drupal/field/Tests/Text/TextFieldTest.php
similarity index 98%
rename from core/modules/text/lib/Drupal/text/Tests/TextFieldTest.php
rename to core/modules/field/lib/Drupal/field/Tests/Text/TextFieldTest.php
index e1efa12..a491630 100644
--- a/core/modules/text/lib/Drupal/text/Tests/TextFieldTest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/Text/TextFieldTest.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Definition of Drupal\text\TextFieldTest.
+ * Contains \Drupal\field\Tests\Text\TextFieldTest.
  */
 
-namespace Drupal\text\Tests;
+namespace Drupal\field\Tests\Text;
 
 use Drupal\simpletest\WebTestBase;
 
@@ -19,7 +19,7 @@ class TextFieldTest extends WebTestBase {
    *
    * @var array
    */
-  public static $modules = array('entity_test');
+  public static $modules = array('field', 'entity_test');
 
   protected $admin_user;
   protected $web_user;
diff --git a/core/modules/text/lib/Drupal/text/Tests/Formatter/TextPlainUnitTest.php b/core/modules/field/lib/Drupal/field/Tests/Text/TextPlainUnitTest.php
similarity index 97%
rename from core/modules/text/lib/Drupal/text/Tests/Formatter/TextPlainUnitTest.php
rename to core/modules/field/lib/Drupal/field/Tests/Text/TextPlainUnitTest.php
index d1ff5d2..353467f 100644
--- a/core/modules/text/lib/Drupal/text/Tests/Formatter/TextPlainUnitTest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/Text/TextPlainUnitTest.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\text\Tests\Formatter\TextPlainUnitTest.
+ * Contains \Drupal\field\Tests\Text\TextPlainUnitTest.
  */
 
-namespace Drupal\text\Tests\Formatter;
+namespace Drupal\field\Tests\Text;
 
 use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
@@ -26,7 +26,7 @@ class TextPlainUnitTest extends DrupalUnitTestBase {
    *
    * @var array
    */
-  public static $modules = array('entity', 'field', 'text', 'entity_test', 'system', 'filter', 'user');
+  public static $modules = array('entity', 'field', 'entity_test', 'system', 'filter', 'user');
 
   /**
    * Contains rendered content.
diff --git a/core/modules/text/lib/Drupal/text/Tests/TextSummaryTest.php b/core/modules/field/lib/Drupal/field/Tests/Text/TextSummaryTest.php
similarity index 98%
rename from core/modules/text/lib/Drupal/text/Tests/TextSummaryTest.php
rename to core/modules/field/lib/Drupal/field/Tests/Text/TextSummaryTest.php
index b287a62..aaee03e 100644
--- a/core/modules/text/lib/Drupal/text/Tests/TextSummaryTest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/Text/TextSummaryTest.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Definition of Drupal\text\TextSummaryTest.
+ * Contains \Drupal\field\Tests\Text\TextSummaryTest.
  */
 
-namespace Drupal\text\Tests;
+namespace Drupal\field\Tests\Text;
 
 use Drupal\simpletest\DrupalUnitTestBase;
 
@@ -14,7 +14,7 @@
  */
 class TextSummaryTest extends DrupalUnitTestBase {
 
-  public static $modules = array('system', 'user', 'filter', 'text');
+  public static $modules = array('field', 'system', 'user', 'filter');
 
   public static function getInfo() {
     return array(
@@ -28,7 +28,7 @@ function setUp() {
     parent::setUp();
 
     $this->installSchema('system', 'url_alias');
-    $this->installConfig(array('text'));
+    $this->installConfig(array('field'));
   }
 
   /**
diff --git a/core/modules/text/lib/Drupal/text/Tests/TextWithSummaryItemTest.php b/core/modules/field/lib/Drupal/field/Tests/Text/TextWithSummaryItemTest.php
similarity index 97%
rename from core/modules/text/lib/Drupal/text/Tests/TextWithSummaryItemTest.php
rename to core/modules/field/lib/Drupal/field/Tests/Text/TextWithSummaryItemTest.php
index f325b85..87d98bf 100644
--- a/core/modules/text/lib/Drupal/text/Tests/TextWithSummaryItemTest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/Text/TextWithSummaryItemTest.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\text\Tests\TextSummaryItemTest.
+ * Contains \Drupal\field\Tests\Text\TextSummaryItemTest.
  */
 
-namespace Drupal\text\Tests;
+namespace Drupal\field\Tests\Text;
 
 use Drupal\Core\Language\Language;
 use Drupal\Core\Field\FieldItemListInterface;
@@ -22,7 +22,7 @@ class TextWithSummaryItemTest extends FieldUnitTestBase {
    *
    * @var array
    */
-  public static $modules = array('filter');
+  public static $modules = array('field', 'filter');
 
   /**
    * Field entity.
diff --git a/core/modules/link/templates/link-formatter-link-separate.html.twig b/core/modules/field/templates/link-formatter-link-separate.html.twig
similarity index 100%
rename from core/modules/link/templates/link-formatter-link-separate.html.twig
rename to core/modules/field/templates/link-formatter-link-separate.html.twig
diff --git a/core/modules/link/link.info.yml b/core/modules/link/link.info.yml
deleted file mode 100644
index 509d2ba..0000000
--- a/core/modules/link/link.info.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-name: Link
-type: module
-description: 'Provides a simple link field type.'
-core: 8.x
-package: Field types
-version: VERSION
-dependencies:
-  - field
diff --git a/core/modules/link/link.module b/core/modules/link/link.module
deleted file mode 100644
index 0e830df..0000000
--- a/core/modules/link/link.module
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-
-/**
- * @file
- * Defines simple link field types.
- */
-
-use Drupal\Component\Utility\String;
-
-/**
- * Implements hook_help().
- */
-function link_help($path, $arg) {
-  switch ($path) {
-    case 'admin/help#link':
-      $output = '';
-      $output .= '<h3>' . t('About') . '</h3>';
-      $output .= '<p>' . t('The Link module allows you to create fields that contain external URLs and optional link text. See the <a href="!field">Field module help</a> and the <a href="!field_ui">Field UI help</a> pages for general information on fields and how to create and manage them. For more information, see the <a href="!link_documentation">online documentation for the Link module</a>.', array('!field' => \Drupal::url('help.page', array('name' => 'field')), '!field_ui' => \Drupal::url('help.page', array('name' => 'field_ui')), '!link_documentation' => 'https://drupal.org/documentation/modules/link')) . '</p>';
-      $output .= '<h3>' . t('Uses') . '</h3>';
-      $output .= '<dl>';
-      $output .= '<dt>' . t('Managing and displaying link fields') . '</dt>';
-      $output .= '<dd>' . t('The <em>settings</em> and the <em>display</em> of the link field can be configured separately. See the <a href="!field_ui">Field UI help</a> for more information on how to manage fields and their display.', array('!field_ui' => \Drupal::url('help.page', array('name' => 'field_ui')))) . '</dd>';
-      $output .= '<dt>' . t('Adding link text') . '</dt>';
-      $output .= '<dd>' . t('In the field settings you can define additional link text to be <em>optional</em> or <em>required</em> in any link field.') . '</dd>';
-      $output .= '<dt>' . t('Displaying link text') . '</dt>';
-      $output .= '<dd>' . t('If link text has been submitted for a URL, then by default this link text is displayed as a link to the URL. If you want to display both the link text <em>and</em> the URL, choose the appropriate link format from the drop-down menu in the <em>Manage display</em> page. If you only want to display the URL even if link text has been submitted, choose <em>Link</em> as the format, and then change its <em>Format settings</em> to display <em>URL only</em>.') . '</dd>';
-      $output .= '<dt>' . t('Adding attributes to links') . '</dt>';
-      $output .= '<dd>' . t('You can add attributes to links, by changing the <em>Format settings</em> in the <em>Manage display</em> page. Adding <em>rel="nofollow"</em> notifies search engines that links should not be followed.') . '</dd>';
-      $output .= '<dt>' . t('Validating URLs') . '</dt>';
-      $output .= '<dd>' . t('All links are validated after a link field is filled in. They can include anchors or query strings. Links need to start with either the scheme name <em>http</em> or <em>https</em>; other scheme names (for example ftp or git) are not supported.') . '</dd>';
-      $output .= '</dl>';
-    return $output;
-  }
-}
-
-/**
- * Implements hook_theme().
- */
-function link_theme() {
-  return array(
-    'link_formatter_link_separate' => array(
-      'variables' => array('title' => NULL, 'url_title' => NULL, 'href' => NULL, 'options' => array()),
-      'template' => 'link-formatter-link-separate',
-    ),
-  );
-}
-
-/**
- * Prepares variables for separated link field templates.
- *
- * This template outputs a separate title and link.
- *
- * Default template: link-formatter-link-separate.html.twig.
- *
- * @param array $variables
- *   An associative array containing:
- *   - title: (optional) A descriptive or alternate title for the link, which
- *     may be different than the actual link text.
- *   - url_title: The anchor text for the link.
- *   - href: The link URL.
- *   - options: (optional) An array of options to pass to l().
- */
-function template_preprocess_link_formatter_link_separate(&$variables) {
-  if (!empty($variables['title'])) {
-    $variables['title'] = String::checkPlain($variables['title']);
-  }
-  $variables['link'] = l($variables['url_title'], $variables['href'], $variables['options']);
-}
diff --git a/core/modules/migrate_drupal/config/migrate.migration.d6_text_settings.yml b/core/modules/migrate_drupal/config/migrate.migration.d6_text_settings.yml
index fb5dea5..348a976 100644
--- a/core/modules/migrate_drupal/config/migrate.migration.d6_text_settings.yml
+++ b/core/modules/migrate_drupal/config/migrate.migration.d6_text_settings.yml
@@ -7,4 +7,4 @@ process:
   default_summary_length: teaser_length
 destination:
   plugin: d8_config
-  config_name: text.settings
+  config_name: field.settings
diff --git a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6TextSettings.php b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6TextSettings.php
index 02ba13a..b3dfb7f 100644
--- a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6TextSettings.php
+++ b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/Dump/Drupal6TextSettings.php
@@ -10,7 +10,7 @@
 use Drupal\Core\Database\Connection;
 
 /**
- * Database dump for testing text.settings.yml migration.
+ * Database dump for testing field.settings.yml migration.
  */
 class Drupal6TextSettings {
 
diff --git a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateTextConfigsTest.php b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateTextConfigsTest.php
index e47e99b..4a63dbd 100644
--- a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateTextConfigsTest.php
+++ b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateTextConfigsTest.php
@@ -21,21 +21,21 @@ class MigrateTextConfigsTest extends MigrateDrupalTestBase {
    *
    * @var array
    */
-  public static $modules = array('text');
+  public static $modules = array('field');
 
   /**
    * {@inheritdoc}
    */
   public static function getInfo() {
     return array(
-      'name'  => 'Migrate variables to text.settings.yml',
-      'description'  => 'Upgrade variables to text.settings.yml',
+      'name'  => 'Migrate variables to field.settings.yml',
+      'description'  => 'Upgrade variables to field.settings.yml',
       'group' => 'Migrate Drupal',
     );
   }
 
   /**
-   * Tests migration of text variables to text.settings.yml.
+   * Tests migration of text variables to field.settings.yml.
    */
   public function testTextSettings() {
     $migration = entity_load('migration', 'd6_text_settings');
@@ -45,7 +45,7 @@ public function testTextSettings() {
     $this->prepare($migration, $dumps);
     $executable = new MigrateExecutable($migration, new MigrateMessage());
     $executable->import();
-    $config = \Drupal::config('text.settings');
+    $config = \Drupal::config('field.settings');
     $this->assertIdentical($config->get('default_summary_length'), 600);
   }
 
diff --git a/core/modules/number/number.info.yml b/core/modules/number/number.info.yml
deleted file mode 100644
index 21a37a7..0000000
--- a/core/modules/number/number.info.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-name: Number
-type: module
-description: 'Defines numeric field types.'
-package: Field types
-version: VERSION
-core: 8.x
-dependencies:
-  - field
diff --git a/core/modules/number/number.module b/core/modules/number/number.module
deleted file mode 100644
index abe2b45..0000000
--- a/core/modules/number/number.module
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-/**
- * @file
- * Defines numeric field types.
- */
-
-/**
- * Implements hook_help().
- */
-function number_help($path, $arg) {
-  switch ($path) {
-    case 'admin/help#number':
-      $output = '';
-      $output .= '<h3>' . t('About') . '</h3>';
-      $output .= '<p>' . t('The Number module allows you to create fields that contain various types of numeric data. See the <a href="!field">Field module help</a> and the <a href="!field_ui">Field UI help</a> pages for general information on fields and how to create and manage them. For more information, see the <a href="!number_do">online documentation for the Number module</a>.', array('!field' => \Drupal::url('help.page', array('name' => 'field')), '!field_ui' => \Drupal::url('help.page', array('name' => 'field_ui')), '!number_do' => 'https://drupal.org/documentation/modules/number')) . '</p>';
-      $output .= '<h3>' . t('Uses') . '</h3>';
-      $output .= '<dl>';
-      $output .= '<dt>' . t('Managing and displaying number fields') . '</dt>';
-      $output .= '<dd>' . t('The <em>settings</em> and the <em>display</em> of the number fields can be configured separately. See the <a href="!field_ui">Field UI help</a> for more information on how to manage fields and their display.', array('!field_ui' => \Drupal::url('help.page', array('name' => 'field_ui')))) . '</dd>';
-      $output .= '<dt>' . t('Choosing number field type') . '</dt>';
-      $output .= '<dd>' . t('When you add a number field you can choose from three types: <em>decimal</em>, <em>float</em>, or <em>integer</em>. The <em>decimal</em> number field type allows users to enter exact decimal values. The <em>float</em> number field type allows users to enter approximate decimal values. The <em>integer</em> number field type allows users to enter whole numbers, such as years (for example, 2012) or values (for example, 1, 2, 5, 305). It does not allow decimals.') . '</dd>';
-      $output .= '</dl>';
-      return $output;
-  }
-}
diff --git a/core/modules/telephone/telephone.info.yml b/core/modules/telephone/telephone.info.yml
deleted file mode 100644
index 3e27ccb..0000000
--- a/core/modules/telephone/telephone.info.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-name: Telephone
-type: module
-description: 'Defines a field type for telephone numbers.'
-package: Field types
-version: VERSION
-core: 8.x
-dependencies:
-  - field
diff --git a/core/modules/telephone/telephone.module b/core/modules/telephone/telephone.module
deleted file mode 100644
index 23099a9..0000000
--- a/core/modules/telephone/telephone.module
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-/**
- * @file
- * Defines a simple telephone number field type.
- */
-
-/**
- * Implements hook_help().
- */
-function telephone_help($path, $arg) {
-  switch ($path) {
-    case 'admin/help#telephone':
-      $output = '';
-      $output .= '<h3>' . t('About') . '</h3>';
-      $output .= '<p>' . t('The Telephone module allows you to create fields that contain telephone numbers. See the <a href="!field">Field module help</a> and the <a href="!field_ui">Field UI help</a> pages for general information on fields and how to create and manage them. For more information, see the <a href="!telephone_documentation">online documentation for the Telephone module</a>.', array('!field' => \Drupal::url('help.page', array('name' => 'field')), '!field_ui' => \Drupal::url('help.page', array('name' => 'field_ui')), '!telephone_documentation' => 'https://drupal.org/documentation/modules/telephone')) . '</p>';
-      $output .= '<h3>' . t('Uses') . '</h3>';
-      $output .= '<dl>';
-      $output .= '<dt>' . t('Managing and displaying telephone fields') . '</dt>';
-      $output .= '<dd>' . t('The <em>settings</em> and the <em>display</em> of the telephone field can be configured separately. See the <a href="!field_ui">Field UI help</a> for more information on how to manage fields and their display.', array('!field_ui' => \Drupal::url('help.page', array('name' => 'field_ui')))) . '</dd>';
-      $output .= '<dt>' . t('Displaying telephone numbers as links') . '</dt>';
-      $output .= '<dd>' . t('Telephone numbers can be displayed as links with the scheme name <em>tel:</em> by choosing the <em>Telephone</em> display format on the <em>Manage display</em> page. Any spaces will be stripped out of the link text.') . '</dd>';
-      $output .= '</dl>';
-      return $output;
-  }
-}
-
-/**
- * Implements hook_field_info_alter().
- */
-function telephone_field_info_alter(&$info) {
-  if (\Drupal::moduleHandler()->moduleExists('text')) {
-    $info['telephone']['default_formatter'] = 'text_plain';
-  }
-}
-
-
-/**
- * Implements hook_field_formatter_info_alter().
- */
-function telephone_field_formatter_info_alter(&$info) {
-  if (isset($info['text_plain'])) {
-    $info['text_plain']['field_types'][] = 'telephone';
-  }
-}
diff --git a/core/modules/text/config/text.settings.yml b/core/modules/text/config/text.settings.yml
deleted file mode 100644
index 1ff3cbc..0000000
--- a/core/modules/text/config/text.settings.yml
+++ /dev/null
@@ -1 +0,0 @@
-default_summary_length: 600
diff --git a/core/modules/text/text.info.yml b/core/modules/text/text.info.yml
deleted file mode 100644
index 71f45bd..0000000
--- a/core/modules/text/text.info.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-name: Text
-type: module
-description: 'Defines simple text field types.'
-package: Field types
-version: VERSION
-core: 8.x
-dependencies:
-  - field
-  - filter
diff --git a/core/modules/text/text.module b/core/modules/text/text.module
deleted file mode 100644
index b0eb8fa..0000000
--- a/core/modules/text/text.module
+++ /dev/null
@@ -1,192 +0,0 @@
-<?php
-
-/**
- * @file
- * Defines simple text field types.
- */
-
-use Drupal\Component\Utility\Html;
-use Drupal\Core\Entity\EntityInterface;
-
-/**
- * Implements hook_library_info().
- */
-function text_library_info() {
-  $libraries['drupal.text'] = array(
-    'title' => 'Text',
-    'version' => \Drupal::VERSION,
-    'js' => array(
-      drupal_get_path('module', 'text') . '/text.js' => array(),
-    ),
-    'dependencies' => array(
-      array('system', 'jquery'),
-      array('system', 'jquery.once'),
-      array('system', 'drupal'),
-    ),
-  );
-
-  return $libraries;
-}
-
-/**
- * Implements hook_help().
- */
-function text_help($path, $arg) {
-  switch ($path) {
-    case 'admin/help#text':
-      $output = '';
-      $output .= '<h3>' . t('About') . '</h3>';
-      $output .= '<p>' . t('The Text module allows you to create short and long text fields with optional summaries. See the <a href="!field">Field module help</a> and the <a href="!field_ui">Field UI help</a> pages for general information on fields and how to create and manage them. For more information, see the <a href="!text_documentation">online documentation for the Text module</a>.', array('!field' => \Drupal::url('help.page', array('name' => 'field')), '!field_ui' => \Drupal::url('help.page', array('name' => 'field_ui')), '!text_documentation' => 'https://drupal.org/documentation/modules/text')) . '</p>';
-      $output .= '<h3>' . t('Uses') . '</h3>';
-      $output .= '<dl>';
-      $output .= '<dt>' . t('Managing and displaying text fields') . '</dt>';
-      $output .= '<dd>' . t('The <em>settings</em> and <em>display</em> of the text field can be configured separately. See the <a href="!field_ui">Field UI help</a> for more information on how to manage fields and their display.', array('!field_ui' => \Drupal::url('help.page', array('name' => 'field_ui')))) . '</dd>';
-      $output .= '<dt>' . t('Creating short text fields') . '</dt>';
-      $output .= '<dd>' . t('If you choose <em>Text</em> as the field type on the <em>Manage fields</em> page, then a field with a single row is displayed. You can change the maximum text length in the <em>Field settings</em> when you set up the field.') . '</dd>';
-      $output .= '<dt>' . t('Creating long text fields') . '</dt>';
-      $output .= '<dd>' . t('If you choose <em>Long text</em> or <em>Long text and summary</em> on the <em>Manage fields</em> page, then users can insert text of unlimited length. On the <em>Manage form display</em> page, you can set the number of rows that are displayed to users.') . '</dd>';
-      $output .= '<dt>' . t('Trimming the text length') . '</dt>';
-      $output .= '<dd>' . t('On the <em>Manage display</em> page you can choose to display a trimmed version of the text, and if so, where to cut off the text.') . '</dd>';
-      $output .= '<dt>' . t('Displaying summaries instead of trimmed text') . '</dt>';
-      $output .= '<dd>' . t('As an alternative to using a trimmed version of the text, you can enter a separate summary by choosing the <em>Long text with summary</em> field type on the <em>Manage fields</em> page. Even when <em>Summary input</em> is enabled, and summaries are provided, you can display <em>trimmed</em> text nonetheless by choosing the appropriate format on the <em>Manage display</em> page.') . '</dd>';
-      $output .= '<dt>' . t('Using text formats and editors') . '</dt>';
-      $output .= '<dd>' . t('With the <em>Text processing</em> options you can restrict the input to <em>Plain text</em> only, or allow users to format text. Which options are available to individual users depends on the settings on the <a href="!formats">Text formats and editors page</a>. If formatted text is submitted, you can still display it without the formatting by choosing <em>Plain text</em> as the <em>Format</em> on the <em>Manage display</em> page.', array('!formats' => \Drupal::url('filter.admin_overview'))) . '</dd>';
-      $output .= '</dl>';
-    return $output;
-  }
-}
-
-/**
- * Generates a trimmed, formatted version of a text field value.
- *
- * If the end of the summary is not indicated using the <!--break--> delimiter
- * then we generate the summary automatically, trying to end it at a sensible
- * place such as the end of a paragraph, a line break, or the end of a sentence
- * (in that order of preference).
- *
- * @param $text
- *   The content for which a summary will be generated.
- * @param $format
- *   The format of the content. If the line break filter is present then we
- *   treat newlines embedded in $text as line breaks. If the htmlcorrector
- *   filter is present, it will be run on the generated summary (if different
- *   from the incoming $text).
- * @param $size
- *   The desired character length of the summary. If omitted, the default value
- *   will be used. Ignored if the special delimiter is present in $text.
- *
- * @return
- *   The generated summary.
- */
-function text_summary($text, $format = NULL, $size = NULL) {
-
-  if (!isset($size)) {
-    $size = \Drupal::config('text.settings')->get('default_summary_length');
-  }
-
-  // Find where the delimiter is in the body
-  $delimiter = strpos($text, '<!--break-->');
-
-  // If the size is zero, and there is no delimiter, the entire body is the summary.
-  if ($size == 0 && $delimiter === FALSE) {
-    return $text;
-  }
-
-  // If a valid delimiter has been specified, use it to chop off the summary.
-  if ($delimiter !== FALSE) {
-    return substr($text, 0, $delimiter);
-  }
-
-  // Retrieve the filters of the specified text format, if any.
-  if (isset($format)) {
-    $filters = entity_load('filter_format', $format)->filters();
-    // If the specified format does not exist, return nothing. $text is already
-    // filtered text, but the remainder of this function will not be able to
-    // ensure a sane and secure summary.
-    if (!$filters) {
-      return '';
-    }
-  }
-
-  // If we have a short body, the entire body is the summary.
-  if (drupal_strlen($text) <= $size) {
-    return $text;
-  }
-
-  // If the delimiter has not been specified, try to split at paragraph or
-  // sentence boundaries.
-
-  // The summary may not be longer than maximum length specified. Initial slice.
-  $summary = truncate_utf8($text, $size);
-
-  // Store the actual length of the UTF8 string -- which might not be the same
-  // as $size.
-  $max_rpos = strlen($summary);
-
-  // How much to cut off the end of the summary so that it doesn't end in the
-  // middle of a paragraph, sentence, or word.
-  // Initialize it to maximum in order to find the minimum.
-  $min_rpos = $max_rpos;
-
-  // Store the reverse of the summary. We use strpos on the reversed needle and
-  // haystack for speed and convenience.
-  $reversed = strrev($summary);
-
-  // Build an array of arrays of break points grouped by preference.
-  $break_points = array();
-
-  // A paragraph near the end of sliced summary is most preferable.
-  $break_points[] = array('</p>' => 0);
-
-  // If no complete paragraph then treat line breaks as paragraphs.
-  $line_breaks = array('<br />' => 6, '<br>' => 4);
-  // Newline only indicates a line break if line break converter
-  // filter is present.
-  if (isset($format) && $filters->has('filter_autop') && $filters->get('filter_autop')->status) {
-    $line_breaks["\n"] = 1;
-  }
-  $break_points[] = $line_breaks;
-
-  // If the first paragraph is too long, split at the end of a sentence.
-  $break_points[] = array('. ' => 1, '! ' => 1, '? ' => 1, '。' => 0, '؟ ' => 1);
-
-  // Iterate over the groups of break points until a break point is found.
-  foreach ($break_points as $points) {
-    // Look for each break point, starting at the end of the summary.
-    foreach ($points as $point => $offset) {
-      // The summary is already reversed, but the break point isn't.
-      $rpos = strpos($reversed, strrev($point));
-      if ($rpos !== FALSE) {
-        $min_rpos = min($rpos + $offset, $min_rpos);
-      }
-    }
-
-    // If a break point was found in this group, slice and stop searching.
-    if ($min_rpos !== $max_rpos) {
-      // Don't slice with length 0. Length must be <0 to slice from RHS.
-      $summary = ($min_rpos === 0) ? $summary : substr($summary, 0, 0 - $min_rpos);
-      break;
-    }
-  }
-
-  // If the htmlcorrector filter is present, apply it to the generated summary.
-  if (isset($format) && $filters->has('filter_htmlcorrector') && $filters->get('filter_htmlcorrector')->status) {
-    $summary = Html::normalize($summary);
-  }
-
-  return $summary;
-}
-
-/**
- * Implements hook_filter_format_update().
- */
-function text_filter_format_update($format) {
-  field_cache_clear();
-}
-
-/**
- * Implements hook_filter_format_disable().
- */
-function text_filter_format_disable($format) {
-  field_cache_clear();
-}
