diff --git a/core/config/schema/core.data_types.schema.yml b/core/config/schema/core.data_types.schema.yml
index ea67e43..e41cdd5 100644
--- a/core/config/schema/core.data_types.schema.yml
+++ b/core/config/schema/core.data_types.schema.yml
@@ -373,7 +373,7 @@ field_config_base:
       type: string
       label: 'Default value function'
     settings:
-      type: field.[%parent.field_type].instance_settings
+      type: field.[%parent.field_type].field_settings
     third_party_settings:
       type: sequence
       label: 'Third party settings'
@@ -409,7 +409,7 @@ core.date_format.*:
 
 # Schema for the String field type.
 
-field.string.instance_settings:
+field.string.field_settings:
   type: sequence
   label: 'String settings'
   sequence:
@@ -429,7 +429,7 @@ field.string.value:
 
 # Schema for the configuration files of the Boolean field type.
 
-field.boolean.settings:
+field.boolean.storage_settings:
   type: mapping
   label: 'Boolean settings'
   mapping:
@@ -440,7 +440,7 @@ field.boolean.settings:
       type: string
       label: 'Off label'
 
-field.boolean.instance_settings:
+field.boolean.field_settings:
   label: 'Boolean settings'
   type: mapping
   mapping: {  }
@@ -458,13 +458,13 @@ field.boolean.value:
 
 # Schema for the configuration files of the Email field type.
 
-field.email.settings:
+field.email.storage_settings:
   type: sequence
   label: 'Email settings'
   sequence:
     - type: string
 
-field.email.instance_settings:
+field.email.field_settings:
   type: sequence
   label: 'Email settings'
   sequence:
@@ -484,14 +484,14 @@ field.email.value:
 
 # Schema for configuration files of a numeric field types.
 
-field.integer.settings:
+field.integer.storage_settings:
   type: sequence
   label: 'Integer settings'
   sequence:
     - type: string
       label: 'setting'
 
-field.integer.instance_settings:
+field.integer.field_settings:
   type: mapping
   label: 'Integer'
   mapping:
@@ -519,7 +519,7 @@ field.integer.value:
           type: integer
           label: 'Value'
 
-field.decimal.settings:
+field.decimal.storage_settings:
   type: mapping
   label: 'Decimal settings'
   mapping:
@@ -530,7 +530,7 @@ field.decimal.settings:
       type: integer
       label: 'Scale'
 
-field.decimal.instance_settings:
+field.decimal.field_settings:
   type: mapping
   label: 'Decimal'
   mapping:
@@ -558,14 +558,14 @@ field.decimal.value:
            type: float
            label: 'Value'
 
-field.float.settings:
+field.float.storage_settings:
   type: sequence
   label: 'Float settings'
   sequence:
     - type: string
       label: 'setting'
 
-field.float.instance_settings:
+field.float.field_settings:
   type: mapping
   label: 'Float'
   mapping:
diff --git a/core/lib/Drupal/Core/Entity/ContentEntityDatabaseStorage.php b/core/lib/Drupal/Core/Entity/ContentEntityDatabaseStorage.php
index f68a0da..a61c5bb 100644
--- a/core/lib/Drupal/Core/Entity/ContentEntityDatabaseStorage.php
+++ b/core/lib/Drupal/Core/Entity/ContentEntityDatabaseStorage.php
@@ -1506,7 +1506,7 @@ public function onBundleRename($bundle, $bundle_new) {
     // configurable fields, so we use the specific API.
     // @todo Use the unified store of deleted field definitions instead in
     //   https://www.drupal.org/node/2282119
-    $field_definitions += entity_load_multiple_by_properties('field_instance_config', array('entity_type' => $this->entityTypeId, 'bundle' => $bundle, 'deleted' => TRUE, 'include_deleted' => TRUE));
+    $field_definitions += entity_load_multiple_by_properties('field_config', array('entity_type' => $this->entityTypeId, 'bundle' => $bundle, 'deleted' => TRUE, 'include_deleted' => TRUE));
 
     foreach ($field_definitions as $field_definition) {
       $storage_definition = $field_definition->getFieldStorageDefinition();
diff --git a/core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php b/core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php
index a4849be..6d75946 100644
--- a/core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php
+++ b/core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php
@@ -10,8 +10,6 @@
 use Drupal\Component\Utility\String;
 use Drupal\Core\Field\FieldDefinitionInterface;
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
-use Drupal\Core\Cache\Cache;
-use Drupal\field\FieldInstanceConfigInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
 abstract class ContentEntityStorageBase extends EntityStorageBase implements FieldableEntityStorageInterface {
@@ -137,7 +135,7 @@ public function purgeFieldData(FieldDefinitionInterface $field_definition, $batc
    * Reads values to be purged for a single field.
    *
    * This method is called during field data purge, on fields for which
-   * onFieldDelete() or onFieldInstanceDelete() has previously run.
+   * onFieldDelete() or onFieldDelete() has previously run.
    *
    * @param \Drupal\Core\Field\FieldDefinitionInterface $field_definition
    *   The field definition.
diff --git a/core/lib/Drupal/Core/Entity/EntityViewBuilderInterface.php b/core/lib/Drupal/Core/Entity/EntityViewBuilderInterface.php
index 93e6528..eca5196 100644
--- a/core/lib/Drupal/Core/Entity/EntityViewBuilderInterface.php
+++ b/core/lib/Drupal/Core/Entity/EntityViewBuilderInterface.php
@@ -109,7 +109,7 @@ public function resetCache(array $entities = NULL);
    * @param array $display_options
    *  Can be either:
    *   - The name of a view mode. The field will be displayed according to the
-   *     display settings specified for this view mode in the $instance
+   *     display settings specified for this view mode in the $field
    *     definition for the field in the entity's bundle. If no display settings
    *     are found for the view mode, the settings for the 'default' view mode
    *     will be used.
diff --git a/core/lib/Drupal/Core/Field/BaseFieldDefinition.php b/core/lib/Drupal/Core/Field/BaseFieldDefinition.php
index 20b31ad..4a67e45 100644
--- a/core/lib/Drupal/Core/Field/BaseFieldDefinition.php
+++ b/core/lib/Drupal/Core/Field/BaseFieldDefinition.php
@@ -62,7 +62,7 @@ public static function create($type) {
     // settings for the field type.
     // @todo Cleanup in https://drupal.org/node/2116341.
     $field_type_manager = \Drupal::service('plugin.manager.field.field_type');
-    $default_settings = $field_type_manager->getDefaultSettings($type) + $field_type_manager->getDefaultInstanceSettings($type);
+    $default_settings = $field_type_manager->getDefaultStorageSettings($type) + $field_type_manager->getDefaultFieldSettings($type);
     $field_definition->itemDefinition->setSettings($default_settings);
     return $field_definition;
   }
diff --git a/core/lib/Drupal/Core/Field/Entity/BaseFieldOverride.php b/core/lib/Drupal/Core/Field/Entity/BaseFieldOverride.php
index 75f679e..9fbe75c 100644
--- a/core/lib/Drupal/Core/Field/Entity/BaseFieldOverride.php
+++ b/core/lib/Drupal/Core/Field/Entity/BaseFieldOverride.php
@@ -155,7 +155,7 @@ protected function getBaseFieldDefinition() {
    */
   public function preSave(EntityStorageInterface $storage) {
     // Set the default instance settings.
-    $this->settings += \Drupal::service('plugin.manager.field.field_type')->getDefaultInstanceSettings($this->getType());
+    $this->settings += \Drupal::service('plugin.manager.field.field_type')->getDefaultFieldSettings($this->getType());
 
     // Call the parent's presave method to perform validate and calculate
     // dependencies.
diff --git a/core/lib/Drupal/Core/Field/FieldConfigStorageBase.php b/core/lib/Drupal/Core/Field/FieldConfigStorageBase.php
index 00fbe35..4023599 100644
--- a/core/lib/Drupal/Core/Field/FieldConfigStorageBase.php
+++ b/core/lib/Drupal/Core/Field/FieldConfigStorageBase.php
@@ -28,7 +28,7 @@
   protected function mapFromStorageRecords(array $records) {
     foreach ($records as &$record) {
       $class = $this->fieldTypeManager->getPluginClass($record['field_type']);
-      $record['settings'] = $class::instanceSettingsFromConfigData($record['settings']);
+      $record['settings'] = $class::fieldSettingsFromConfigData($record['settings']);
     }
     return parent::mapFromStorageRecords($records);
   }
@@ -39,7 +39,7 @@ protected function mapFromStorageRecords(array $records) {
   protected function mapToStorageRecord(EntityInterface $entity) {
     $record = parent::mapToStorageRecord($entity);
     $class = $this->fieldTypeManager->getPluginClass($record['field_type']);
-    $record['settings'] = $class::instanceSettingsToConfigData($record['settings']);
+    $record['settings'] = $class::fieldSettingsFromConfigData($record['settings']);
     return $record;
   }
 
diff --git a/core/lib/Drupal/Core/Field/FieldDefinitionInterface.php b/core/lib/Drupal/Core/Field/FieldDefinitionInterface.php
index 2236d59..9d1e446 100644
--- a/core/lib/Drupal/Core/Field/FieldDefinitionInterface.php
+++ b/core/lib/Drupal/Core/Field/FieldDefinitionInterface.php
@@ -28,16 +28,16 @@
  * information comes from. For example, field.module provides an implementation
  * based on two levels of configuration. It allows the site administrator to add
  * custom fields to any entity type and bundle via the "field_storage_config"
- * and "field_instance_config" configuration entities. The former for storing
+ * and "field_config" configuration entities. The former for storing
  * configuration that is independent of which entity type and bundle the field
  * is added to, and the latter for storing configuration that is specific to the
- * entity type and bundle. The class that implements "field_instance_config"
+ * entity type and bundle. The class that implements "field_config"
  * configuration entities also implements this interface, returning information
  * from either itself, or from the corresponding "field_storage_config"
  * configuration, as appropriate.
  *
  * However, entity base fields, such as $node->title, are not managed by
- * field.module and its "field_storage_config"/"field_instance_config"
+ * field.module and its "field_storage_config"/"field_config"
  * configuration entities. Therefore, their definitions are provided by
  * different objects based on the class \Drupal\Core\Field\BaseFieldDefinition,
  * which implements this interface as well.
diff --git a/core/lib/Drupal/Core/Field/FieldItemBase.php b/core/lib/Drupal/Core/Field/FieldItemBase.php
index 715bbb7..4f14125 100644
--- a/core/lib/Drupal/Core/Field/FieldItemBase.php
+++ b/core/lib/Drupal/Core/Field/FieldItemBase.php
@@ -28,14 +28,14 @@
   /**
    * {@inheritdoc}
    */
-  public static function defaultSettings() {
+  public static function defaultStorageSettings() {
     return array();
   }
 
   /**
    * {@inheritdoc}
    */
-  public static function defaultInstanceSettings() {
+  public static function defaultFieldSettings() {
     return array();
   }
 
@@ -245,42 +245,42 @@ public function deleteRevision() { }
   /**
    * {@inheritdoc}
    */
-  public function settingsForm(array &$form, FormStateInterface $form_state, $has_data) {
+  public function storageSettingsForm(array &$form, FormStateInterface $form_state, $has_data) {
     return array();
   }
 
   /**
    * {@inheritdoc}
    */
-  public function instanceSettingsForm(array $form, FormStateInterface $form_state) {
+  public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
     return array();
   }
 
   /**
    * {@inheritdoc}
    */
-  public static function settingsToConfigData(array $settings) {
+  public static function storageSettingsToConfigData(array $settings) {
     return $settings;
   }
 
   /**
    * {@inheritdoc}
    */
-  public static function settingsFromConfigData(array $settings) {
+  public static function storageSettingsFromConfigData(array $settings) {
     return $settings;
   }
 
   /**
    * {@inheritdoc}
    */
-  public static function instanceSettingsToConfigData(array $settings) {
+  public static function fieldSettingsToConfigData(array $settings) {
     return $settings;
   }
 
   /**
    * {@inheritdoc}
    */
-  public static function instanceSettingsFromConfigData(array $settings) {
+  public static function fieldSettingsFromConfigData(array $settings) {
     return $settings;
   }
 
diff --git a/core/lib/Drupal/Core/Field/FieldItemInterface.php b/core/lib/Drupal/Core/Field/FieldItemInterface.php
index 8577a04..131edcd 100644
--- a/core/lib/Drupal/Core/Field/FieldItemInterface.php
+++ b/core/lib/Drupal/Core/Field/FieldItemInterface.php
@@ -55,7 +55,7 @@ public static function mainPropertyName();
    *
    * This method is static because the field schema information is needed on
    * creation of the field. FieldItemInterface objects instantiated at that
-   * time are not reliable as field instance settings might be missing.
+   * time are not reliable as field settings might be missing.
    *
    * Computed fields having no schema should return an empty array.
    *
@@ -217,20 +217,20 @@ public function delete();
   public function deleteRevision();
 
   /**
+   * Defines the storage-level settings for this plugin.
+   *
+   * @return array
+   *   A list of default settings, keyed by the setting name.
+   */
+  public static function defaultStorageSettings();
+
+  /**
    * Defines the field-level settings for this plugin.
    *
    * @return array
    *   A list of default settings, keyed by the setting name.
    */
-  public static function defaultSettings();
-
-  /**
-   * Defines the instance-level settings for this plugin.
-   *
-   * @return array
-   *   A list of default settings, keyed by the setting name.
-   */
-  public static function defaultInstanceSettings();
+  public static function defaultFieldSettings();
 
   /**
    * Returns a settings array that can be stored as a configuration value.
@@ -264,12 +264,12 @@ public static function defaultInstanceSettings();
    *
    * @see \Drupal\Core\Config\Config::set()
    */
-  public static function settingsToConfigData(array $settings);
+  public static function storageSettingsToConfigData(array $settings);
 
   /**
    * Returns a settings array in the field type's canonical representation.
    *
-   * This function does the inverse of static::settingsToConfigData(). It's
+   * This function does the inverse of static::storageSettingsToConfigData(). It's
    * called when loading a field's settings from a configuration object.
    *
    * @param array $settings
@@ -279,58 +279,56 @@ public static function settingsToConfigData(array $settings);
    *   The settings, in the representation expected by the field type and code
    *   that interacts with it.
    *
-   * @see \Drupal\Core\Field\FieldItemInterface::settingsToConfigData()
+   * @see \Drupal\Core\Field\FieldItemInterface::storageSettingsToConfigData()
    */
-  public static function settingsFromConfigData(array $settings);
+  public static function storageSettingsFromConfigData(array $settings);
 
   /**
    * Returns a settings array that can be stored as a configuration value.
    *
-   * Same as static::settingsToConfigData(), but for the field's instance
-   * settings.
+   * Same as static::storageSettingsToConfigData(), but for the field's settings.
    *
    * @param array $settings
-   *   The field's instance settings in the field type's canonical
-   *   representation.
+   *   The field's settings in the field type's canonical representation.
    *
    * @return array
    *   An array (either the unmodified $settings or a modified representation)
    *   that is suitable for storing as a deployable configuration value.
    *
-   * @see \Drupal\Core\Field\FieldItemInterface::settingsToConfigData()
+   * @see \Drupal\Core\Field\FieldItemInterface::storageSettingsToConfigData()
    */
-  public static function instanceSettingsToConfigData(array $settings);
+  public static function fieldSettingsToConfigData(array $settings);
 
   /**
    * Returns a settings array in the field type's canonical representation.
    *
-   * This function does the inverse of static::instanceSettingsToConfigData().
-   * It's called when loading a field's instance settings from a configuration
+   * This function does the inverse of static::fieldSettingsToConfigData().
+   * It's called when loading a field's settings from a configuration
    * object.
    *
    * @param array $settings
-   *   The field's instance settings, as it is stored within a configuration
+   *   The field's settings, as it is stored within a configuration
    *   object.
    *
    * @return array
-   *   The instance settings, in the representation expected by the field type
+   *   The field settings, in the representation expected by the field type
    *   and code that interacts with it.
    *
-   * @see \Drupal\Core\Field\FieldItemInterface::instanceSettingsToConfigData()
+   * @see \Drupal\Core\Field\FieldItemInterface::fieldSettingsToConfigData()
    */
-  public static function instanceSettingsFromConfigData(array $settings);
+  public static function fieldSettingsFromConfigData(array $settings);
 
   /**
-   * Returns a form for the field-level settings.
+   * Returns a form for the storage-level settings.
    *
    * Invoked from \Drupal\field_ui\Form\FieldStorageEditForm to allow
-   * administrators to configure field-level settings.
+   * administrators to configure storage-level settings.
    *
-   * Field storage might reject field definition changes that affect the field
-   * storage schema if the field already has data. When the $has_data parameter
-   * is TRUE, the form should not allow changing the settings that take part in
-   * the schema() method. It is recommended to set #access to FALSE on the
-   * corresponding elements.
+   * Field storage might reject settings changes that affect the field
+   * storage schema if the storage already has data. When the $has_data
+   * parameter is TRUE, the form should not allow changing the settings that
+   * take part in the schema() method. It is recommended to set #access to
+   * FALSE on the corresponding elements.
    *
    * @param array $form
    *   The form where the settings form is being included in.
@@ -342,13 +340,13 @@ public static function instanceSettingsFromConfigData(array $settings);
    * @return
    *   The form definition for the field settings.
    */
-  public function settingsForm(array &$form, FormStateInterface $form_state, $has_data);
+  public function storageSettingsForm(array &$form, FormStateInterface $form_state, $has_data);
 
   /**
-   * Returns a form for the instance-level settings.
+   * Returns a form for the field-level settings.
    *
-   * Invoked from \Drupal\field_ui\Form\FieldInstanceEditForm to allow
-   * administrators to configure instance-level settings.
+   * Invoked from \Drupal\field_ui\Form\FieldEditForm to allow
+   * administrators to configure field-level settings.
    *
    * @param array $form
    *   The form where the settings form is being included in.
@@ -356,8 +354,8 @@ public function settingsForm(array &$form, FormStateInterface $form_state, $has_
    *   The form state of the (entire) configuration form.
    *
    * @return array
-   *   The form definition for the field instance settings.
+   *   The form definition for the field settings.
    */
-  public function instanceSettingsForm(array $form, FormStateInterface $form_state);
+  public function fieldSettingsForm(array $form, FormStateInterface $form_state);
 
 }
diff --git a/core/lib/Drupal/Core/Field/FieldItemListInterface.php b/core/lib/Drupal/Core/Field/FieldItemListInterface.php
index 402aa19..30d4180 100644
--- a/core/lib/Drupal/Core/Field/FieldItemListInterface.php
+++ b/core/lib/Drupal/Core/Field/FieldItemListInterface.php
@@ -184,7 +184,7 @@ public function view($display_options = array());
   /**
    * Returns a form for the default value input.
    *
-   * Invoked from \Drupal\field_ui\Form\FieldInstanceEditForm to allow
+   * Invoked from \Drupal\field_ui\Form\FieldEditForm to allow
    * administrators to configure instance-level default value.
    *
    * @param array $form
@@ -200,7 +200,7 @@ public function defaultValuesForm(array &$form, FormStateInterface $form_state);
   /**
    * Validates the submitted default value.
    *
-   * Invoked from \Drupal\field_ui\Form\FieldInstanceEditForm to allow
+   * Invoked from \Drupal\field_ui\Form\FieldEditForm to allow
    * administrators to configure instance-level default value.
    *
    * @param array $element
@@ -215,7 +215,7 @@ public function defaultValuesFormValidate(array $element, array &$form, FormStat
   /**
    * Processes the submitted default value.
    *
-   * Invoked from \Drupal\field_ui\Form\FieldInstanceEditForm to allow
+   * Invoked from \Drupal\field_ui\Form\FieldEditForm to allow
    * administrators to configure instance-level default value.
    *
    * @param array $element
diff --git a/core/lib/Drupal/Core/Field/FieldTypePluginManager.php b/core/lib/Drupal/Core/Field/FieldTypePluginManager.php
index 6a5f39a..b3e9473 100644
--- a/core/lib/Drupal/Core/Field/FieldTypePluginManager.php
+++ b/core/lib/Drupal/Core/Field/FieldTypePluginManager.php
@@ -49,11 +49,11 @@ public function processDefinition(&$definition, $plugin_id) {
   /**
    * {@inheritdoc}
    */
-  public function getDefaultSettings($type) {
+  public function getDefaultStorageSettings($type) {
     $plugin_definition = $this->getDefinition($type, FALSE);
     if (!empty($plugin_definition['class'])) {
       $plugin_class = DefaultFactory::getPluginClass($type, $plugin_definition);
-      return $plugin_class::defaultSettings();
+      return $plugin_class::defaultStorageSettings();
     }
     return array();
   }
@@ -61,11 +61,11 @@ public function getDefaultSettings($type) {
   /**
    * {@inheritdoc}
    */
-  public function getDefaultInstanceSettings($type) {
+  public function getDefaultFieldSettings($type) {
     $plugin_definition = $this->getDefinition($type, FALSE);
     if (!empty($plugin_definition['class'])) {
       $plugin_class = DefaultFactory::getPluginClass($type, $plugin_definition);
-      return $plugin_class::defaultInstanceSettings();
+      return $plugin_class::defaultFieldSettings();
     }
     return array();
   }
diff --git a/core/lib/Drupal/Core/Field/FieldTypePluginManagerInterface.php b/core/lib/Drupal/Core/Field/FieldTypePluginManagerInterface.php
index cf47637..c3e4bcc 100644
--- a/core/lib/Drupal/Core/Field/FieldTypePluginManagerInterface.php
+++ b/core/lib/Drupal/Core/Field/FieldTypePluginManagerInterface.php
@@ -17,28 +17,28 @@
 interface FieldTypePluginManagerInterface extends PluginManagerInterface {
 
   /**
-   * Returns the default instance-level settings for a field type.
-   *
-   * @param string $type
-   *   A field type name.
-   *
-   * @return array
-   *   The instance's default settings, as provided by the plugin definition, or
-   *   an empty array if type or settings are undefined.
-   */
-  public function getDefaultInstanceSettings($type);
-
-  /**
    * Returns the default field-level settings for a field type.
    *
    * @param string $type
    *   A field type name.
    *
    * @return array
+   *   The field's default settings, as provided by the plugin definition, or
+   *   an empty array if type or settings are undefined.
+   */
+  public function getDefaultFieldSettings($type);
+
+  /**
+   * Returns the default storage-level settings for a field type.
+   *
+   * @param string $type
+   *   A field type name.
+   *
+   * @return array
    *   The type's default settings, as provided by the plugin definition, or an
    *   empty array if type or settings are undefined.
    */
-  public function getDefaultSettings($type);
+  public function getDefaultStorageSettings($type);
 
   /**
    * Gets the definition of all field types that can be added via UI.
diff --git a/core/lib/Drupal/Core/Field/FormatterInterface.php b/core/lib/Drupal/Core/Field/FormatterInterface.php
index 08c12d2..b809172 100644
--- a/core/lib/Drupal/Core/Field/FormatterInterface.php
+++ b/core/lib/Drupal/Core/Field/FormatterInterface.php
@@ -19,7 +19,7 @@
   /**
    * Returns a form to configure settings for the formatter.
    *
-   * Invoked from \Drupal\field_ui\Form\FieldInstanceEditForm to allow
+   * Invoked from \Drupal\field_ui\Form\FieldEditForm to allow
    * administrators to configure the formatter. The field_ui module takes care
    * of handling submitted form values.
    *
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/BooleanItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/BooleanItem.php
index 6819f79..db54590 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/BooleanItem.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/BooleanItem.php
@@ -30,11 +30,11 @@ class BooleanItem extends FieldItemBase implements AllowedValuesInterface {
   /**
    * {@inheritdoc}
    */
-  public static function defaultSettings() {
+  public static function defaultStorageSettings() {
     return array(
       'on_label' => t('On'),
       'off_label' => t('Off'),
-    ) + parent::defaultSettings();
+    ) + parent::defaultStorageSettings();
   }
 
   /**
@@ -65,7 +65,7 @@ public static function schema(FieldStorageDefinitionInterface $field_definition)
   /**
    * {@inheritdoc}
    */
-  public function settingsForm(array &$form, FormStateInterface $form_state, $has_data) {
+  public function storageSettingsForm(array &$form, FormStateInterface $form_state, $has_data) {
     $element['on_label'] = array(
       '#type' => 'textfield',
       '#title' => $this->t('"On" label'),
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/DecimalItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/DecimalItem.php
index 3f371fb..95f5ecb 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/DecimalItem.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/DecimalItem.php
@@ -27,11 +27,11 @@ class DecimalItem extends NumericItemBase {
   /**
    * {@inheritdoc}
    */
-  public static function defaultSettings() {
+  public static function defaultStorageSettings() {
     return array(
       'precision' => 10,
       'scale' => 2,
-    ) + parent::defaultSettings();
+    ) + parent::defaultStorageSettings();
   }
 
   /**
@@ -64,7 +64,7 @@ public static function schema(FieldStorageDefinitionInterface $field_definition)
   /**
    * {@inheritdoc}
    */
-  public function settingsForm(array &$form, FormStateInterface $form_state, $has_data) {
+  public function storageSettingsForm(array &$form, FormStateInterface $form_state, $has_data) {
     $element = array();
     $settings = $this->getSettings();
 
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php
index 5233910..8a4fd58 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem.php
@@ -37,20 +37,20 @@ class EntityReferenceItem extends FieldItemBase {
   /**
    * {@inheritdoc}
    */
-  public static function defaultSettings() {
+  public static function defaultStorageSettings() {
     return array(
       'target_type' => \Drupal::moduleHandler()->moduleExists('node') ? 'node' : 'user',
       'target_bundle' => NULL,
-    ) + parent::defaultSettings();
+    ) + parent::defaultStorageSettings();
   }
 
   /**
    * {@inheritdoc}
    */
-  public static function defaultInstanceSettings() {
+  public static function defaultFieldSettings() {
     return array(
       'handler' => 'default',
-    ) + parent::defaultInstanceSettings();
+    ) + parent::defaultFieldSettings();
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/IntegerItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/IntegerItem.php
index 2d3fa30..207e966 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/IntegerItem.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/IntegerItem.php
@@ -26,16 +26,16 @@ class IntegerItem extends NumericItemBase {
   /**
    * {@inheritdoc}
    */
-  public static function defaultSettings() {
+  public static function defaultStorageSettings() {
     return array(
       'unsigned' => FALSE,
-    ) + parent::defaultSettings();
+    ) + parent::defaultStorageSettings();
   }
 
   /**
    * {@inheritdoc}
    */
-  public static function defaultInstanceSettings() {
+  public static function defaultFieldSettings() {
     return array(
       'min' => '',
       'max' => '',
@@ -44,7 +44,7 @@ public static function defaultInstanceSettings() {
       // Valid size property values include: 'tiny', 'small', 'medium', 'normal'
       // and 'big'.
       'size' => 'normal',
-    ) + parent::defaultInstanceSettings();
+    ) + parent::defaultFieldSettings();
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/NumericItemBase.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/NumericItemBase.php
index 28846bb..45dbab1 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/NumericItemBase.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/NumericItemBase.php
@@ -18,19 +18,19 @@
   /**
    * {@inheritdoc}
    */
-  public static function defaultInstanceSettings() {
+  public static function defaultFieldSettings() {
     return array(
       'min' => '',
       'max' => '',
       'prefix' => '',
       'suffix' => '',
-    ) + parent::defaultInstanceSettings();
+    ) + parent::defaultFieldSettings();
   }
 
   /**
    * {@inheritdoc}
    */
-  public function instanceSettingsForm(array $form, FormStateInterface $form_state) {
+  public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
     $element = array();
     $settings = $this->getSettings();
 
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/StringItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/StringItem.php
index ba72dc3..6139f74 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/StringItem.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/StringItem.php
@@ -28,10 +28,10 @@ class StringItem extends FieldItemBase {
   /**
    * {@inheritdoc}
    */
-  public static function defaultSettings() {
+  public static function defaultStorageSettings() {
     return array(
       'max_length' => 255,
-    ) + parent::defaultSettings();
+    ) + parent::defaultStorageSettings();
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UriItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UriItem.php
index dbef995..2e4703e 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UriItem.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UriItem.php
@@ -29,10 +29,10 @@ class UriItem extends StringItem {
   /**
    * {@inheritdoc}
    */
-  public static function defaultSettings() {
+  public static function defaultStorageSettings() {
     return array(
       'max_length' => 2048,
-    ) + parent::defaultSettings();
+    ) + parent::defaultStorageSettings();
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UuidItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UuidItem.php
index 50df9bb..e787029 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UuidItem.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/UuidItem.php
@@ -26,10 +26,10 @@ class UuidItem extends StringItem {
   /**
    * {@inheritdoc}
    */
-  public static function defaultSettings() {
+  public static function defaultStorageSettings() {
     return array(
       'max_length' => 128,
-    ) + parent::defaultSettings();
+    ) + parent::defaultStorageSettings();
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Field/WidgetInterface.php b/core/lib/Drupal/Core/Field/WidgetInterface.php
index 6dc5608..a4d0fe8 100644
--- a/core/lib/Drupal/Core/Field/WidgetInterface.php
+++ b/core/lib/Drupal/Core/Field/WidgetInterface.php
@@ -25,7 +25,7 @@
   /**
    * Returns a form to configure settings for the widget.
    *
-   * Invoked from \Drupal\field_ui\Form\FieldInstanceEditForm to allow
+   * Invoked from \Drupal\field_ui\Form\FieldEditForm to allow
    * administrators to configure the widget. The field_ui module takes care of
    * handling submitted form values.
    *
diff --git a/core/modules/block_content/block_content.module b/core/modules/block_content/block_content.module
index dadcf4b..188eee7 100644
--- a/core/modules/block_content/block_content.module
+++ b/core/modules/block_content/block_content.module
@@ -6,7 +6,7 @@
  */
 
 use Drupal\Core\Routing\RouteMatchInterface;
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Entity\FieldStorageConfig;
 
 /**
@@ -73,12 +73,12 @@ function block_content_entity_type_alter(array &$entity_types) {
  *   (optional) The label for the body instance. Defaults to 'Body'
  *
  * @return array()
- *   Body field instance.
+ *   Body field.
  */
 function block_content_add_body_field($block_type_id, $label = 'Body') {
   // Add or remove the body field, as needed.
   $field_storage = FieldStorageConfig::loadByName('block_content', 'body');
-  $instance = FieldInstanceConfig::loadByName('block_content', $block_type_id, 'body');
+  $field = FieldConfig::loadByName('block_content', $block_type_id, 'body');
   if (empty($field_storage)) {
     $field_storage = entity_create('field_storage_config', array(
       'name' => 'body',
@@ -87,14 +87,14 @@ function block_content_add_body_field($block_type_id, $label = 'Body') {
     ));
     $field_storage->save();
   }
-  if (empty($instance)) {
-    $instance = entity_create('field_instance_config', array(
+  if (empty($field)) {
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => $block_type_id,
       'label' => $label,
       'settings' => array('display_summary' => FALSE),
     ));
-    $instance->save();
+    $field->save();
 
     // Assign widget settings for the 'default' form mode.
     entity_get_form_display('block_content', $block_type_id, 'default')
@@ -112,5 +112,5 @@ function block_content_add_body_field($block_type_id, $label = 'Body') {
       ->save();
   }
 
-  return $instance;
+  return $field;
 }
diff --git a/core/modules/block_content/src/Tests/BlockContentFieldTest.php b/core/modules/block_content/src/Tests/BlockContentFieldTest.php
index 2b8023c..7fd93d3 100644
--- a/core/modules/block_content/src/Tests/BlockContentFieldTest.php
+++ b/core/modules/block_content/src/Tests/BlockContentFieldTest.php
@@ -31,11 +31,11 @@ class BlockContentFieldTest extends BlockContentTestBase {
   protected $fieldStorage;
 
   /**
-   * The created instance.
+   * The created field.
    *
-   * @var \Drupal\field\Entity\FieldInstanceConfig
+   * @var \Drupal\field\Entity\FieldConfig
    */
-  protected $instance;
+  protected $field;
 
   /**
    * The block type.
@@ -61,14 +61,14 @@ public function testBlockFields() {
       'cardinality' => 2,
     ));
     $this->fieldStorage->save();
-    $this->instance = entity_create('field_instance_config', array(
+    $this->field = entity_create('field_config', array(
       'field_storage' => $this->fieldStorage,
       'bundle' => 'link',
       'settings' => array(
         'title' => DRUPAL_OPTIONAL,
       ),
     ));
-    $this->instance->save();
+    $this->field->save();
     entity_get_form_display('block_content', 'link', 'default')
       ->setComponent($this->fieldStorage->getName(), array(
         'type' => 'link_default',
diff --git a/core/modules/comment/comment.module b/core/modules/comment/comment.module
index 54bfefa..9abfba0 100644
--- a/core/modules/comment/comment.module
+++ b/core/modules/comment/comment.module
@@ -26,7 +26,7 @@
 use Drupal\Core\Render\Element;
 use Drupal\Core\Url;
 use Drupal\field\Entity\FieldStorageConfig;
-use Drupal\field\FieldInstanceConfigInterface;
+use Drupal\field\FieldConfigInterface;
 use Drupal\field\FieldStorageConfigInterface;
 use Drupal\file\FileInterface;
 use Drupal\user\EntityOwnerInterface;
@@ -133,16 +133,16 @@ function comment_theme() {
 }
 
 /**
- * Implements hook_ENTITY_TYPE_create() for 'field_instance_config'.
+ * Implements hook_ENTITY_TYPE_create() for 'field_config'.
  */
-function comment_field_instance_config_create(FieldInstanceConfigInterface $instance) {
-  if ($instance->getType() == 'comment' && !$instance->isSyncing()) {
+function comment_field_config_create(FieldConfigInterface $field) {
+  if ($field->getType() == 'comment' && !$field->isSyncing()) {
     // Assign default values for the field instance.
-    if (!isset($instance->default_value)) {
-      $instance->default_value = array();
+    if (!isset($field->default_value)) {
+      $field->default_value = array();
     }
-    $instance->default_value += array(array());
-    $instance->default_value[0] += array(
+    $field->default_value += array(array());
+    $field->default_value[0] += array(
       'status' => CommentItemInterface::OPEN,
       'cid' => 0,
       'last_comment_timestamp' => 0,
@@ -154,10 +154,10 @@ function comment_field_instance_config_create(FieldInstanceConfigInterface $inst
 }
 
 /**
- * Implements hook_ENTITY_TYPE_update() for 'field_instance_config'.
+ * Implements hook_ENTITY_TYPE_update() for 'field_config'.
  */
-function comment_field_instance_config_update(FieldInstanceConfigInterface $instance) {
-  if ($instance->getType() == 'comment') {
+function comment_field_config_update(FieldConfigInterface $field) {
+  if ($field->getType() == 'comment') {
     // Comment field settings also affects the rendering of *comment* entities,
     // not only the *commented* entities.
     \Drupal::entityManager()->getViewBuilder('comment')->resetCache();
@@ -178,14 +178,14 @@ function comment_field_storage_config_insert(FieldStorageConfigInterface $field_
 }
 
 /**
- * Implements hook_ENTITY_TYPE_delete() for 'field_instance_config'.
+ * Implements hook_ENTITY_TYPE_delete() for 'field_config'.
  */
-function comment_field_instance_config_delete(FieldInstanceConfigInterface $instance) {
-  if ($instance->getType() == 'comment') {
+function comment_field_config_delete(FieldConfigInterface $field) {
+  if ($field->getType() == 'comment') {
     // Delete all comments that used by the entity bundle.
     $entity_query = \Drupal::entityQuery('comment');
-    $entity_query->condition('entity_type', $instance->getEntityTypeId());
-    $entity_query->condition('field_name', $instance->getName());
+    $entity_query->condition('entity_type', $field->getEntityTypeId());
+    $entity_query->condition('field_name', $field->getName());
     $cids = $entity_query->execute();
     entity_delete_multiple('comment', $cids);
   }
diff --git a/core/modules/comment/config/schema/comment.schema.yml b/core/modules/comment/config/schema/comment.schema.yml
index 4d482c1..86db110 100644
--- a/core/modules/comment/config/schema/comment.schema.yml
+++ b/core/modules/comment/config/schema/comment.schema.yml
@@ -60,7 +60,7 @@ comment.type.*:
       type: text
       label: 'Description'
 
-field.comment.settings:
+field.comment.storage_settings:
   type: sequence
   label: 'Settings'
   sequence:
@@ -93,7 +93,7 @@ field.comment.value:
           type: integer
           label: 'Count'
 
-field.comment.instance_settings:
+field.comment.field_settings:
   type: mapping
   label: 'Comment settings'
   mapping:
diff --git a/core/modules/comment/src/CommentManager.php b/core/modules/comment/src/CommentManager.php
index 5c76abb..fc7a9c0 100644
--- a/core/modules/comment/src/CommentManager.php
+++ b/core/modules/comment/src/CommentManager.php
@@ -20,7 +20,7 @@
 use Drupal\Core\StringTranslation\StringTranslationTrait;
 use Drupal\Core\StringTranslation\TranslationInterface;
 use Drupal\field\Entity\FieldStorageConfig;
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 
 /**
  * Comment manager contains common functions to manage comment fields.
@@ -157,7 +157,7 @@ public function addDefaultField($entity_type, $bundle, $field_name = 'comment',
     }
     // Make sure the instance doesn't already exist.
     if (!array_key_exists($field_name, $this->entityManager->getFieldDefinitions($entity_type, $bundle))) {
-      $instance = $this->entityManager->getStorage('field_instance_config')->create(array(
+      $field = $this->entityManager->getStorage('field_config')->create(array(
         'label' => 'Comments',
         'description' => '',
         'field_name' => $field_name,
@@ -174,7 +174,7 @@ public function addDefaultField($entity_type, $bundle, $field_name = 'comment',
           ),
         ),
       ));
-      $instance->save();
+      $field->save();
 
       // Assign widget settings for the 'default' form mode.
       entity_get_form_display($entity_type, $bundle, 'default')
@@ -227,9 +227,9 @@ public function addBodyField($comment_type_id) {
       ));
       $field_storage->save();
     }
-    if (!FieldInstanceConfig::loadByName('comment', $comment_type_id, 'comment_body')) {
+    if (!FieldConfig::loadByName('comment', $comment_type_id, 'comment_body')) {
       // Attaches the body field by default.
-      $field_instance = $this->entityManager->getStorage('field_instance_config')->create(array(
+      $field_instance = $this->entityManager->getStorage('field_config')->create(array(
         'field_name' => 'comment_body',
         'label' => 'Comment',
         'entity_type' => 'comment',
diff --git a/core/modules/comment/src/CommentStorage.php b/core/modules/comment/src/CommentStorage.php
index 9639d59..36ae10a 100644
--- a/core/modules/comment/src/CommentStorage.php
+++ b/core/modules/comment/src/CommentStorage.php
@@ -132,14 +132,14 @@ public function getDisplayOrdinal(CommentInterface $comment, $comment_mode, $div
    * {@inheritdoc}
    */
   public function getNewCommentPageNumber($total_comments, $new_comments, ContentEntityInterface $entity, $field_name = 'comment') {
-    $instance = $entity->getFieldDefinition($field_name);
-    $comments_per_page = $instance->getSetting('per_page');
+    $field = $entity->getFieldDefinition($field_name);
+    $comments_per_page = $field->getSetting('per_page');
 
     if ($total_comments <= $comments_per_page) {
       // Only one page of comments.
       $count = 0;
     }
-    elseif ($instance->getSetting('default_mode') == CommentManagerInterface::COMMENT_MODE_FLAT) {
+    elseif ($field->getSetting('default_mode') == CommentManagerInterface::COMMENT_MODE_FLAT) {
       // Flat comments.
       $count = $total_comments - $new_comments;
     }
diff --git a/core/modules/comment/src/Plugin/Field/FieldType/CommentItem.php b/core/modules/comment/src/Plugin/Field/FieldType/CommentItem.php
index b54564a..fafdaa7 100644
--- a/core/modules/comment/src/Plugin/Field/FieldType/CommentItem.php
+++ b/core/modules/comment/src/Plugin/Field/FieldType/CommentItem.php
@@ -31,23 +31,23 @@ class CommentItem extends FieldItemBase implements CommentItemInterface {
   /**
    * {@inheritdoc}
    */
-  public static function defaultSettings() {
+  public static function defaultStorageSettings() {
     return array(
       'comment_type' => '',
-    ) + parent::defaultSettings();
+    ) + parent::defaultStorageSettings();
   }
 
   /**
    * {@inheritdoc}
    */
-  public static function defaultInstanceSettings() {
+  public static function defaultFieldSettings() {
     return array(
       'default_mode' => CommentManagerInterface::COMMENT_MODE_THREADED,
       'per_page' => 50,
       'form_location' => CommentItemInterface::FORM_BELOW,
       'anonymous' => COMMENT_ANONYMOUS_MAYNOT_CONTACT,
       'preview' => DRUPAL_OPTIONAL,
-    ) + parent::defaultInstanceSettings();
+    ) + parent::defaultFieldSettings();
   }
 
   /**
@@ -99,7 +99,7 @@ public static function schema(FieldStorageDefinitionInterface $field_definition)
   /**
    * {@inheritdoc}
    */
-  public function instanceSettingsForm(array $form, FormStateInterface $form_state) {
+  public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
     $element = array();
 
     $settings = $this->getSettings();
@@ -189,7 +189,7 @@ public function isEmpty() {
   /**
    * {@inheritdoc}
    */
-  public function settingsForm(array &$form, FormStateInterface $form_state, $has_data) {
+  public function storageSettingsForm(array &$form, FormStateInterface $form_state, $has_data) {
     $element = array();
 
     // @todo Inject entity storage once typed-data supports container injection.
diff --git a/core/modules/comment/src/Tests/CommentFieldsTest.php b/core/modules/comment/src/Tests/CommentFieldsTest.php
index 393bfd7..df65e26 100644
--- a/core/modules/comment/src/Tests/CommentFieldsTest.php
+++ b/core/modules/comment/src/Tests/CommentFieldsTest.php
@@ -9,7 +9,7 @@
 
 use Drupal\comment\Plugin\Field\FieldType\CommentItemInterface;
 use Drupal\field\Entity\FieldStorageConfig;
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 
 /**
  * Tests fields on comments.
@@ -35,10 +35,10 @@ function testCommentDefaultFields() {
     $this->container->get('comment.manager')->addDefaultField('node', 'test_node_type');
 
     // Check that the 'comment_body' field is present on the comment bundle.
-    $instance = FieldInstanceConfig::loadByName('comment', 'comment', 'comment_body');
-    $this->assertTrue(!empty($instance), 'The comment_body field is added when a comment bundle is created');
+    $field = FieldConfig::loadByName('comment', 'comment', 'comment_body');
+    $this->assertTrue(!empty($field), 'The comment_body field is added when a comment bundle is created');
 
-    $instance->delete();
+    $field->delete();
 
     // Check that the 'comment_body' field is deleted.
     $field_storage = FieldStorageConfig::loadByName('comment', 'comment_body');
@@ -53,13 +53,13 @@ function testCommentDefaultFields() {
     // new comment bundle.
     $field_storage = FieldStorageConfig::loadByName('comment', 'comment_body');
     $this->assertTrue($field_storage, 'The comment_body field exists');
-    $instance = FieldInstanceConfig::loadByName('comment', 'comment', 'comment_body');
-    $this->assertTrue(isset($instance), format_string('The comment_body field is present for comments on type @type', array('@type' => $type_name)));
+    $field = FieldConfig::loadByName('comment', 'comment', 'comment_body');
+    $this->assertTrue(isset($field), format_string('The comment_body field is present for comments on type @type', array('@type' => $type_name)));
 
     // Test adding a field that defaults to CommentItemInterface::CLOSED.
     $this->container->get('comment.manager')->addDefaultField('node', 'test_node_type', 'who_likes_ponies', CommentItemInterface::CLOSED, 'who_likes_ponies');
-    $field_storage = entity_load('field_instance_config', 'node.test_node_type.who_likes_ponies');
-    $this->assertEqual($field_storage->default_value[0]['status'], CommentItemInterface::CLOSED);
+    $field = entity_load('field_config', 'node.test_node_type.who_likes_ponies');
+    $this->assertEqual($field->default_value[0]['status'], CommentItemInterface::CLOSED);
   }
 
   /**
@@ -120,7 +120,7 @@ function testCommentInstallAfterContentModule() {
   function testCommentFormat() {
     // Disable text processing for comments.
     $this->drupalLogin($this->admin_user);
-    $edit = array('instance[settings][text_processing]' => 0);
+    $edit = array('field[settings][text_processing]' => 0);
     $this->drupalPostForm('admin/structure/comment/manage/comment/fields/comment.comment.comment_body', $edit, t('Save settings'));
 
     // Change formatter settings.
diff --git a/core/modules/comment/src/Tests/CommentNodeChangesTest.php b/core/modules/comment/src/Tests/CommentNodeChangesTest.php
index f208786..35666f8 100644
--- a/core/modules/comment/src/Tests/CommentNodeChangesTest.php
+++ b/core/modules/comment/src/Tests/CommentNodeChangesTest.php
@@ -28,10 +28,10 @@ function testNodeDeletion() {
     // Make sure the comment field and all its instances are deleted when node
     // type is deleted.
     $this->assertNotNull(entity_load('field_storage_config', 'node.comment'), 'Comment field exists');
-    $this->assertNotNull(entity_load('field_instance_config', 'node.article.comment'), 'Comment instance exists');
+    $this->assertNotNull(entity_load('field_config', 'node.article.comment'), 'Comment instance exists');
     // Delete the node type.
     entity_delete_multiple('node_type', array($this->node->bundle()));
     $this->assertNull(entity_load('field_storage_config', 'node.comment'), 'Comment field deleted');
-    $this->assertNull(entity_load('field_instance_config', 'node.article.comment'), 'Comment instance deleted');
+    $this->assertNull(entity_load('field_config', 'node.article.comment'), 'Comment instance deleted');
   }
 }
diff --git a/core/modules/comment/src/Tests/CommentNonNodeTest.php b/core/modules/comment/src/Tests/CommentNonNodeTest.php
index 85f0554..8f61ea0 100644
--- a/core/modules/comment/src/Tests/CommentNonNodeTest.php
+++ b/core/modules/comment/src/Tests/CommentNonNodeTest.php
@@ -10,7 +10,7 @@
 use Drupal\comment\CommentInterface;
 use Drupal\comment\Entity\CommentType;
 use Drupal\comment\Plugin\Field\FieldType\CommentItemInterface;
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 use Drupal\simpletest\WebTestBase;
 use Drupal\Core\Entity\EntityInterface;
 
@@ -94,8 +94,8 @@ function postComment(EntityInterface $entity, $comment, $subject = '', $contact
     $edit = array();
     $edit['comment_body[0][value]'] = $comment;
 
-    $instance = FieldInstanceConfig::loadByName('entity_test', 'entity_test', 'comment');
-    $preview_mode = $instance->getSetting('preview');
+    $field = FieldConfig::loadByName('entity_test', 'entity_test', 'comment');
+    $preview_mode = $field->getSetting('preview');
 
     // Must get the page before we test for fields.
     if ($entity !== NULL) {
diff --git a/core/modules/comment/src/Tests/CommentTestBase.php b/core/modules/comment/src/Tests/CommentTestBase.php
index 05f139d..458f6f1 100644
--- a/core/modules/comment/src/Tests/CommentTestBase.php
+++ b/core/modules/comment/src/Tests/CommentTestBase.php
@@ -10,8 +10,8 @@
 use Drupal\comment\Entity\CommentType;
 use Drupal\comment\Entity\Comment;
 use Drupal\comment\CommentInterface;
+use Drupal\field\Entity\FieldConfig;
 use Drupal\comment\Plugin\Field\FieldType\CommentItemInterface;
-use Drupal\field\Entity\FieldInstanceConfig;
 use Drupal\simpletest\WebTestBase;
 
 /**
@@ -109,12 +109,12 @@ public function postComment($entity, $comment, $subject = '', $contact = NULL, $
     $edit['comment_body[0][value]'] = $comment;
 
     if ($entity !== NULL) {
-      $instance = FieldInstanceConfig::loadByName('node', $entity->bundle(), $field_name);
+      $field = FieldConfig::loadByName('node', $entity->bundle(), $field_name);
     }
     else {
-      $instance = FieldInstanceConfig::loadByName('node', 'article', $field_name);
+      $field = FieldConfig::loadByName('node', 'article', $field_name);
     }
-    $preview_mode = $instance->settings['preview'];
+    $preview_mode = $field->settings['preview'];
 
     // Must get the page before we test for fields.
     if ($entity !== NULL) {
@@ -309,9 +309,9 @@ public function setCommentsPerPage($number, $field_name = 'comment') {
    *   Defaults to 'comment'.
    */
   public function setCommentSettings($name, $value, $message, $field_name = 'comment') {
-    $instance = FieldInstanceConfig::loadByName('node', 'article', $field_name);
-    $instance->settings[$name] = $value;
-    $instance->save();
+    $field = FieldConfig::loadByName('node', 'article', $field_name);
+    $field->settings[$name] = $value;
+    $field->save();
     // Display status message.
     $this->pass($message);
   }
diff --git a/core/modules/comment/src/Tests/CommentTypeTest.php b/core/modules/comment/src/Tests/CommentTypeTest.php
index 87fb38b..75883f6 100644
--- a/core/modules/comment/src/Tests/CommentTypeTest.php
+++ b/core/modules/comment/src/Tests/CommentTypeTest.php
@@ -10,7 +10,7 @@
 use Drupal\comment\Entity\CommentType;
 use Drupal\comment\Plugin\Field\FieldType\CommentItemInterface;
 use Drupal\field\Entity\FieldStorageConfig;
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 use Drupal\node\Entity\Node;
 
 /**
@@ -95,8 +95,8 @@ public function testCommentTypeCreation() {
   public function testCommentTypeEditing() {
     $this->drupalLogin($this->adminUser);
 
-    $instance = FieldInstanceConfig::loadByName('comment', 'comment', 'comment_body');
-    $this->assertEqual($instance->getLabel(), 'Comment', 'Comment body field was found.');
+    $field = FieldConfig::loadByName('comment', 'comment', 'comment_body');
+    $this->assertEqual($field->getLabel(), 'Comment', 'Comment body field was found.');
 
     // Change the comment type name.
     $this->drupalGet('admin/structure/comment');
diff --git a/core/modules/comment/src/Tests/CommentValidationTest.php b/core/modules/comment/src/Tests/CommentValidationTest.php
index 891e9ab..994893c 100644
--- a/core/modules/comment/src/Tests/CommentValidationTest.php
+++ b/core/modules/comment/src/Tests/CommentValidationTest.php
@@ -62,7 +62,7 @@ public function testValidation() {
     ))->save();
 
     // Add comment field instance to page content.
-    $this->entityManager->getStorage('field_instance_config')->create(array(
+    $this->entityManager->getStorage('field_config')->create(array(
       'field_name' => 'comment',
       'entity_type' => 'node',
       'bundle' => 'page',
diff --git a/core/modules/config/src/Tests/ConfigExportImportUITest.php b/core/modules/config/src/Tests/ConfigExportImportUITest.php
index 6d1ad7c..ab1a545 100644
--- a/core/modules/config/src/Tests/ConfigExportImportUITest.php
+++ b/core/modules/config/src/Tests/ConfigExportImportUITest.php
@@ -70,7 +70,7 @@ public function testExportImport() {
       'type' => 'text',
     ));
     $this->fieldStorage->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_storage' => $this->fieldStorage,
       'bundle' => $this->content_type->type,
     ))->save();
@@ -96,10 +96,10 @@ public function testExportImport() {
     $this->assertEqual(\Drupal::config('system.site')->get('slogan'), $this->originalSlogan);
 
     // Delete the custom field.
-    $field_instances = entity_load_multiple('field_instance_config');
-    foreach ($field_instances as $field_instance) {
-      if ($field_instance->field_name == $this->fieldName) {
-        $field_instance->delete();
+    $fields = entity_load_multiple('field_config');
+    foreach ($fields as $field) {
+      if ($field->field_name == $this->fieldName) {
+        $field->delete();
       }
     }
     $field_storages = entity_load_multiple('field_storage_config');
diff --git a/core/modules/config_translation/config_translation.api.php b/core/modules/config_translation/config_translation.api.php
index 27c89b1..9f7abfc 100644
--- a/core/modules/config_translation/config_translation.api.php
+++ b/core/modules/config_translation/config_translation.api.php
@@ -36,13 +36,13 @@ function hook_config_translation_info(&$info) {
   $route_provider = \Drupal::service('router.route_provider');
 
   // If field UI is not enabled, the base routes of the type
-  // "field_ui.instance_edit_$entity_type" are not defined.
+  // "field_ui.field_edit_$entity_type" are not defined.
   if (\Drupal::moduleHandler()->moduleExists('field_ui')) {
     // Add fields entity mappers to all fieldable entity types defined.
     foreach ($entity_manager->getDefinitions() as $entity_type_id => $entity_type) {
       $base_route = NULL;
       try {
-        $base_route = $route_provider->getRouteByName('field_ui.instance_edit_' . $entity_type_id);
+        $base_route = $route_provider->getRouteByName('field_ui.field_edit_' . $entity_type_id);
       }
       catch (RouteNotFoundException $e) {
         // Ignore non-existent routes.
@@ -51,10 +51,10 @@ function hook_config_translation_info(&$info) {
       // Make sure entity type is fieldable and has a base route.
       if ($entity_type->isFieldable() && !empty($base_route)) {
         $info[$entity_type_id . '_fields'] = array(
-          'base_route_name' => 'field_ui.instance_edit_' . $entity_type_id,
-          'entity_type' => 'field_instance_config',
+          'base_route_name' => 'field_ui.field_edit_' . $entity_type_id,
+          'entity_type' => 'field_config',
           'title' => t('!label field'),
-          'class' => '\Drupal\config_translation\ConfigFieldInstanceMapper',
+          'class' => '\Drupal\config_translation\ConfigFieldMapper',
           'base_entity_type' => $entity_type_id,
           'weight' => 10,
         );
diff --git a/core/modules/config_translation/config_translation.module b/core/modules/config_translation/config_translation.module
index 43aa754..9741ef5 100644
--- a/core/modules/config_translation/config_translation.module
+++ b/core/modules/config_translation/config_translation.module
@@ -92,9 +92,9 @@ function config_translation_entity_type_alter(array &$entity_types) {
       if ($entity_type_id == 'block') {
         $class = 'Drupal\config_translation\Controller\ConfigTranslationBlockListBuilder';
       }
-      elseif ($entity_type_id == 'field_instance_config') {
-        $class = 'Drupal\config_translation\Controller\ConfigTranslationFieldInstanceListBuilder';
-        // Will be filled in dynamically, see \Drupal\field\Entity\FieldInstanceConfig::linkTemplates().
+      elseif ($entity_type_id == 'field_config') {
+        $class = 'Drupal\config_translation\Controller\ConfigTranslationFieldListBuilder';
+        // Will be filled in dynamically, see \Drupal\field\Entity\FieldConfig::linkTemplates().
         $entity_type->setLinkTemplate('drupal:config-translation-overview', 'config_translation.item.overview.');
       }
       else {
@@ -117,17 +117,17 @@ function config_translation_config_translation_info(&$info) {
   $route_provider = \Drupal::service('router.route_provider');
 
   // If field UI is not enabled, the base routes of the type
-  // "field_ui.instance_edit_$entity_type" are not defined.
+  // "field_ui.field_edit_$entity_type" are not defined.
   if (\Drupal::moduleHandler()->moduleExists('field_ui')) {
     // Add fields entity mappers to all fieldable entity types defined.
     foreach ($entity_manager->getDefinitions() as $entity_type_id => $entity_type) {
       $base_route = NULL;
       try {
-        $base_route = $route_provider->getRouteByName('field_ui.instance_edit_' . $entity_type_id);
+        $base_route = $route_provider->getRouteByName('field_ui.field_edit_' . $entity_type_id);
       }
       catch (RouteNotFoundException $e) {
         if ($collection = \Drupal::service('router.builder')->getCollectionDuringRebuild()) {
-          $base_route = $collection->get('field_ui.instance_edit_' . $entity_type_id);
+          $base_route = $collection->get('field_ui.field_edit_' . $entity_type_id);
         }
         // Ignore non-existent routes.
       }
@@ -135,10 +135,10 @@ function config_translation_config_translation_info(&$info) {
       // Make sure entity type is fieldable and has a base route.
       if ($entity_type->isFieldable() && !empty($base_route)) {
         $info[$entity_type_id . '_fields'] = array(
-          'base_route_name' => 'field_ui.instance_edit_' . $entity_type_id,
-          'entity_type' => 'field_instance_config',
+          'base_route_name' => 'field_ui.field_edit_' . $entity_type_id,
+          'entity_type' => 'field_config',
           'title' => '!label field',
-          'class' => '\Drupal\config_translation\ConfigFieldInstanceMapper',
+          'class' => '\Drupal\config_translation\ConfigFieldMapper',
           'base_entity_type' => $entity_type_id,
           'weight' => 10,
         );
diff --git a/core/modules/config_translation/src/ConfigFieldInstanceMapper.php b/core/modules/config_translation/src/ConfigFieldMapper.php
similarity index 82%
rename from core/modules/config_translation/src/ConfigFieldInstanceMapper.php
rename to core/modules/config_translation/src/ConfigFieldMapper.php
index 5eb2cfe..e028831 100644
--- a/core/modules/config_translation/src/ConfigFieldInstanceMapper.php
+++ b/core/modules/config_translation/src/ConfigFieldMapper.php
@@ -2,13 +2,13 @@
 
 /**
  * @file
- * Contains \Drupal\config_translation\ConfigFieldInstanceMapper.
+ * Contains \Drupal\config_translation\ConfigFieldMapper.
  */
 
 namespace Drupal\config_translation;
 
 /**
- * Configuration mapper for field instances.
+ * Configuration mapper for fields.
  *
  * On top of plugin definition values on ConfigEntityMapper, the plugin
  * definition for field instance mappers are required to contain the following
@@ -16,12 +16,12 @@
  * - base_entity_type: The name of the entity type the field instances are
  *   attached to.
  */
-class ConfigFieldInstanceMapper extends ConfigEntityMapper {
+class ConfigFieldMapper extends ConfigEntityMapper {
 
   /**
    * Loaded entity instance to help produce the translation interface.
    *
-   * @var \Drupal\field\FieldInstanceConfigInterface
+   * @var \Drupal\field\FieldConfigInterface
    */
   protected $entity;
 
diff --git a/core/modules/config_translation/src/Controller/ConfigTranslationFieldInstanceListBuilder.php b/core/modules/config_translation/src/Controller/ConfigTranslationFieldListBuilder.php
similarity index 94%
rename from core/modules/config_translation/src/Controller/ConfigTranslationFieldInstanceListBuilder.php
rename to core/modules/config_translation/src/Controller/ConfigTranslationFieldListBuilder.php
index ef3b50f..7721615 100644
--- a/core/modules/config_translation/src/Controller/ConfigTranslationFieldInstanceListBuilder.php
+++ b/core/modules/config_translation/src/Controller/ConfigTranslationFieldListBuilder.php
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Contains \Drupal\config_translation\Controller\ConfigTranslationFieldInstanceListBuilder.
+ * Contains \Drupal\config_translation\Controller\ConfigTranslationFieldListBuilder.
  */
 
 namespace Drupal\config_translation\Controller;
@@ -18,7 +18,7 @@
 /**
  * Defines the config translation list builder for field instance entities.
  */
-class ConfigTranslationFieldInstanceListBuilder extends ConfigTranslationEntityListBuilder {
+class ConfigTranslationFieldListBuilder extends ConfigTranslationEntityListBuilder {
 
   /**
    * The name of the entity type the field instances are attached to.
@@ -61,7 +61,7 @@ public static function createInstance(ContainerInterface $container, EntityTypeI
   }
 
   /**
-   * Constructs a new ConfigTranslationFieldInstanceListBuilder object.
+   * Constructs a new ConfigTranslationFieldListBuilder object.
    *
    * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
    *   The entity type definition.
@@ -91,7 +91,7 @@ public function setMapperDefinition($mapper_definition) {
   public function load() {
     // It is not possible to use the standard load method, because this needs
     // all field instance entities only for the given baseEntityType.
-    $ids = \Drupal::entityQuery('field_instance_config')
+    $ids = \Drupal::entityQuery('field_config')
       ->condition('id', $this->baseEntityType . '.', 'STARTS_WITH')
       ->execute();
     return $this->storage->loadMultiple($ids);
diff --git a/core/modules/contact/src/Tests/Views/ContactFieldsTest.php b/core/modules/contact/src/Tests/Views/ContactFieldsTest.php
index 63c7d1a..25107dc 100644
--- a/core/modules/contact/src/Tests/Views/ContactFieldsTest.php
+++ b/core/modules/contact/src/Tests/Views/ContactFieldsTest.php
@@ -46,7 +46,7 @@ protected function setUp() {
       'label' => 'Test contact form',
     ))->save();
 
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_storage' => $this->field_storage,
       'bundle' => 'contact_message',
     ))->save();
diff --git a/core/modules/content_translation/content_translation.admin.inc b/core/modules/content_translation/content_translation.admin.inc
index 7fc13b2..06b3203 100644
--- a/core/modules/content_translation/content_translation.admin.inc
+++ b/core/modules/content_translation/content_translation.admin.inc
@@ -12,7 +12,6 @@
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Language\LanguageInterface;
 use Drupal\Core\Render\Element;
-use Drupal\field\FieldInstanceConfigInterface;
 
 /**
  * Returns a form element to configure field synchronization.
diff --git a/core/modules/content_translation/content_translation.module b/core/modules/content_translation/content_translation.module
index dddad7c..3616c35 100644
--- a/core/modules/content_translation/content_translation.module
+++ b/core/modules/content_translation/content_translation.module
@@ -11,7 +11,6 @@
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Language\LanguageInterface;
 use Drupal\Core\Routing\RouteMatchInterface;
-use Drupal\field\Entity\FieldInstanceConfig;
 use Drupal\node\NodeInterface;
 
 /**
@@ -600,19 +599,19 @@ function content_translation_entity_extra_field_info() {
 }
 
 /**
- * Implements hook_form_FORM_ID_alter() for 'field_ui_instance_edit_form'.
+ * Implements hook_form_FORM_ID_alter() for 'field_ui_field_edit_form'.
  */
-function content_translation_form_field_ui_field_instance_edit_form_alter(array &$form, FormStateInterface $form_state) {
-  $instance = $form_state['instance'];
-  $bundle_is_translatable = content_translation_enabled($instance->entity_type, $instance->bundle);
+function content_translation_form_field_ui_field_edit_form_alter(array &$form, FormStateInterface $form_state) {
+  $field = $form_state['field'];
+  $bundle_is_translatable = content_translation_enabled($field->entity_type, $field->bundle);
 
-  $form['instance']['translatable'] = array(
+  $form['field']['translatable'] = array(
     '#type' => 'checkbox',
     '#title' => t('Users may translate this field.'),
-    '#default_value' => $instance->isTranslatable(),
+    '#default_value' => $field->isTranslatable(),
     '#weight' => -1,
     '#disabled' => !$bundle_is_translatable,
-    '#access' => $instance->getFieldStorageDefinition()->isTranslatable(),
+    '#access' => $field->getFieldStorageDefinition()->isTranslatable(),
   );
 
   // Provide helpful pointers for administrators.
@@ -620,17 +619,17 @@ function content_translation_form_field_ui_field_instance_edit_form_alter(array
     $toggle_url = url('admin/config/regional/content-language', array(
       'query' => drupal_get_destination(),
     ));
-    $form['instance']['translatable']['#description'] = t('To configure translation for this field, <a href="@language-settings-url">enable language support</a> for this type.', array(
+    $form['field']['translatable']['#description'] = t('To configure translation for this field, <a href="@language-settings-url">enable language support</a> for this type.', array(
       '@language-settings-url' => $toggle_url,
     ));
   }
 
-  if ($instance->isTranslatable()) {
+  if ($field->isTranslatable()) {
     module_load_include('inc', 'content_translation', 'content_translation.admin');
-    $element = content_translation_field_sync_widget($instance);
+    $element = content_translation_field_sync_widget($field);
     if ($element) {
-      $form['instance']['third_party_settings']['content_translation']['translation_sync'] = $element;
-      $form['instance']['third_party_settings']['content_translation']['translation_sync']['#weight'] = -10;
+      $form['field']['third_party_settings']['content_translation']['translation_sync'] = $element;
+      $form['field']['third_party_settings']['content_translation']['translation_sync']['#weight'] = -10;
     }
   }
 }
diff --git a/core/modules/content_translation/src/Tests/ContentTranslationContextualLinksTest.php b/core/modules/content_translation/src/Tests/ContentTranslationContextualLinksTest.php
index 9033d83..ccdb4dc 100644
--- a/core/modules/content_translation/src/Tests/ContentTranslationContextualLinksTest.php
+++ b/core/modules/content_translation/src/Tests/ContentTranslationContextualLinksTest.php
@@ -86,7 +86,7 @@ protected function setUp() {
       'cardinality' => 1,
       'translatable' => TRUE,
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => 'node',
       'field_name' => 'field_test_text',
       'bundle' => $this->bundle,
diff --git a/core/modules/content_translation/src/Tests/ContentTranslationSettingsTest.php b/core/modules/content_translation/src/Tests/ContentTranslationSettingsTest.php
index ea641cc..a65c01d 100644
--- a/core/modules/content_translation/src/Tests/ContentTranslationSettingsTest.php
+++ b/core/modules/content_translation/src/Tests/ContentTranslationSettingsTest.php
@@ -10,7 +10,7 @@
 use Drupal\comment\Plugin\Field\FieldType\CommentItemInterface;
 use Drupal\Core\Field\Entity\BaseFieldOverride;
 use Drupal\Core\Language\Language;
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 use Drupal\simpletest\WebTestBase;
 
 /**
@@ -30,7 +30,7 @@ class ContentTranslationSettingsTest extends WebTestBase {
   protected function setUp() {
     parent::setUp();
 
-    // Set up two content types to test field instances shared between different
+    // Set up two content types to test fields shared between different
     // bundles.
     $this->drupalCreateContentType(array('type' => 'article'));
     $this->drupalCreateContentType(array('type' => 'page'));
@@ -163,20 +163,20 @@ function testSettingsUI() {
       // Test that configurable field translatability is correctly switched.
       $edit = array('settings[node][article][fields][body]' => $translatable);
       $this->assertSettings('node', 'article', TRUE, $edit);
-      $instance = FieldInstanceConfig::loadByName('node', 'article', 'body');
+      $field = FieldConfig::loadByName('node', 'article', 'body');
       $definitions = \Drupal::entityManager()->getFieldDefinitions('node', 'article');
       $this->assertEqual($definitions['body']->isTranslatable(), $translatable, 'Field translatability correctly switched.');
-      $this->assertEqual($instance->isTranslatable(), $definitions['body']->isTranslatable(), 'Configurable field translatability correctly switched.');
+      $this->assertEqual($field->isTranslatable(), $definitions['body']->isTranslatable(), 'Configurable field translatability correctly switched.');
 
       // Test that also the Field UI form behaves correctly.
       $translatable = !$translatable;
-      $edit = array('instance[translatable]' => $translatable);
+      $edit = array('field[translatable]' => $translatable);
       $this->drupalPostForm('admin/structure/types/manage/article/fields/node.article.body', $edit, t('Save settings'));
       \Drupal::entityManager()->clearCachedFieldDefinitions();
-      $instance = FieldInstanceConfig::loadByName('node', 'article', 'body');
+      $field = FieldConfig::loadByName('node', 'article', 'body');
       $definitions = \Drupal::entityManager()->getFieldDefinitions('node', 'article');
       $this->assertEqual($definitions['body']->isTranslatable(), $translatable, 'Field translatability correctly switched.');
-      $this->assertEqual($instance->isTranslatable(), $definitions['body']->isTranslatable(), 'Configurable field translatability correctly switched.');
+      $this->assertEqual($field->isTranslatable(), $definitions['body']->isTranslatable(), 'Configurable field translatability correctly switched.');
     }
   }
 
@@ -221,34 +221,34 @@ protected function assertSettings($entity_type, $bundle, $enabled, $edit) {
   }
 
   /**
-   * Tests that field instance setting depends on bundle translatability.
+   * Tests that field setting depends on bundle translatability.
    */
   function testFieldTranslatableSettingsUI() {
 
     // At least one field needs to be translatable to enable article for
     // translation. Create an extra field to be used for this purpose.
-    $field = array(
+    $field_storage = array(
       'name' => 'article_text',
       'entity_type' => 'node',
       'type' => 'text',
     );
-    entity_create('field_storage_config', $field)->save();
-    $instance = array(
+    entity_create('field_storage_config', $field_storage)->save();
+    $field = array(
       'field_name' => 'article_text',
       'entity_type' => 'node',
       'bundle' => 'article',
     );
-    entity_create('field_instance_config', $instance)->save();
+    entity_create('field_config', $field)->save();
 
-    // Tests that field instance doesn't have translatable setting if bundle
-    // is not translatable.
+    // Tests that field doesn't have translatable setting if bundle is not
+    // translatable.
     $path = 'admin/structure/types/manage/article/fields/node.article.body';
     $this->drupalGet($path);
     $this->assertText('To configure translation for this field, enable language support for this type.', 'No translatable setting for field.');
 
     // Tests that field instance has translatable setting if bundle is
-    // translatable. Note: this field instance is not translatable when
-    // enable bundle translatability.
+    // translatable. Note: this field is not translatable when enable bundle
+    // translatability.
     $edit = array(
       'entity_types[node]' => TRUE,
       'settings[node][article][settings][language][language_show]' => TRUE,
diff --git a/core/modules/content_translation/src/Tests/ContentTranslationSyncImageTest.php b/core/modules/content_translation/src/Tests/ContentTranslationSyncImageTest.php
index 5783ed8..09ae752 100644
--- a/core/modules/content_translation/src/Tests/ContentTranslationSyncImageTest.php
+++ b/core/modules/content_translation/src/Tests/ContentTranslationSyncImageTest.php
@@ -57,7 +57,7 @@ protected function setupTestFields() {
       'translatable' => TRUE,
     ))->save();
 
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => $this->entityTypeId,
       'field_name' => $this->fieldName,
       'bundle' => $this->entityTypeId,
@@ -89,11 +89,11 @@ function testImageFieldSync() {
     // Check that the alt and title fields are enabled for the image field.
     $this->drupalLogin($this->editor);
     $this->drupalGet('entity_test_mul/structure/' . $this->entityTypeId . '/fields/' . $this->entityTypeId . '.' . $this->entityTypeId . '.' . $this->fieldName);
-    $this->assertFieldChecked('edit-instance-third-party-settings-content-translation-translation-sync-alt');
-    $this->assertFieldChecked('edit-instance-third-party-settings-content-translation-translation-sync-title');
+    $this->assertFieldChecked('edit-field-third-party-settings-content-translation-translation-sync-alt');
+    $this->assertFieldChecked('edit-field-third-party-settings-content-translation-translation-sync-title');
     $edit = array(
-      'instance[third_party_settings][content_translation][translation_sync][alt]' => FALSE,
-      'instance[third_party_settings][content_translation][translation_sync][title]' => FALSE,
+      'field[third_party_settings][content_translation][translation_sync][alt]' => FALSE,
+      'field[third_party_settings][content_translation][translation_sync][title]' => FALSE,
     );
     $this->drupalPostForm(NULL, $edit, t('Save settings'));
 
diff --git a/core/modules/content_translation/src/Tests/ContentTranslationTestBase.php b/core/modules/content_translation/src/Tests/ContentTranslationTestBase.php
index 81de3aa..ad67ac0 100644
--- a/core/modules/content_translation/src/Tests/ContentTranslationTestBase.php
+++ b/core/modules/content_translation/src/Tests/ContentTranslationTestBase.php
@@ -182,7 +182,7 @@ protected function setupTestFields() {
       'cardinality' => 1,
       'translatable' => TRUE,
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => $this->entityTypeId,
       'field_name' => $this->fieldName,
       'bundle' => $this->bundle,
diff --git a/core/modules/datetime/config/schema/datetime.schema.yml b/core/modules/datetime/config/schema/datetime.schema.yml
index ef81fbf..58e4cc6 100644
--- a/core/modules/datetime/config/schema/datetime.schema.yml
+++ b/core/modules/datetime/config/schema/datetime.schema.yml
@@ -1,6 +1,6 @@
 # Schema for the configuration files of the Datetime module.
 
-field.datetime.settings:
+field.datetime.storage_settings:
   type: mapping
   label: 'Datetime settings'
   mapping:
@@ -8,7 +8,7 @@ field.datetime.settings:
       type: string
       label: 'Date type'
 
-field.datetime.instance_settings:
+field.datetime.field_settings:
   type: sequence
   label: 'Settings'
   sequence:
diff --git a/core/modules/datetime/src/Plugin/Field/FieldType/DateTimeItem.php b/core/modules/datetime/src/Plugin/Field/FieldType/DateTimeItem.php
index 992af1e..7fab128 100644
--- a/core/modules/datetime/src/Plugin/Field/FieldType/DateTimeItem.php
+++ b/core/modules/datetime/src/Plugin/Field/FieldType/DateTimeItem.php
@@ -29,10 +29,10 @@ class DateTimeItem extends FieldItemBase {
   /**
    * {@inheritdoc}
    */
-  public static function defaultSettings() {
+  public static function defaultStorageSettings() {
     return array(
       'datetime_type' => 'datetime',
-    ) + parent::defaultSettings();
+    ) + parent::defaultStorageSettings();
   }
 
   /**
@@ -84,7 +84,7 @@ public static function schema(FieldStorageDefinitionInterface $field_definition)
   /**
    * {@inheritdoc}
    */
-  public function settingsForm(array &$form, FormStateInterface $form_state, $has_data) {
+  public function storageSettingsForm(array &$form, FormStateInterface $form_state, $has_data) {
     $element = array();
 
     $element['datetime_type'] = array(
diff --git a/core/modules/datetime/src/Tests/DateTimeFieldTest.php b/core/modules/datetime/src/Tests/DateTimeFieldTest.php
index 1ecb656..fd51798 100644
--- a/core/modules/datetime/src/Tests/DateTimeFieldTest.php
+++ b/core/modules/datetime/src/Tests/DateTimeFieldTest.php
@@ -33,11 +33,11 @@ class DateTimeFieldTest extends WebTestBase {
   protected $fieldStorage;
 
   /**
-   * The instance used in this test class.
+   * The field used in this test class.
    *
-   * @var \Drupal\field\Entity\FieldInstanceConfig
+   * @var \Drupal\field\Entity\FieldConfig
    */
-  protected $instance;
+  protected $field;
 
   protected function setUp() {
     parent::setUp();
@@ -59,14 +59,14 @@ protected function setUp() {
       'settings' => array('datetime_type' => 'date'),
     ));
     $this->fieldStorage->save();
-    $this->instance = entity_create('field_instance_config', array(
+    $this->field = entity_create('field_config', array(
       'field_storage' => $this->fieldStorage,
       'bundle' => 'entity_test',
       'required' => TRUE,
     ));
-    $this->instance->save();
+    $this->field->save();
 
-    entity_get_form_display($this->instance->entity_type, $this->instance->bundle, 'default')
+    entity_get_form_display($this->field->entity_type, $this->field->bundle, 'default')
       ->setComponent($this->fieldStorage->name, array(
         'type' => 'datetime_default',
       ))
@@ -77,7 +77,7 @@ protected function setUp() {
       'label' => 'hidden',
       'settings' => array('format_type' => 'medium'),
     );
-    entity_get_display($this->instance->entity_type, $this->instance->bundle, 'full')
+    entity_get_display($this->field->entity_type, $this->field->bundle, 'full')
       ->setComponent($this->fieldStorage->name, $this->display_options)
       ->save();
   }
@@ -123,7 +123,7 @@ function testDateField() {
       foreach ($values as $new_value) {
         // Update the entity display settings.
         $this->display_options['settings'] = array($setting => $new_value);
-        entity_get_display($this->instance->entity_type, $this->instance->bundle, 'full')
+        entity_get_display($this->field->entity_type, $this->field->bundle, 'full')
           ->setComponent($field_name, $this->display_options)
           ->save();
 
@@ -141,7 +141,7 @@ function testDateField() {
 
     // Verify that the plain formatter works.
     $this->display_options['type'] = 'datetime_plain';
-    entity_get_display($this->instance->entity_type, $this->instance->bundle, 'full')
+    entity_get_display($this->field->entity_type, $this->field->bundle, 'full')
       ->setComponent($field_name, $this->display_options)
       ->save();
     $expected = $date->format(DATETIME_DATE_STORAGE_FORMAT);
@@ -190,7 +190,7 @@ function testDatetimeField() {
       foreach ($values as $new_value) {
         // Update the entity display settings.
         $this->display_options['settings'] = array($setting => $new_value);
-        entity_get_display($this->instance->entity_type, $this->instance->bundle, 'full')
+        entity_get_display($this->field->entity_type, $this->field->bundle, 'full')
           ->setComponent($field_name, $this->display_options)
           ->save();
 
@@ -208,7 +208,7 @@ function testDatetimeField() {
 
     // Verify that the plain formatter works.
     $this->display_options['type'] = 'datetime_plain';
-    entity_get_display($this->instance->entity_type, $this->instance->bundle, 'full')
+    entity_get_display($this->field->entity_type, $this->field->bundle, 'full')
       ->setComponent($field_name, $this->display_options)
       ->save();
     $expected = $date->format(DATETIME_DATETIME_STORAGE_FORMAT);
@@ -226,7 +226,7 @@ function testDatelistWidget() {
     $this->fieldStorage->save();
 
     // Change the widget to a datelist widget.
-    entity_get_form_display($this->instance->entity_type, $this->instance->bundle, 'default')
+    entity_get_form_display($this->field->entity_type, $this->field->bundle, 'default')
       ->setComponent($field_name, array(
         'type' => 'datetime_datelist',
         'settings' => array(
@@ -297,17 +297,17 @@ function testDefaultValue() {
     ));
     $field_storage->save();
 
-    $instance = entity_create('field_instance_config', array(
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'date_content',
     ));
-    $instance->save();
+    $field->save();
 
     // Set now as default_value.
-    $instance_edit = array(
+    $field_edit = array(
       'default_value_input[default_date_type]' => 'now',
     );
-    $this->drupalPostForm('admin/structure/types/manage/date_content/fields/node.date_content.' . $field_storage->name, $instance_edit, t('Save settings'));
+    $this->drupalPostForm('admin/structure/types/manage/date_content/fields/node.date_content.' . $field_storage->name, $field_edit, t('Save settings'));
 
     // Check that default value is selected in default value form.
     $this->drupalGet('admin/structure/types/manage/date_content/fields/node.date_content.' . $field_storage->name);
@@ -315,7 +315,7 @@ function testDefaultValue() {
     $this->assertFieldByName('default_value_input[default_date]', '', 'The relative default value is empty in instance settings page');
 
     // Check if default_date has been stored successfully.
-    $config_entity = $this->container->get('config.factory')->get('field.instance.node.date_content.' . $field_storage->name)->get();
+    $config_entity = $this->container->get('config.factory')->get('field.field.node.date_content.' . $field_storage->name)->get();
     $this->assertEqual($config_entity['default_value'][0], array('default_date_type' => 'now', 'default_date' => 'now'), 'Default value has been stored successfully');
 
     // Clear field cache in order to avoid stale cache values.
@@ -327,20 +327,20 @@ function testDefaultValue() {
     $this->assertEqual($new_node->get($field_storage->name)->offsetGet(0)->value, $expected_date->format(DATETIME_DATE_STORAGE_FORMAT));
 
     // Set an invalid relative default_value to test validation.
-    $instance_edit = array(
+    $field_edit = array(
       'default_value_input[default_date_type]' => 'relative',
       'default_value_input[default_date]' => 'invalid date',
     );
-    $this->drupalPostForm('admin/structure/types/manage/date_content/fields/node.date_content.' . $field_storage->name, $instance_edit, t('Save settings'));
+    $this->drupalPostForm('admin/structure/types/manage/date_content/fields/node.date_content.' . $field_storage->name, $field_edit, t('Save settings'));
 
     $this->assertText('The relative date value entered is invalid.');
 
     // Set a relative default_value.
-    $instance_edit = array(
+    $field_edit = array(
       'default_value_input[default_date_type]' => 'relative',
       'default_value_input[default_date]' => '+90 days',
     );
-    $this->drupalPostForm('admin/structure/types/manage/date_content/fields/node.date_content.' . $field_storage->name, $instance_edit, t('Save settings'));
+    $this->drupalPostForm('admin/structure/types/manage/date_content/fields/node.date_content.' . $field_storage->name, $field_edit, t('Save settings'));
 
     // Check that default value is selected in default value form.
     $this->drupalGet('admin/structure/types/manage/date_content/fields/node.date_content.' . $field_storage->name);
@@ -348,7 +348,7 @@ function testDefaultValue() {
     $this->assertFieldByName('default_value_input[default_date]', '+90 days', 'The relative default value is displayed in instance settings page');
 
     // Check if default_date has been stored successfully.
-    $config_entity = $this->container->get('config.factory')->get('field.instance.node.date_content.' . $field_storage->name)->get();
+    $config_entity = $this->container->get('config.factory')->get('field.field.node.date_content.' . $field_storage->name)->get();
     $this->assertEqual($config_entity['default_value'][0], array('default_date_type' => 'relative', 'default_date' => '+90 days'), 'Default value has been stored successfully');
 
     // Clear field cache in order to avoid stale cache values.
@@ -360,10 +360,10 @@ function testDefaultValue() {
     $this->assertEqual($new_node->get($field_storage->name)->offsetGet(0)->value, $expected_date->format(DATETIME_DATE_STORAGE_FORMAT));
 
     // Remove default value.
-    $instance_edit = array(
+    $field_edit = array(
       'default_value_input[default_date_type]' => '',
     );
-    $this->drupalPostForm('admin/structure/types/manage/date_content/fields/node.date_content.' . $field_storage->name, $instance_edit, t('Save settings'));
+    $this->drupalPostForm('admin/structure/types/manage/date_content/fields/node.date_content.' . $field_storage->name, $field_edit, t('Save settings'));
 
     // Check that default value is selected in default value form.
     $this->drupalGet('admin/structure/types/manage/date_content/fields/node.date_content.' . $field_storage->name);
@@ -371,7 +371,7 @@ function testDefaultValue() {
     $this->assertFieldByName('default_value_input[default_date]', '', 'The relative default value is empty in instance settings page');
 
     // Check if default_date has been stored successfully.
-    $config_entity = $this->container->get('config.factory')->get('field.instance.node.date_content.' . $field_storage->name)->get();
+    $config_entity = $this->container->get('config.factory')->get('field.field.node.date_content.' . $field_storage->name)->get();
     $this->assertTrue(empty($config_entity['default_value']), 'Empty default value has been stored successfully');
 
     // Clear field cache in order to avoid stale cache values.
diff --git a/core/modules/datetime/src/Tests/DateTimeItemTest.php b/core/modules/datetime/src/Tests/DateTimeItemTest.php
index 13ae3bb..d26f1fa 100644
--- a/core/modules/datetime/src/Tests/DateTimeItemTest.php
+++ b/core/modules/datetime/src/Tests/DateTimeItemTest.php
@@ -36,14 +36,14 @@ protected function setUp() {
       'settings' => array('datetime_type' => 'date'),
     ));
     $field_storage->save();
-    $instance = entity_create('field_instance_config', array(
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'entity_test',
       'settings' => array(
         'default_value' => 'blank',
       ),
     ));
-    $instance->save();
+    $field->save();
   }
 
   /**
diff --git a/core/modules/editor/src/Tests/QuickEditIntegrationTest.php b/core/modules/editor/src/Tests/QuickEditIntegrationTest.php
index 2ba6aff..88a9e71 100644
--- a/core/modules/editor/src/Tests/QuickEditIntegrationTest.php
+++ b/core/modules/editor/src/Tests/QuickEditIntegrationTest.php
@@ -72,7 +72,7 @@ protected function setUp() {
 
     // Create a field.
     $this->field_name = 'field_textarea';
-    $this->createFieldWithInstance(
+    $this->createFieldWithStorage(
       $this->field_name, 'text', 1, 'Long text field',
       // Instance settings.
       array('text_processing' => 1),
diff --git a/core/modules/entity/src/EntityDisplayBase.php b/core/modules/entity/src/EntityDisplayBase.php
index 8b108a2..1a79763 100644
--- a/core/modules/entity/src/EntityDisplayBase.php
+++ b/core/modules/entity/src/EntityDisplayBase.php
@@ -11,7 +11,7 @@
 use Drupal\Core\Entity\EntityStorageInterface;
 use Drupal\Core\Field\FieldDefinitionInterface;
 use Drupal\Core\Entity\Display\EntityDisplayInterface;
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 
 /**
  * Provides a common base class for entity view and form displays.
@@ -168,9 +168,9 @@ public function calculateDependencies() {
     // Create dependencies on both hidden and visible fields.
     $fields = $this->content + $this->hidden;
     foreach ($fields as $field_name => $component) {
-      $field_instance = FieldInstanceConfig::loadByName($this->targetEntityType, $this->bundle, $field_name);
-      if ($field_instance) {
-        $this->addDependency('entity', $field_instance->getConfigDependencyName());
+      $field = FieldConfig::loadByName($this->targetEntityType, $this->bundle, $field_name);
+      if ($field) {
+        $this->addDependency('entity', $field->getConfigDependencyName());
       }
       // Create a dependency on the module that provides the formatter or
       // widget.
@@ -370,7 +370,7 @@ protected function getFieldDefinitions() {
    * Determines if a field has options for a given display.
    *
    * @param FieldDefinitionInterface $definition
-   *   A field instance definition.
+   *   A field definition.
    * @return array|null
    */
   private function fieldHasDisplayOptions(FieldDefinitionInterface $definition) {
diff --git a/core/modules/entity/src/Tests/EntityDisplayTest.php b/core/modules/entity/src/Tests/EntityDisplayTest.php
index 1efa671..00c674f 100644
--- a/core/modules/entity/src/Tests/EntityDisplayTest.php
+++ b/core/modules/entity/src/Tests/EntityDisplayTest.php
@@ -138,18 +138,18 @@ public function testExtraFieldComponent() {
    */
   public function testFieldComponent() {
     $field_name = 'test_field';
-    // Create a field storage and an instance.
+    // Create a field storage and a field.
     $field_storage = entity_create('field_storage_config', array(
       'name' => $field_name,
       'entity_type' => 'entity_test',
       'type' => 'test_field'
     ));
     $field_storage->save();
-    $instance = entity_create('field_instance_config', array(
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'entity_test',
     ));
-    $instance->save();
+    $field->save();
 
     $display = entity_create('entity_view_display', array(
       'targetEntityType' => 'entity_test',
@@ -194,7 +194,7 @@ public function testFieldComponent() {
     // Check that the display has dependencies on the field and the module that
     // provides the formatter.
     $dependencies = $display->calculateDependencies();
-    $this->assertEqual(array('entity' => array('field.instance.entity_test.entity_test.test_field'), 'module' => array('entity_test', 'field_test')), $dependencies);
+    $this->assertEqual(array('entity' => array('field.field.entity_test.entity_test.test_field'), 'module' => array('entity_test', 'field_test')), $dependencies);
   }
 
   /**
@@ -286,7 +286,7 @@ public function testRenameDeleteBundle() {
     $this->assertEqual('node.article_rename.default', $new_form_display->id);
 
     $expected_dependencies = array(
-      'entity' => array('field.instance.node.article_rename.body', 'node.type.article_rename'),
+      'entity' => array('field.field.node.article_rename.body', 'node.type.article_rename'),
       'module' => array('text')
     );
     // Check that the display has dependencies on the bundle, fields and the
@@ -308,22 +308,22 @@ public function testRenameDeleteBundle() {
   }
 
   /**
-   * Tests deleting field instance.
+   * Tests deleting field.
    */
-  public function testDeleteFieldInstance() {
+  public function testDeleteField() {
     $field_name = 'test_field';
-    // Create a field storage and an instance.
+    // Create a field storage and a field.
     $field_storage = entity_create('field_storage_config', array(
       'name' => $field_name,
       'entity_type' => 'entity_test',
       'type' => 'test_field'
     ));
     $field_storage->save();
-    $instance = entity_create('field_instance_config', array(
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'entity_test',
     ));
-    $instance->save();
+    $field->save();
 
     // Create default and teaser entity display.
     entity_create('view_mode', array('id' =>  'entity_test.teaser', 'targetEntityType' => 'entity_test'))->save();
@@ -344,8 +344,8 @@ public function testDeleteFieldInstance() {
     $display = entity_get_display('entity_test', 'entity_test', 'teaser');
     $this->assertTrue($display->getComponent($field_name));
 
-    // Delete the instance.
-    $instance->delete();
+    // Delete the field.
+    $field->delete();
 
     // Check that the component has been removed from the entity displays.
     $display = entity_get_display('entity_test', 'entity_test', 'default');
diff --git a/core/modules/entity/src/Tests/EntityFormDisplayTest.php b/core/modules/entity/src/Tests/EntityFormDisplayTest.php
index eaaec9a..87dcaa9 100644
--- a/core/modules/entity/src/Tests/EntityFormDisplayTest.php
+++ b/core/modules/entity/src/Tests/EntityFormDisplayTest.php
@@ -47,7 +47,7 @@ public function testEntityGetFromDisplay() {
    * Tests the behavior of a field component within an EntityFormDisplay object.
    */
   public function testFieldComponent() {
-    // Create a field storage and an instance.
+    // Create a field storage and a field.
     $field_name = 'test_field';
     $field_storage = entity_create('field_storage_config', array(
       'name' => $field_name,
@@ -55,11 +55,11 @@ public function testFieldComponent() {
       'type' => 'test_field'
     ));
     $field_storage->save();
-    $instance = entity_create('field_instance_config', array(
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'entity_test',
     ));
-    $instance->save();
+    $field->save();
 
     $form_display = entity_create('entity_form_display', array(
       'targetEntityType' => 'entity_test',
@@ -172,22 +172,22 @@ public function testBaseFieldComponent() {
   }
 
   /**
-   * Tests deleting field instance.
+   * Tests deleting field.
    */
-  public function testDeleteFieldInstance() {
+  public function testDeleteField() {
     $field_name = 'test_field';
-    // Create a field storage and an instance.
+    // Create a field storage and a field.
     $field_storage = entity_create('field_storage_config', array(
       'name' => $field_name,
       'entity_type' => 'entity_test',
       'type' => 'test_field'
     ));
     $field_storage->save();
-    $instance = entity_create('field_instance_config', array(
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'entity_test',
     ));
-    $instance->save();
+    $field->save();
 
     // Create default and compact entity display.
     entity_create('form_mode', array('id' =>  'entity_test.compact', 'targetEntityType' => 'entity_test'))->save();
@@ -208,8 +208,8 @@ public function testDeleteFieldInstance() {
     $display = entity_get_form_display('entity_test', 'entity_test', 'compact');
     $this->assertTrue($display->getComponent($field_name));
 
-    // Delete the instance.
-    $instance->delete();
+    // Delete the field.
+    $field->delete();
 
     // Check that the component has been removed from the entity displays.
     $display = entity_get_form_display('entity_test', 'entity_test', 'default');
diff --git a/core/modules/entity_reference/config/schema/entity_reference.schema.yml b/core/modules/entity_reference/config/schema/entity_reference.schema.yml
index 242faf3..de96443 100644
--- a/core/modules/entity_reference/config/schema/entity_reference.schema.yml
+++ b/core/modules/entity_reference/config/schema/entity_reference.schema.yml
@@ -1,6 +1,6 @@
 # Schema for the configuration files of the Entity Reference module.
 
-field.entity_reference.settings:
+field.entity_reference.storage_settings:
   type: mapping
   label: 'Entity reference settings'
   mapping:
@@ -8,7 +8,7 @@ field.entity_reference.settings:
       type: string
       label: 'Type of item to reference'
 
-field.entity_reference.instance_settings:
+field.entity_reference.field_settings:
   type: mapping
   label: 'Entity reference settings'
   mapping:
diff --git a/core/modules/entity_reference/entity_reference.module b/core/modules/entity_reference/entity_reference.module
index 75ab68c..891dcf4 100644
--- a/core/modules/entity_reference/entity_reference.module
+++ b/core/modules/entity_reference/entity_reference.module
@@ -11,7 +11,7 @@
 use Drupal\Core\Render\Element;
 use Drupal\Core\Routing\RouteMatchInterface;
 use Drupal\field\Entity\FieldStorageConfig;
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 use Drupal\field\FieldStorageConfigInterface;
 
 /**
@@ -93,9 +93,9 @@ function entity_reference_field_storage_config_update(FieldStorageConfigInterfac
 
   foreach ($field_storage->bundles() as $entity_type => $bundles) {
     foreach ($bundles as $bundle) {
-      $instance = FieldInstanceConfig::loadByName($entity_type, $bundle, $field_name);
-      $instance->settings['handler_settings'] = array();
-      $instance->save();
+      $field = FieldConfig::loadByName($entity_type, $bundle, $field_name);
+      $field->settings['handler_settings'] = array();
+      $field->save();
     }
   }
 }
@@ -104,10 +104,10 @@ function entity_reference_field_storage_config_update(FieldStorageConfigInterfac
  * Render API callback: Processes the field instance settings form and allows
  * access to the form state.
  *
- * @see entity_reference_field_instance_settings_form()
+ * @see entity_reference_field_field_settings_form()
  */
-function _entity_reference_field_instance_settings_ajax_process($form, FormStateInterface $form_state) {
-  _entity_reference_field_instance_settings_ajax_process_element($form, $form);
+function _entity_reference_field_field_settings_ajax_process($form, FormStateInterface $form_state) {
+  _entity_reference_field_field_settings_ajax_process_element($form, $form);
   return $form;
 }
 
@@ -115,9 +115,9 @@ function _entity_reference_field_instance_settings_ajax_process($form, FormState
  * Adds entity_reference specific properties to AJAX form elements from the
  * field instance settings form.
  *
- * @see _entity_reference_field_instance_settings_ajax_process()
+ * @see _entity_reference_field_field_settings_ajax_process()
  */
-function _entity_reference_field_instance_settings_ajax_process_element(&$element, $main_form) {
+function _entity_reference_field_field_settings_ajax_process_element(&$element, $main_form) {
   if (!empty($element['#ajax'])) {
     $element['#ajax'] = array(
       'callback' => 'entity_reference_settings_ajax',
@@ -127,7 +127,7 @@ function _entity_reference_field_instance_settings_ajax_process_element(&$elemen
   }
 
   foreach (Element::children($element) as $key) {
-    _entity_reference_field_instance_settings_ajax_process_element($element[$key], $main_form);
+    _entity_reference_field_field_settings_ajax_process_element($element[$key], $main_form);
   }
 }
 
@@ -156,7 +156,7 @@ function _entity_reference_element_validate_filter(&$element, FormStateInterface
 /**
  * Ajax callback for the handler settings form.
  *
- * @see entity_reference_field_instance_settings_form()
+ * @see entity_reference_field_field_settings_form()
  */
 function entity_reference_settings_ajax($form, FormStateInterface $form_state) {
   $trigger = $form_state['triggering_element'];
@@ -166,7 +166,7 @@ function entity_reference_settings_ajax($form, FormStateInterface $form_state) {
 /**
  * Submit handler for the non-JS case.
  *
- * @see entity_reference_field_instance_settings_form()
+ * @see entity_reference_field_field_settings_form()
  */
 function entity_reference_settings_ajax_submit($form, FormStateInterface $form_state) {
   $form_state['rebuild'] = TRUE;
@@ -181,7 +181,7 @@ function entity_reference_query_entity_reference_alter(AlterableInterface $query
 }
 
 /**
- * Creates an instance of a entity reference field on the specified bundle.
+ * Creates an field of a entity reference field storage on the specified bundle.
  *
  * @param string $entity_type
  *   The type of entity the field instance will be attached to.
@@ -204,10 +204,10 @@ function entity_reference_query_entity_reference_alter(AlterableInterface $query
  *
  * @see \Drupal\entity_reference\Plugin\entity_reference\selection\SelectionBase::settingsForm()
  */
-function entity_reference_create_instance($entity_type, $bundle, $field_name, $field_label, $target_entity_type, $selection_handler = 'default', $selection_handler_settings = array(), $cardinality = 1) {
+function entity_reference_create_field($entity_type, $bundle, $field_name, $field_label, $target_entity_type, $selection_handler = 'default', $selection_handler_settings = array(), $cardinality = 1) {
   // Look for or add the specified field to the requested entity bundle.
   $field_storage = FieldStorageConfig::loadByName($entity_type, $field_name);
-  $instance = FieldInstanceConfig::loadByName($entity_type, $bundle, $field_name);
+  $field = FieldConfig::loadByName($entity_type, $bundle, $field_name);
 
   if (empty($field_storage)) {
     $field_storage = array(
@@ -222,8 +222,8 @@ function entity_reference_create_instance($entity_type, $bundle, $field_name, $f
     entity_create('field_storage_config', $field_storage)->save();
   }
 
-  if (empty($instance)) {
-    $instance = array(
+  if (empty($field)) {
+    $field = array(
       'field_name' => $field_name,
       'entity_type' => $entity_type,
       'bundle' => $bundle,
@@ -233,7 +233,7 @@ function entity_reference_create_instance($entity_type, $bundle, $field_name, $f
         'handler_settings' => $selection_handler_settings,
       ),
     );
-    entity_create('field_instance_config', $instance)->save();
+    entity_create('field_config', $field)->save();
   }
 }
 
diff --git a/core/modules/entity_reference/src/ConfigurableEntityReferenceItem.php b/core/modules/entity_reference/src/ConfigurableEntityReferenceItem.php
index 047b806..7f630bd 100644
--- a/core/modules/entity_reference/src/ConfigurableEntityReferenceItem.php
+++ b/core/modules/entity_reference/src/ConfigurableEntityReferenceItem.php
@@ -34,8 +34,8 @@ class ConfigurableEntityReferenceItem extends EntityReferenceItem implements All
   /**
    * {@inheritdoc}
    */
-  public static function defaultSettings() {
-    $settings = parent::defaultSettings();
+  public static function defaultStorageSettings() {
+    $settings = parent::defaultStorageSettings();
     // The target bundle is handled by the 'target_bundles' property in the
     // 'handler_settings' instance setting.
     unset($settings['target_bundle']);
@@ -45,10 +45,10 @@ public static function defaultSettings() {
   /**
    * {@inheritdoc}
    */
-  public static function defaultInstanceSettings() {
+  public static function defaultFieldSettings() {
     return array(
       'handler_settings' => array(),
-    ) + parent::defaultInstanceSettings();
+    ) + parent::defaultFieldSettings();
   }
 
   /**
@@ -160,7 +160,7 @@ public static function schema(FieldStorageDefinitionInterface $field_definition)
   /**
    * {@inheritdoc}
    */
-  public function settingsForm(array &$form, FormStateInterface $form_state, $has_data) {
+  public function storageSettingsForm(array &$form, FormStateInterface $form_state, $has_data) {
     $element['target_type'] = array(
       '#type' => 'select',
       '#title' => t('Type of item to reference'),
@@ -177,8 +177,8 @@ public function settingsForm(array &$form, FormStateInterface $form_state, $has_
   /**
    * {@inheritdoc}
    */
-  public function instanceSettingsForm(array $form, FormStateInterface $form_state) {
-    $instance = $form_state['instance'];
+  public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
+    $field = $form_state['field'];
 
     // Get all selection plugins for this entity type.
     $selection_plugins = \Drupal::service('plugin.manager.entity_reference.selection')->getSelectionGroups($this->getSetting('target_type'));
@@ -201,9 +201,9 @@ public function instanceSettingsForm(array $form, FormStateInterface $form_state
         'css' => array(drupal_get_path('module', 'entity_reference') . '/css/entity_reference.admin.css'),
       ),
       '#process' => array(
-        '_entity_reference_field_instance_settings_ajax_process',
+        '_entity_reference_field_field_settings_ajax_process',
       ),
-      '#element_validate' => array(array(get_class($this), 'instanceSettingsFormValidate')),
+      '#element_validate' => array(array(get_class($this), 'fieldSettingsFormValidate')),
     );
     $form['handler'] = array(
       '#type' => 'details',
@@ -217,7 +217,7 @@ public function instanceSettingsForm(array $form, FormStateInterface $form_state
       '#type' => 'select',
       '#title' => t('Reference method'),
       '#options' => $handlers_options,
-      '#default_value' => $instance->getSetting('handler'),
+      '#default_value' => $field->getSetting('handler'),
       '#required' => TRUE,
       '#ajax' => TRUE,
       '#limit_validation_errors' => array(),
@@ -237,8 +237,8 @@ public function instanceSettingsForm(array $form, FormStateInterface $form_state
       '#attributes' => array('class' => array('entity_reference-settings')),
     );
 
-    $handler = \Drupal::service('plugin.manager.entity_reference.selection')->getSelectionHandler($instance);
-    $form['handler']['handler_settings'] += $handler->settingsForm($instance);
+    $handler = \Drupal::service('plugin.manager.entity_reference.selection')->getSelectionHandler($field);
+    $form['handler']['handler_settings'] += $handler->settingsForm($field);
 
     return $form;
   }
@@ -251,10 +251,10 @@ public function instanceSettingsForm(array $form, FormStateInterface $form_state
    * @param \Drupal\Core\Form\FormStateInterface $form_state
    *   The form state of the (entire) configuration form.
    */
-  public static function instanceSettingsFormValidate(array $form, FormStateInterface $form_state) {
-    if ($form_state->hasValue('instance')) {
-      $form_state->unsetValue(array('instance', 'settings', 'handler_submit'));
-      $form_state['instance']->settings = $form_state->getValue(array('instance', 'settings'));
+  public static function fieldSettingsFormValidate(array $form, FormStateInterface $form_state) {
+    if ($form_state->hasValue('field')) {
+      $form_state->unsetValue(array('field', 'settings', 'handler_submit'));
+      $form_state['field']->settings = $form_state->getValue(array('field', 'settings'));
     }
   }
 
diff --git a/core/modules/entity_reference/src/EntityReferenceAutocomplete.php b/core/modules/entity_reference/src/EntityReferenceAutocomplete.php
index 63f8a00..e70fe86 100644
--- a/core/modules/entity_reference/src/EntityReferenceAutocomplete.php
+++ b/core/modules/entity_reference/src/EntityReferenceAutocomplete.php
@@ -11,7 +11,7 @@
 use Drupal\Core\Entity\EntityManagerInterface;
 use Drupal\Core\Field\FieldDefinitionInterface;
 use Drupal\entity_reference\Plugin\Type\SelectionPluginManager;
-use Drupal\field\FieldInstanceConfigInterface;
+use Drupal\field\FieldConfigInterface;
 use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
 
 /**
diff --git a/core/modules/entity_reference/src/Tests/EntityReferenceAdminTest.php b/core/modules/entity_reference/src/Tests/EntityReferenceAdminTest.php
index 9812800..fb4ffb3 100644
--- a/core/modules/entity_reference/src/Tests/EntityReferenceAdminTest.php
+++ b/core/modules/entity_reference/src/Tests/EntityReferenceAdminTest.php
@@ -59,43 +59,43 @@ public function testFieldAdminHandler() {
     // Check that all entity types can be referenced.
     $this->assertFieldSelectOptions('field[settings][target_type]', array_keys(\Drupal::entityManager()->getDefinitions()));
 
-    // Second step: 'Instance settings' form.
+    // Second step: 'Field settings' form.
     $this->drupalPostForm(NULL, array(), t('Save field settings'));
 
     // The base handler should be selected by default.
-    $this->assertFieldByName('instance[settings][handler]', 'default');
+    $this->assertFieldByName('field[settings][handler]', 'default');
 
     // The base handler settings should be displayed.
     $entity_type_id = 'node';
     $bundles = entity_get_bundles($entity_type_id);
     foreach ($bundles as $bundle_name => $bundle_info) {
-      $this->assertFieldByName('instance[settings][handler_settings][target_bundles][' . $bundle_name . ']');
+      $this->assertFieldByName('field[settings][handler_settings][target_bundles][' . $bundle_name . ']');
     }
 
     reset($bundles);
 
     // Test the sort settings.
     // Option 0: no sort.
-    $this->assertFieldByName('instance[settings][handler_settings][sort][field]', '_none');
-    $this->assertNoFieldByName('instance[settings][handler_settings][sort][direction]');
+    $this->assertFieldByName('field[settings][handler_settings][sort][field]', '_none');
+    $this->assertNoFieldByName('field[settings][handler_settings][sort][direction]');
     // Option 1: sort by field.
-    $this->drupalPostAjaxForm(NULL, array('instance[settings][handler_settings][sort][field]' => 'nid'), 'instance[settings][handler_settings][sort][field]');
-    $this->assertFieldByName('instance[settings][handler_settings][sort][direction]', 'ASC');
+    $this->drupalPostAjaxForm(NULL, array('field[settings][handler_settings][sort][field]' => 'nid'), 'field[settings][handler_settings][sort][field]');
+    $this->assertFieldByName('field[settings][handler_settings][sort][direction]', 'ASC');
 
     // Test that a non-translatable base field is a sort option.
-    $this->assertFieldByXPath("//select[@name='instance[settings][handler_settings][sort][field]']/option[@value='nid']");
+    $this->assertFieldByXPath("//select[@name='field[settings][handler_settings][sort][field]']/option[@value='nid']");
     // Test that a translatable base field is a sort option.
-    $this->assertFieldByXPath("//select[@name='instance[settings][handler_settings][sort][field]']/option[@value='title']");
+    $this->assertFieldByXPath("//select[@name='field[settings][handler_settings][sort][field]']/option[@value='title']");
     // Test that a configurable field is a sort option.
-    $this->assertFieldByXPath("//select[@name='instance[settings][handler_settings][sort][field]']/option[@value='body.value']");
+    $this->assertFieldByXPath("//select[@name='field[settings][handler_settings][sort][field]']/option[@value='body.value']");
 
     // Set back to no sort.
-    $this->drupalPostAjaxForm(NULL, array('instance[settings][handler_settings][sort][field]' => '_none'), 'instance[settings][handler_settings][sort][field]');
-    $this->assertNoFieldByName('instance[settings][handler_settings][sort][direction]');
+    $this->drupalPostAjaxForm(NULL, array('field[settings][handler_settings][sort][field]' => '_none'), 'field[settings][handler_settings][sort][field]');
+    $this->assertNoFieldByName('field[settings][handler_settings][sort][direction]');
 
     // Third step: confirm.
     $this->drupalPostForm(NULL, array(
-      'instance[settings][handler_settings][target_bundles][' . key($bundles) . ']' => key($bundles),
+      'field[settings][handler_settings][target_bundles][' . key($bundles) . ']' => key($bundles),
     ), t('Save settings'));
 
     // Check that the field appears in the overview form.
@@ -182,7 +182,7 @@ public function createEntityReferenceField($target_type, $bundle = NULL) {
     // Select required fields if there are any.
     $edit = array();
     if($bundle) {
-      $edit['instance[settings][handler_settings][target_bundles][' . $bundle . ']'] = TRUE;
+      $edit['field[settings][handler_settings][target_bundles][' . $bundle . ']'] = TRUE;
     }
 
     // Save settings.
diff --git a/core/modules/entity_reference/src/Tests/EntityReferenceAutoCreateTest.php b/core/modules/entity_reference/src/Tests/EntityReferenceAutoCreateTest.php
index f9b934e..3b1cc5e 100644
--- a/core/modules/entity_reference/src/Tests/EntityReferenceAutoCreateTest.php
+++ b/core/modules/entity_reference/src/Tests/EntityReferenceAutoCreateTest.php
@@ -41,7 +41,7 @@ protected function setUp() {
       'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
     ))->save();
 
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'label' => 'Entity reference field',
       'field_name' => 'test_field',
       'entity_type' => 'node',
diff --git a/core/modules/entity_reference/src/Tests/EntityReferenceAutocompleteTest.php b/core/modules/entity_reference/src/Tests/EntityReferenceAutocompleteTest.php
index 7a41623..a280e76 100644
--- a/core/modules/entity_reference/src/Tests/EntityReferenceAutocompleteTest.php
+++ b/core/modules/entity_reference/src/Tests/EntityReferenceAutocompleteTest.php
@@ -53,7 +53,7 @@ class EntityReferenceAutocompleteTest extends EntityUnitTestBase {
   protected function setUp() {
     parent::setUp();
 
-    entity_reference_create_instance($this->entityType, $this->bundle, $this->fieldName, 'Field test', $this->entityType);
+    entity_reference_create_field($this->entityType, $this->bundle, $this->fieldName, 'Field test', $this->entityType);
   }
 
   /**
diff --git a/core/modules/entity_reference/src/Tests/EntityReferenceFieldDefaultValueTest.php b/core/modules/entity_reference/src/Tests/EntityReferenceFieldDefaultValueTest.php
index f36e276..180ccd7 100644
--- a/core/modules/entity_reference/src/Tests/EntityReferenceFieldDefaultValueTest.php
+++ b/core/modules/entity_reference/src/Tests/EntityReferenceFieldDefaultValueTest.php
@@ -49,7 +49,7 @@ function testEntityReferenceDefaultValue() {
       'settings' => array('target_type' => 'node'),
     ));
     $this->fieldStorage->save();
-    $this->instance = entity_create('field_instance_config', array(
+    $this->field = entity_create('field_config', array(
       'field_storage' => $this->fieldStorage,
       'bundle' => 'reference_content',
       'settings' => array(
@@ -60,20 +60,20 @@ function testEntityReferenceDefaultValue() {
         ),
       ),
     ));
-    $this->instance->save();
+    $this->field->save();
 
     // Set created node as default_value.
-    $instance_edit = array(
+    $field_edit = array(
       'default_value_input[' . $this->fieldStorage->name . '][0][target_id]' => $referenced_node->getTitle() . ' (' .$referenced_node->id() . ')',
     );
-    $this->drupalPostForm('admin/structure/types/manage/reference_content/fields/node.reference_content.' . $this->fieldStorage->name, $instance_edit, t('Save settings'));
+    $this->drupalPostForm('admin/structure/types/manage/reference_content/fields/node.reference_content.' . $this->fieldStorage->name, $field_edit, t('Save settings'));
 
     // Check that default value is selected in default value form.
     $this->drupalGet('admin/structure/types/manage/reference_content/fields/node.reference_content.' . $this->fieldStorage->name);
     $this->assertRaw('name="default_value_input[' . $this->fieldStorage->name . '][0][target_id]" value="' . $referenced_node->getTitle() .' (' .$referenced_node->id() . ')', 'The default value is selected in instance settings page');
 
     // Check if the ID has been converted to UUID in config entity.
-    $config_entity = $this->container->get('config.factory')->get('field.instance.node.reference_content.' . $this->fieldStorage->name)->get();
+    $config_entity = $this->container->get('config.factory')->get('field.field.node.reference_content.' . $this->fieldStorage->name)->get();
     $this->assertTrue(isset($config_entity['default_value'][0]['target_uuid']), 'Default value contains target_uuid property');
     $this->assertEqual($config_entity['default_value'][0]['target_uuid'], $referenced_node->uuid(), 'Content uuid and config entity uuid are the same');
 
diff --git a/core/modules/entity_reference/src/Tests/EntityReferenceFieldTest.php b/core/modules/entity_reference/src/Tests/EntityReferenceFieldTest.php
index 5bb3c9a..c9c4160 100644
--- a/core/modules/entity_reference/src/Tests/EntityReferenceFieldTest.php
+++ b/core/modules/entity_reference/src/Tests/EntityReferenceFieldTest.php
@@ -58,7 +58,7 @@ protected function setUp() {
     $this->installEntitySchema('entity_test_rev');
 
     // Setup a field and instance.
-    entity_reference_create_instance(
+    entity_reference_create_field(
       $this->entityType,
       $this->bundle,
       $this->fieldName,
diff --git a/core/modules/entity_reference/src/Tests/EntityReferenceFormatterTest.php b/core/modules/entity_reference/src/Tests/EntityReferenceFormatterTest.php
index 39fa649..ab8b215 100644
--- a/core/modules/entity_reference/src/Tests/EntityReferenceFormatterTest.php
+++ b/core/modules/entity_reference/src/Tests/EntityReferenceFormatterTest.php
@@ -54,7 +54,7 @@ class EntityReferenceFormatterTest extends EntityUnitTestBase {
   protected function setUp() {
     parent::setUp();
 
-    entity_reference_create_instance($this->entityType, $this->bundle, $this->fieldName, 'Field test', $this->entityType);
+    entity_reference_create_field($this->entityType, $this->bundle, $this->fieldName, 'Field test', $this->entityType);
 
     // Set up a field, so that the entity that'll be referenced bubbles up a
     // cache tag when rendering it entirely.
@@ -64,7 +64,7 @@ protected function setUp() {
       'type' => 'text',
       'settings' => array(),
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => $this->entityType,
       'bundle' => $this->bundle,
       'field_name' => 'body',
diff --git a/core/modules/entity_reference/src/Tests/EntityReferenceIntegrationTest.php b/core/modules/entity_reference/src/Tests/EntityReferenceIntegrationTest.php
index c16d1bc..c450687 100644
--- a/core/modules/entity_reference/src/Tests/EntityReferenceIntegrationTest.php
+++ b/core/modules/entity_reference/src/Tests/EntityReferenceIntegrationTest.php
@@ -63,7 +63,7 @@ public function testSupportedEntityTypesAndWidgets() {
       $this->fieldName = 'field_test_' . $referenced_entities[0]->getEntityTypeId();
 
       // Create an Entity reference field.
-      entity_reference_create_instance($this->entityType, $this->bundle, $this->fieldName, $this->fieldName, $referenced_entities[0]->getEntityTypeId(), 'default', array(), 2);
+      entity_reference_create_field($this->entityType, $this->bundle, $this->fieldName, $this->fieldName, $referenced_entities[0]->getEntityTypeId(), 'default', array(), 2);
 
       // Test the default 'entity_reference_autocomplete' widget.
       entity_get_form_display($this->entityType, $this->bundle, 'default')->setComponent($this->fieldName)->save();
diff --git a/core/modules/entity_reference/src/Tests/EntityReferenceItemTest.php b/core/modules/entity_reference/src/Tests/EntityReferenceItemTest.php
index d48df38..1ffa577 100644
--- a/core/modules/entity_reference/src/Tests/EntityReferenceItemTest.php
+++ b/core/modules/entity_reference/src/Tests/EntityReferenceItemTest.php
@@ -63,8 +63,8 @@ protected function setUp() {
     $this->term->save();
 
     // Use the util to create an instance.
-    entity_reference_create_instance('entity_test', 'entity_test', 'field_test_taxonomy_term', 'Test content entity reference', 'taxonomy_term');
-    entity_reference_create_instance('entity_test', 'entity_test', 'field_test_taxonomy_vocabulary', 'Test config entity reference', 'taxonomy_vocabulary');
+    entity_reference_create_field('entity_test', 'entity_test', 'field_test_taxonomy_term', 'Test content entity reference', 'taxonomy_term');
+    entity_reference_create_field('entity_test', 'entity_test', 'field_test_taxonomy_vocabulary', 'Test config entity reference', 'taxonomy_vocabulary');
   }
 
   /**
diff --git a/core/modules/entity_reference/src/Tests/EntityReferenceSelectionAccessTest.php b/core/modules/entity_reference/src/Tests/EntityReferenceSelectionAccessTest.php
index d0f6449..c51bcb3 100644
--- a/core/modules/entity_reference/src/Tests/EntityReferenceSelectionAccessTest.php
+++ b/core/modules/entity_reference/src/Tests/EntityReferenceSelectionAccessTest.php
@@ -68,7 +68,7 @@ public function testNodeHandler() {
       'cardinality' => '1',
     ));
     $field_storage->save();
-    $instance = entity_create('field_instance_config', array(
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'test_bundle',
       'settings' => array(
@@ -78,7 +78,7 @@ public function testNodeHandler() {
         ),
       ),
     ));
-    $instance->save();
+    $field->save();
 
     // Build a set of test data.
     // Titles contain HTML-special characters to test escaping.
@@ -162,7 +162,7 @@ public function testNodeHandler() {
         'result' => array(),
       ),
     );
-    $this->assertReferenceable($instance, $referenceable_tests, 'Node handler');
+    $this->assertReferenceable($field, $referenceable_tests, 'Node handler');
 
     // Test as an admin.
     $admin_user = $this->drupalCreateUser(array('access content', 'bypass node access'));
@@ -191,7 +191,7 @@ public function testNodeHandler() {
         ),
       ),
     );
-    $this->assertReferenceable($instance, $referenceable_tests, 'Node handler (admin)');
+    $this->assertReferenceable($field, $referenceable_tests, 'Node handler (admin)');
   }
 
   /**
@@ -210,7 +210,7 @@ public function testUserHandler() {
       'cardinality' => '1',
     ));
     $field_storage->save();
-    $instance = entity_create('field_instance_config', array(
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'test_bundle',
       'settings' => array(
@@ -220,7 +220,7 @@ public function testUserHandler() {
         ),
       ),
     ));
-    $instance->save();
+    $field->save();
 
     // Build a set of test data.
     $user_values = array(
@@ -296,7 +296,7 @@ public function testUserHandler() {
         'result' => array(),
       ),
     );
-    $this->assertReferenceable($instance, $referenceable_tests, 'User handler');
+    $this->assertReferenceable($field, $referenceable_tests, 'User handler');
 
     \Drupal::currentUser()->setAccount($users['admin']);
     $referenceable_tests = array(
@@ -335,7 +335,7 @@ public function testUserHandler() {
         ),
       ),
     );
-    $this->assertReferenceable($instance, $referenceable_tests, 'User handler (admin)');
+    $this->assertReferenceable($field, $referenceable_tests, 'User handler (admin)');
   }
 
   /**
@@ -355,7 +355,7 @@ public function testCommentHandler() {
       'cardinality' => '1',
     ));
     $field_storage->save();
-    $instance = entity_create('field_instance_config', array(
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'test_bundle',
       'settings' => array(
@@ -365,7 +365,7 @@ public function testCommentHandler() {
         ),
       ),
     ));
-    $instance->save();
+    $field->save();
 
     // Build a set of test data.
     $node_values = array(
@@ -474,7 +474,7 @@ public function testCommentHandler() {
         'result' => array(),
       ),
     );
-    $this->assertReferenceable($instance, $referenceable_tests, 'Comment handler');
+    $this->assertReferenceable($field, $referenceable_tests, 'Comment handler');
 
     // Test as a comment admin.
     $admin_user = $this->drupalCreateUser(array('access content', 'access comments', 'administer comments'));
@@ -492,7 +492,7 @@ public function testCommentHandler() {
         ),
       ),
     );
-    $this->assertReferenceable($instance, $referenceable_tests, 'Comment handler (comment admin)');
+    $this->assertReferenceable($field, $referenceable_tests, 'Comment handler (comment admin)');
 
     // Test as a node and comment admin.
     $admin_user = $this->drupalCreateUser(array('access content', 'access comments', 'administer comments', 'bypass node access'));
@@ -511,6 +511,6 @@ public function testCommentHandler() {
         ),
       ),
     );
-    $this->assertReferenceable($instance, $referenceable_tests, 'Comment handler (comment + node admin)');
+    $this->assertReferenceable($field, $referenceable_tests, 'Comment handler (comment + node admin)');
   }
 }
diff --git a/core/modules/entity_reference/src/Tests/EntityReferenceSelectionSortTest.php b/core/modules/entity_reference/src/Tests/EntityReferenceSelectionSortTest.php
index 3d76c20..5200800 100644
--- a/core/modules/entity_reference/src/Tests/EntityReferenceSelectionSortTest.php
+++ b/core/modules/entity_reference/src/Tests/EntityReferenceSelectionSortTest.php
@@ -38,7 +38,7 @@ public function testSort() {
       'entity_types' => array('node'),
     ))->save();
 
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'label' => 'Text Field',
       'field_name' => 'field_text',
       'entity_type' => 'node',
@@ -60,7 +60,7 @@ public function testSort() {
       'cardinality' => 1,
     ));
     $field_storage->save();
-    $instance = entity_create('field_instance_config', array(
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'entity_type' => 'entity_test',
       'bundle' => 'test_bundle',
@@ -76,7 +76,7 @@ public function testSort() {
         ),
       ),
     ));
-    $instance->save();
+    $field->save();
 
     // Build a set of test data.
     $node_values = array(
@@ -117,7 +117,7 @@ public function testSort() {
     $normal_user = $this->drupalCreateUser(array('access content'));
     \Drupal::currentUser()->setAccount($normal_user);
 
-    $handler = $this->container->get('plugin.manager.entity_reference.selection')->getSelectionHandler($instance);
+    $handler = $this->container->get('plugin.manager.entity_reference.selection')->getSelectionHandler($field);
 
     // Not only assert the result, but make sure the keys are sorted as
     // expected.
@@ -129,11 +129,11 @@ public function testSort() {
     $this->assertIdentical($result['article'], $expected_result, 'Query sorted by field returned expected values.');
 
     // Assert sort by property.
-    $instance->settings['handler_settings']['sort'] = array(
+    $field->settings['handler_settings']['sort'] = array(
       'field' => 'nid',
       'direction' => 'ASC',
     );
-    $handler = $this->container->get('plugin.manager.entity_reference.selection')->getSelectionHandler($instance);
+    $handler = $this->container->get('plugin.manager.entity_reference.selection')->getSelectionHandler($field);
     $result = $handler->getReferenceableEntities();
     $expected_result = array(
       $nodes['published1']->id() => $node_labels['published1'],
diff --git a/core/modules/entity_reference/src/Tests/Views/EntityReferenceRelationshipTest.php b/core/modules/entity_reference/src/Tests/Views/EntityReferenceRelationshipTest.php
index ca44975..6e74fbc 100644
--- a/core/modules/entity_reference/src/Tests/Views/EntityReferenceRelationshipTest.php
+++ b/core/modules/entity_reference/src/Tests/Views/EntityReferenceRelationshipTest.php
@@ -9,7 +9,7 @@
 
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
 use Drupal\field\Entity\FieldStorageConfig;
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 use Drupal\views\Tests\ViewTestData;
 use Drupal\views\Tests\ViewUnitTestBase;
 use Drupal\views\Views;
@@ -64,7 +64,7 @@ protected function setUp() {
     ));
     $field_storage->save();
 
-    $instance = FieldInstanceConfig::create(array(
+    $field = FieldConfig::create(array(
       'entity_type' => 'entity_test',
       'field_name' => 'field_test',
       'bundle' => 'entity_test',
@@ -73,7 +73,7 @@ protected function setUp() {
         'handler_settings' => array(),
       ),
     ));
-    $instance->save();
+    $field->save();
 
     // Create some test entities which link each other.
     $entity_storage= \Drupal::entityManager()->getStorage('entity_test');
diff --git a/core/modules/entity_reference/src/Tests/Views/SelectionTest.php b/core/modules/entity_reference/src/Tests/Views/SelectionTest.php
index dbfe0f6..fef8460 100644
--- a/core/modules/entity_reference/src/Tests/Views/SelectionTest.php
+++ b/core/modules/entity_reference/src/Tests/Views/SelectionTest.php
@@ -45,7 +45,7 @@ public function testSelectionHandler() {
       'cardinality' => '1',
     ));
     $field_storage->save();
-    $instance = entity_create('field_instance_config', array(
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'test_bundle',
       'settings' => array(
@@ -60,10 +60,10 @@ public function testSelectionHandler() {
         ),
       ),
     ));
-    $instance->save();
+    $field->save();
 
     // Get values from selection handler.
-    $handler = $this->container->get('plugin.manager.entity_reference.selection')->getSelectionHandler($instance);
+    $handler = $this->container->get('plugin.manager.entity_reference.selection')->getSelectionHandler($field);
     $result = $handler->getReferenceableEntities();
 
     $success = FALSE;
diff --git a/core/modules/field/config/schema/field.schema.yml b/core/modules/field/config/schema/field.schema.yml
index 65156b5..4fd9c3f 100644
--- a/core/modules/field/config/schema/field.schema.yml
+++ b/core/modules/field/config/schema/field.schema.yml
@@ -25,7 +25,7 @@ field.storage.*.*:
       type: string
       label: 'Type'
     settings:
-      type: field.[%parent.type].settings
+      type: field.[%parent.type].storage_settings
     module:
       type: string
       label: 'Module'
@@ -48,9 +48,9 @@ field.storage.*.*:
             - type: ignore
               label: 'Index'
 
-field.instance.*.*.*:
+field.field.*.*.*:
   type: field_config_base
-  label: 'Field instance'
+  label: 'Field'
 
 entity_form_display.field.hidden:
   type: entity_field_form_display_base
diff --git a/core/modules/field/field.api.php b/core/modules/field/field.api.php
index 8af955f..3ac1d4c 100644
--- a/core/modules/field/field.api.php
+++ b/core/modules/field/field.api.php
@@ -294,19 +294,19 @@ function hook_field_purge_field_storage(\Drupal\field\Entity\FieldStorageConfig
 }
 
 /**
- * Acts when a field instance is being purged.
+ * Acts when a field is being purged.
  *
- * In field_purge_instance(), after the instance definition has been removed
+ * In field_purge_field(), after the field definition has been removed
  * from the the system, the entity storage has purged stored field data, and the
  * field info cache has been cleared, this hook is invoked on all modules to
- * allow them to respond to the field instance being purged.
+ * allow them to respond to the field being purged.
  *
- * @param $instance
- *   The instance being purged.
+ * @param $field
+ *   The field being purged.
  */
-function hook_field_purge_instance($instance) {
-  db_delete('my_module_field_instance_info')
-    ->condition('id', $instance['id'])
+function hook_field_purge_field(\Drupal\field\Entity\FieldConfig $field) {
+  db_delete('my_module_field_info')
+    ->condition('id', $field->id())
     ->execute();
 }
 
diff --git a/core/modules/field/field.module b/core/modules/field/field.module
index 87ba4f7..05965e7 100644
--- a/core/modules/field/field.module
+++ b/core/modules/field/field.module
@@ -54,7 +54,7 @@
  *   and display formatters.
  *
  * - @link field_purge Field API bulk data deletion @endlink: Cleans up after
- *   bulk deletion operations such as deletion of field or field_instance.
+ *   bulk deletion operations such as deletion of field storage or field.
  */
 
 /**
@@ -185,15 +185,15 @@ function field_entity_bundle_field_info(EntityTypeInterface $entity_type, $bundl
   if ($entity_type->isFieldable()) {
     // Query by filtering on the ID as this is more efficient than filtering
     // on the entity_type property directly.
-    $ids = \Drupal::entityQuery('field_instance_config')
+    $ids = \Drupal::entityQuery('field_config')
       ->condition('id', $entity_type->id() . '.' . $bundle . '.', 'STARTS_WITH')
       ->execute();
 
     // Fetch all fields and key them by field name.
-    $field_instance_configs = entity_load_multiple('field_instance_config', $ids);
+    $field_configs = entity_load_multiple('field_config', $ids);
     $result = array();
-    foreach ($field_instance_configs as $field_instance) {
-      $result[$field_instance->getName()] = $field_instance;
+    foreach ($field_configs as $field) {
+      $result[$field->getName()] = $field;
     }
     return $result;
   }
@@ -203,22 +203,22 @@ function field_entity_bundle_field_info(EntityTypeInterface $entity_type, $bundl
  * Implements hook_entity_bundle_rename().
  */
 function field_entity_bundle_rename($entity_type, $bundle_old, $bundle_new) {
-  $instances = entity_load_multiple_by_properties('field_instance_config', array('entity_type' => $entity_type, 'bundle' => $bundle_old, 'include_deleted' => TRUE));
-  foreach ($instances as $instance) {
-    $id_new = $instance->entity_type . '.' . $bundle_new . '.' . $instance->field_name;
-    $instance->set('id', $id_new);
-    $instance->bundle = $bundle_new;
-    // Save non-deleted instances.
-    if (!$instance->isDeleted()) {
-      $instance->allowBundleRename();
-      $instance->save();
+  $fields = entity_load_multiple_by_properties('field_config', array('entity_type' => $entity_type, 'bundle' => $bundle_old, 'include_deleted' => TRUE));
+  foreach ($fields as $field) {
+    $id_new = $field->entity_type . '.' . $bundle_new . '.' . $field->field_name;
+    $field->set('id', $id_new);
+    $field->bundle = $bundle_new;
+    // Save non-deleted fields.
+    if (!$field->isDeleted()) {
+      $field->allowBundleRename();
+      $field->save();
     }
-    // Update deleted instances directly in the state storage.
+    // Update deleted fields directly in the state storage.
     else {
       $state = \Drupal::state();
-      $deleted_instances = $state->get('field.instance.deleted') ?: array();
-      $deleted_instances[$instance->uuid] = $instance->toArray();
-      $state->set('field.instance.deleted', $deleted_instances);
+      $deleted_fields = $state->get('field.field.deleted') ?: array();
+      $deleted_fields[$field->uuid] = $field->toArray();
+      $state->set('field.field.deleted', $deleted_fields);
     }
   }
 }
@@ -226,20 +226,18 @@ function field_entity_bundle_rename($entity_type, $bundle_old, $bundle_new) {
 /**
  * Implements hook_entity_bundle_delete().
  *
- * This deletes the data for the field instances as well as the field instances
- * themselves. This function actually just marks the data and field instances as
- * deleted, leaving the garbage collection for a separate process, because it is
- * not always possible to delete this much data in a single page request
- * (particularly since for some field types, the deletion is more than just a
- * simple DELETE query).
+ * This deletes the data for the field as well as the field themselves. This
+ * function actually just marks the data and fields as deleted, leaving the
+ * garbage collection for a separate process, because it is not always
+ * possible to delete this much data in a single page request (particularly
+ * since for some field types, the deletion is more than just a simple DELETE
+ * query).
  */
 function field_entity_bundle_delete($entity_type, $bundle) {
-  // Get the instances on the bundle. entity_load_multiple_by_properties() must
-  // be used here since field_info_instances() does not return instances for
-  // disabled entity types or bundles.
-  $instances = entity_load_multiple_by_properties('field_instance_config', array('entity_type' => $entity_type, 'bundle' => $bundle));
-  foreach ($instances as $instance) {
-    $instance->delete();
+  // Get the fields on the bundle.
+  $fields = entity_load_multiple_by_properties('field_config', array('entity_type' => $entity_type, 'bundle' => $bundle));
+  foreach ($fields as $field) {
+    $field->delete();
   }
 }
 
diff --git a/core/modules/field/field.purge.inc b/core/modules/field/field.purge.inc
index 2676952..73de63f 100644
--- a/core/modules/field/field.purge.inc
+++ b/core/modules/field/field.purge.inc
@@ -8,6 +8,7 @@
 use Drupal\Core\Field\FieldException;
 use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\field\FieldStorageConfigInterface;
+use Drupal\field\FieldConfigInterface;
 
 /**
  * @defgroup field_purge Field API bulk data deletion
@@ -15,7 +16,7 @@
  * Cleans up after Field API bulk deletion operations.
  *
  * Field API provides functions for deleting data attached to individual
- * entities as well as deleting entire fields or field instances in a single
+ * entities as well as deleting entire fields or field storages in a single
  * operation.
  *
  * When a single entity is deleted, the Entity storage performs the
@@ -30,14 +31,14 @@
  *
  * Similar operations are performed on deletion of a single entity revision.
  *
- * When a field, bundle, or field instance is deleted, it is not practical to
+ * When a bundle, field or field storage is deleted, it is not practical to
  * perform those operations immediately on every affected entity in a single
  * page request; there could be thousands or millions of them. Instead, the
- * appropriate field data items, instances, and/or fields are marked as deleted
- * so that subsequent load or query operations will not return them. Later, a
- * separate process cleans up, or "purges", the marked-as-deleted data by going
- * through the three-step process described above and, finally, removing deleted
- * field and instance records.
+ * appropriate field data items, fields, and/or field storages are marked as
+ * deleted so that subsequent load or query operations will not return them.
+ * Later, a separate process cleans up, or "purges", the marked-as-deleted data
+ * by going through the three-step process described above and, finally,
+ * removing deleted field storage and field records.
  *
  * Purging field data is made somewhat tricky by the fact that, while
  * $entity->delete() has a complete entity to pass to the various deletion
@@ -50,22 +51,21 @@
  * Field API resolves this problem by using stub entities during purge
  * operations, containing only the information from the original entity that
  * Field API knows about: entity type, ID, revision ID, and bundle. It also
- * contains the field data for whichever field instance is currently being
- * purged.
+ * contains the field data for whichever field is currently being purged.
  *
  * See @link field Field API @endlink for information about the other parts of
  * the Field API.
  */
 
 /**
- * Purges a batch of deleted Field API data, instances, or fields.
+ * Purges a batch of deleted Field API data, field storages, or fields.
  *
  * This function will purge deleted field data in batches. The batch size
  * is defined as an argument to the function, and once each batch is finished,
  * it continues with the next batch until all have completed. If a deleted field
- * instance with no remaining data records is found, the instance itself will
- * be purged. If a deleted field with no remaining field instances is found, the
- * field itself will be purged.
+ * with no remaining data records is found, the field itself will
+ * be purged. If a deleted field storage with no remaining fields is found, the
+ * field storage itself will be purged.
  *
  * @param $batch_size
  *   The maximum number of field data records to purge before returning.
@@ -80,11 +80,11 @@ function field_purge_batch($batch_size, $field_storage_uuid = NULL) {
   if ($field_storage_uuid) {
     $properties['field_storage_uuid'] = $field_storage_uuid;
   }
-  $instances = entity_load_multiple_by_properties('field_instance_config', $properties);
+  $fields = entity_load_multiple_by_properties('field_config', $properties);
 
   $info = \Drupal::entityManager()->getDefinitions();
-  foreach ($instances as $instance) {
-    $entity_type = $instance->entity_type;
+  foreach ($fields as $field) {
+    $entity_type = $field->entity_type;
 
     // We cannot purge anything if the entity type is unknown (e.g. the
     // providing module was uninstalled).
@@ -93,10 +93,10 @@ function field_purge_batch($batch_size, $field_storage_uuid = NULL) {
       continue;
     }
 
-    $count_purged = \Drupal::entityManager()->getStorage($entity_type)->purgeFieldData($instance, $batch_size);
+    $count_purged = \Drupal::entityManager()->getStorage($entity_type)->purgeFieldData($field, $batch_size);
     if ($count_purged < $batch_size || $count_purged == 0) {
-      // No field data remains for the instance, so we can remove it.
-      field_purge_instance($instance);
+      // No field data remains for the field, so we can remove it.
+      field_purge_field($field);
     }
     $batch_size -= $count_purged;
     // Only delete up to the maximum number of records.
@@ -105,8 +105,7 @@ function field_purge_batch($batch_size, $field_storage_uuid = NULL) {
     }
   }
 
-  // Retrieve all deleted field storages. Any that have no instances can be
-  // purged.
+  // Retrieve all deleted field storages. Any that have no fields can be purged.
   $deleted_storages = \Drupal::state()->get('field.storage.deleted') ?: array();
   foreach ($deleted_storages as $field_storage) {
     $field_storage = new FieldStorageConfig($field_storage);
@@ -122,45 +121,47 @@ function field_purge_batch($batch_size, $field_storage_uuid = NULL) {
       continue;
     }
 
-    $instances = entity_load_multiple_by_properties('field_instance_config', array('field_storage_uuid' => $field_storage->uuid(), 'include_deleted' => TRUE));
-    if (empty($instances)) {
+    $fields = entity_load_multiple_by_properties('field_config', array('field_storage_uuid' => $field_storage->uuid(), 'include_deleted' => TRUE));
+    if (empty($fields)) {
       field_purge_field_storage($field_storage);
     }
   }
 }
 
 /**
- * Purges a field instance record from the database.
+ * Purges a field record from the database.
  *
- * This function assumes all data for the instance has already been purged and
+ * This function assumes all data for the field has already been purged and
  * should only be called by field_purge_batch().
  *
- * @param $instance
- *   The instance record to purge.
+ * @param $field
+ *   The field record to purge.
  */
-function field_purge_instance($instance) {
+function field_purge_field(FieldConfigInterface $field) {
   $state = \Drupal::state();
-  $deleted_instances = $state->get('field.instance.deleted');
-  unset($deleted_instances[$instance->uuid()]);
-  $state->set('field.instance.deleted', $deleted_instances);
+  $deleted_fields = $state->get('field.field.deleted');
+  unset($deleted_fields[$field->uuid()]);
+  $state->set('field.field.deleted', $deleted_fields);
 
   // Invoke external hooks after the cache is cleared for API consistency.
-  \Drupal::moduleHandler()->invokeAll('field_purge_instance', array($instance));
+  \Drupal::moduleHandler()->invokeAll('field_purge_field', array($field));
 }
 
 /**
  * Purges a field record from the database.
  *
- * This function assumes all instances for the field has already been purged,
- * and should only be called by field_purge_batch().
+ * This function assumes all fields for the field storage has already been
+ * purged, and should only be called by field_purge_batch().
  *
  * @param \Drupal\field\FieldStorageConfigInterface $field_storage
  *   The field storage to purge.
+ *
+ * @throws Drupal\field\FieldException
  */
 function field_purge_field_storage(FieldStorageConfigInterface $field_storage) {
-  $instances = entity_load_multiple_by_properties('field_instance_config', array('field_storage_uuid' => $field_storage->uuid(), 'include_deleted' => TRUE));
-  if (count($instances) > 0) {
-    throw new FieldException(t('Attempt to purge a field storage @field_name that still has instances.', array('@field_name' => $field_storage->getName())));
+  $fields = entity_load_multiple_by_properties('field_config', array('field_storage_uuid' => $field_storage->uuid(), 'include_deleted' => TRUE));
+  if (count($fields) > 0) {
+    throw new FieldException(t('Attempt to purge a field storage @field_name that still has fields.', array('@field_name' => $field_storage->getName())));
   }
 
   $state = \Drupal::state();
diff --git a/core/modules/field/field.views.inc b/core/modules/field/field.views.inc
index 3f68419..5ce9840 100644
--- a/core/modules/field/field.views.inc
+++ b/core/modules/field/field.views.inc
@@ -9,7 +9,7 @@
 use Drupal\Core\Entity\ContentEntityDatabaseStorage;
 use Drupal\Core\Entity\EntityStorageInterface;
 use Drupal\field\FieldStorageConfigInterface;
-use Drupal\field\FieldInstanceConfigInterface;
+use Drupal\field\FieldConfigInterface;
 
 /**
  * Implements hook_views_data().
@@ -74,19 +74,19 @@ function _field_views_is_sql_entity_type(FieldStorageConfigInterface $field_stor
 /**
  * Returns the label of a certain field.
  *
- * Therefore it looks up in all bundles to find the most used instance.
+ * Therefore it looks up in all bundles to find the most used field.
  */
 function field_views_field_label($entity_type, $field_name) {
   $label_counter = array();
   $all_labels = array();
-  // Count the amount of instances per label per field.
+  // Count the amount of fields per label per field storage.
   foreach (array_keys(\Drupal::entityManager()->getBundleInfo($entity_type)) as $bundle) {
-    $bundle_instances = array_filter(\Drupal::entityManager()->getFieldDefinitions($entity_type, $bundle), function ($field_definition) {
-      return $field_definition instanceof FieldInstanceConfigInterface;
+    $bundle_fields = array_filter(\Drupal::entityManager()->getFieldDefinitions($entity_type, $bundle), function ($field_definition) {
+      return $field_definition instanceof FieldConfigInterface;
     });
-    if (isset($bundle_instances[$field_name])) {
-      $instance = $bundle_instances[$field_name];
-      $label = $instance->getLabel();
+    if (isset($bundle_fields[$field_name])) {
+      $field = $bundle_fields[$field_name];
+      $label = $field->getLabel();
       $label_counter[$label] = isset($label_counter[$label]) ? ++$label_counter[$label] : 1;
       $all_labels[$label] = TRUE;
     }
@@ -116,7 +116,7 @@ function field_views_field_default_views_data(FieldStorageConfigInterface $field
   if (!\Drupal::service('plugin.manager.field.field_type')->hasDefinition($field_storage->getType())) {
     return $data;
   }
-  // Check the field has instances.
+  // Check the field storage has fields.
   if (!$field_storage->getBundles()) {
     return $data;
   }
@@ -223,7 +223,7 @@ function field_views_field_default_views_data(FieldStorageConfigInterface $field
     $add_fields[] = ContentEntityDatabaseStorage::_fieldColumnName($field_storage, $column);
   }
   // Determine the label to use for the field. We don't have a label available
-  // at the field level, so we just go through all instances and take the one
+  // at the field level, so we just go through all fields and take the one
   // which is used the most frequently.
   list($label, $all_labels) = field_views_field_label($entity_type_id, $field_name);
 
diff --git a/core/modules/field/src/ConfigImporterFieldPurger.php b/core/modules/field/src/ConfigImporterFieldPurger.php
index f762954..55294b2 100644
--- a/core/modules/field/src/ConfigImporterFieldPurger.php
+++ b/core/modules/field/src/ConfigImporterFieldPurger.php
@@ -87,7 +87,7 @@ protected static function initializeSandbox(array &$context, ConfigImporter $con
       }
     }
     // Each field possibly needs one last field_purge_batch() call to remove the
-    // last instance and the field itself.
+    // last field and the field storage itself.
     $context['sandbox']['field']['steps_to_delete'] += count($fields);
 
     $context['sandbox']['field']['current_progress'] = 0;
diff --git a/core/modules/field/src/Entity/FieldConfig.php b/core/modules/field/src/Entity/FieldConfig.php
new file mode 100644
index 0000000..7c5b761
--- /dev/null
+++ b/core/modules/field/src/Entity/FieldConfig.php
@@ -0,0 +1,533 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\field\Entity\FieldConfig.
+ */
+
+namespace Drupal\field\Entity;
+
+use Drupal\Component\Utility\String;
+use Drupal\Core\Entity\EntityStorageInterface;
+use Drupal\Core\Field\FieldConfigBase;
+use Drupal\Core\Field\FieldException;
+use Drupal\field\FieldStorageConfigInterface;
+use Drupal\field\FieldConfigInterface;
+
+/**
+ * Defines the Field entity.
+ *
+ * @ConfigEntityType(
+ *   id = "field_config",
+ *   label = @Translation("Field"),
+ *   handlers = {
+ *     "access" = "Drupal\field\FieldConfigAccessControlHandler",
+ *     "storage" = "Drupal\field\FieldConfigStorage"
+ *   },
+ *   config_prefix = "field",
+ *   entity_keys = {
+ *     "id" = "id",
+ *     "label" = "label"
+ *   }
+ * )
+ */
+class FieldConfig extends FieldConfigBase implements FieldConfigInterface {
+
+  /**
+   * The field ID.
+   *
+   * The ID consists of 3 parts: the entity type, bundle and the field name.
+   *
+   * Example: node.article.body, user.user.field_main_image.
+   *
+   * @var string
+   */
+  public $id;
+
+  /**
+   * The name of the field.
+   *
+   * Along with $entity_type, this determines the associated FieldStorageConfig.
+   *
+   * @var string
+   */
+  public $field_name;
+
+  /**
+   * The name of the entity type the field is attached to.
+   *
+   * @var string
+   */
+  public $entity_type;
+
+  /**
+   * The name of the bundle the field is attached to.
+   *
+   * @var string
+   */
+  public $bundle;
+
+  /**
+   * The human-readable label for the field.
+   *
+   * This will be used as the title of Form API elements for the field in entity
+   * edit forms, or as the label for the field values in displayed entities.
+   *
+   * If not specified, this defaults to the field_name (mostly useful for fields
+   * created in tests).
+   *
+   * @var string
+   */
+  public $label;
+
+  /**
+   * The field description.
+   *
+   * A human-readable description for the field when used with this bundle.
+   * For example, the description will be the help text of Form API elements for
+   * this field in entity edit forms.
+   *
+   * @var string
+   */
+  public $description = '';
+
+  /**
+   * Field-type specific settings.
+   *
+   * An array of key/value pairs. The keys and default values are defined by the
+   * field type.
+   *
+   * @var array
+   */
+  public $settings = array();
+
+  /**
+   * Flag indicating whether the field is required.
+   *
+   * TRUE if a value for this field is required when used with this bundle,
+   * FALSE otherwise. Currently, required-ness is only enforced at the Form API
+   * level in entity edit forms, not during direct API saves.
+   *
+   * @var bool
+   */
+  public $required = FALSE;
+
+  /**
+   * Flag indicating whether the field is translatable.
+   *
+   * Defaults to TRUE.
+   *
+   * @var bool
+   */
+  public $translatable = TRUE;
+
+  /**
+   * Default field value.
+   *
+   * The default value is used when an entity is created, either:
+   * - through an entity creation form; the form elements for the field are
+   *   prepopulated with the default value.
+   * - through direct API calls (i.e. $entity->save()); the default value is
+   *   added if the $entity object provides no explicit entry (actual values or
+   *   "the field is empty") for the field.
+   *
+   * The default value is expressed as a numerically indexed array of items,
+   * each item being an array of key/value pairs matching the set of 'columns'
+   * defined by the "field schema" for the field type, as exposed in
+   * hook_field_schema(). If the number of items exceeds the cardinality of the
+   * field, extraneous items will be ignored.
+   *
+   * This property is overlooked if the $default_value_function is non-empty.
+   *
+   * Example for a integer field:
+   * @code
+   * array(
+   *   array('value' => 1),
+   *   array('value' => 2),
+   * )
+   * @endcode
+   *
+   * @var array
+   */
+  public $default_value = array();
+
+  /**
+   * The name of a callback function that returns default values.
+   *
+   * The function will be called with the following arguments:
+   * - \Drupal\Core\Entity\ContentEntityInterface $entity
+   *   The entity being created.
+   * - \Drupal\Core\Field\FieldDefinitionInterface $definition
+   *   The field definition.
+   * It should return an array of default values, in the same format as the
+   * $default_value property.
+   *
+   * This property takes precedence on the list of fixed values specified in the
+   * $default_value property.
+   *
+   * @var string
+   */
+  public $default_value_function = '';
+
+  /**
+   * Flag indicating whether the field is deleted.
+   *
+   * The delete() method marks the field as "deleted" and removes the
+   * corresponding entry from the config storage, but keeps its definition in
+   * the state storage while field data is purged by a separate
+   * garbage-collection process.
+   *
+   * Deleted fields stay out of the regular entity lifecycle (notably, their
+   * values are not populated in loaded entities, and are not saved back).
+   *
+   * @var bool
+   */
+  public $deleted = FALSE;
+
+  /**
+   * The associated FieldStorageConfig entity.
+   *
+   * @var \Drupal\field\Entity\FieldStorageConfig
+   */
+  protected $fieldStorage;
+
+  /**
+   * Flag indicating whether the bundle name can be renamed or not.
+   *
+   * @var bool
+   */
+  protected $bundle_rename_allowed = FALSE;
+
+  /**
+   * The data definition of a field item.
+   *
+   * @var \Drupal\Core\Field\TypedData\FieldItemDataDefinition
+   */
+  protected $itemDefinition;
+
+  /**
+   * Constructs a FieldConfig object.
+   *
+   * In most cases, FieldConfig entities are created via
+   * entity_create('field_config', $values), where $values is the same
+   * parameter as in this constructor.
+   *
+   * @param array $values
+   *   An array of properties, keyed by property name. The storage associated to
+   *   the field can be specified either with:
+   *   - field_storage: the FieldStorageConfigInterface object,
+   *   or by referring to an existing field storage in the current configuration
+   *   with:
+   *   - field_name: The field name.
+   *   - entity_type: The entity type.
+   *   Additionally, a 'bundle' property is required to indicate the entity
+   *   bundle to which the field is attached to. Other array elements will be
+   *   used to set the corresponding properties on the class; see the class
+   *   property documentation for details.
+   *
+   * @see entity_create()
+   */
+  public function __construct(array $values, $entity_type = 'field_config') {
+    // Allow either an injected FieldStorageConfig object, or a field_name and
+    // entity_type.
+    if (isset($values['field_storage'])) {
+      if (!$values['field_storage'] instanceof FieldStorageConfigInterface) {
+        throw new FieldException('Attempt to create a configurable field for a non-configurable field storage.');
+      }
+      $field_storage = $values['field_storage'];
+      $values['field_name'] = $field_storage->getName();
+      $values['entity_type'] = $field_storage->getTargetEntityTypeId();
+      // The internal property is fieldStorage, not field_storage.
+      unset($values['field_storage']);
+      $values['fieldStorage'] = $field_storage;
+    }
+    else {
+      if (empty($values['field_name'])) {
+        throw new FieldException('Attempt to create a field without a field_name.');
+      }
+      if (empty($values['entity_type'])) {
+        throw new FieldException(String::format('Attempt to create a field @field_name without an entity_type.', array('@field_name' => $values['field_name'])));
+      }
+    }
+    // 'bundle' is required in either case.
+    if (empty($values['bundle'])) {
+      throw new FieldException(String::format('Attempt to create a field @field_name without a bundle.', array('@field_name' => $values['field_name'])));
+    }
+
+    parent::__construct($values, $entity_type);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function id() {
+    return $this->entity_type . '.' . $this->bundle . '.' . $this->field_name;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getName() {
+    return $this->field_name;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function postCreate(EntityStorageInterface $storage) {
+    parent::postCreate($storage);
+
+    // Validate that we have a valid storage for this field. This throws an
+    // exception if the storage is invalid.
+    $this->getFieldStorageDefinition();
+
+    // 'Label' defaults to the field name (mostly useful for fields created in
+    // tests).
+    if (empty($this->label)) {
+      $this->label = $this->getName();
+    }
+  }
+
+  /**
+   * Overrides \Drupal\Core\Entity\Entity::preSave().
+   *
+   * @throws \Drupal\Core\Field\FieldException
+   *   If the field definition is invalid.
+   * @throws \Drupal\Core\Entity\EntityStorageException
+   *   In case of failures at the configuration storage level.
+   */
+  public function preSave(EntityStorageInterface $storage) {
+    $entity_manager = \Drupal::entityManager();
+    $field_type_manager = \Drupal::service('plugin.manager.field.field_type');
+
+    $storage_definition = $this->getFieldStorageDefinition();
+
+    if ($this->isNew()) {
+      // Set the default settings.
+      $this->settings += $field_type_manager->getDefaultFieldSettings($storage_definition->type);
+      // Notify the entity storage.
+      $entity_manager->getStorage($this->entity_type)->onFieldDefinitionCreate($this);
+    }
+    else {
+      // Some updates are always disallowed.
+      if ($this->entity_type != $this->original->entity_type) {
+        throw new FieldException("Cannot change an existing field's entity_type.");
+      }
+      if ($this->bundle != $this->original->bundle && empty($this->bundleRenameAllowed)) {
+        throw new FieldException("Cannot change an existing field's bundle.");
+      }
+      if ($storage_definition->uuid() != $this->original->getFieldStorageDefinition()->uuid()) {
+        throw new FieldException("Cannot change an existing field's storage.");
+      }
+      // Set the default settings.
+      $this->settings += $field_type_manager->getDefaultFieldSettings($storage_definition->type);
+      // Notify the entity storage.
+      $entity_manager->getStorage($this->entity_type)->onFieldDefinitionUpdate($this, $this->original);
+    }
+
+    parent::preSave($storage);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function calculateDependencies() {
+    parent::calculateDependencies();
+    // Mark the field_storage_config as a a dependency.
+    $this->addDependency('entity', $this->getFieldStorageDefinition()->getConfigDependencyName());
+    return $this->dependencies;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function postSave(EntityStorageInterface $storage, $update = TRUE) {
+    // Clear the cache.
+    \Drupal::entityManager()->clearCachedFieldDefinitions();
+
+    // Invalidate the render cache for all affected entities.
+    $entity_manager = \Drupal::entityManager();
+    $entity_type = $this->getFieldStorageDefinition()->getTargetEntityTypeId();
+    if ($entity_manager->hasHandler($entity_type, 'view_builder')) {
+      $entity_manager->getViewBuilder($entity_type)->resetCache();
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function preDelete(EntityStorageInterface $storage, array $fields) {
+    $state = \Drupal::state();
+
+    // Keep the field definitions in the state storage so we can use them
+    // later during field_purge_batch().
+    $deleted_fields = $state->get('field.field.deleted') ?: array();
+    foreach ($fields as $field) {
+      if (!$field->deleted) {
+        $config = $field->toArray();
+        $config['deleted'] = TRUE;
+        $config['field_storage_uuid'] = $field->getFieldStorageDefinition()->uuid();
+        $deleted_fields[$field->uuid()] = $config;
+      }
+    }
+    $state->set('field.field.deleted', $deleted_fields);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function postDelete(EntityStorageInterface $storage, array $fields) {
+    // Clear the cache upfront, to refresh the results of getBundles().
+    \Drupal::entityManager()->clearCachedFieldDefinitions();
+
+    // Notify the entity storage.
+    foreach ($fields as $field) {
+      if (!$field->deleted) {
+        \Drupal::entityManager()->getStorage($field->entity_type)->onFieldDefinitionDelete($field);
+      }
+    }
+
+    // If this is part of a configuration synchronization then the following
+    // configuration updates are not necessary.
+    $entity = reset($fields);
+    if ($entity->isSyncing()) {
+      return;
+    }
+
+    // Delete field storages that have no more fields.
+    $storages_to_delete = array();
+    foreach ($fields as $field) {
+      $storage_definition = $field->getFieldStorageDefinition();
+      if (!$field->deleted && empty($field->noFieldDelete) && !$field->isUninstalling() && count($storage_definition->getBundles()) == 0) {
+        // Key by field UUID to avoid deleting the same storage twice.
+        $storages_to_delete[$storage_definition->uuid()] = $storage_definition;
+      }
+    }
+    if ($storages_to_delete) {
+      \Drupal::entityManager()->getStorage('field_storage_config')->delete($storages_to_delete);
+    }
+
+    // Cleanup entity displays.
+    $displays_to_update = array();
+    foreach ($fields as $field) {
+      if (!$field->deleted) {
+        $view_modes = \Drupal::entityManager()->getViewModeOptions($field->entity_type, TRUE);
+        foreach (array_keys($view_modes) as $mode) {
+          $displays_to_update['entity_view_display'][$field->entity_type . '.' . $field->bundle . '.' . $mode][] = $field->getName();
+        }
+        $form_modes = \Drupal::entityManager()->getFormModeOptions($field->entity_type, TRUE);
+        foreach (array_keys($form_modes) as $mode) {
+          $displays_to_update['entity_form_display'][$field->entity_type . '.' . $field->bundle . '.' . $mode][] = $field->getName();
+        }
+      }
+    }
+    foreach ($displays_to_update as $type => $ids) {
+      foreach (entity_load_multiple($type, array_keys($ids)) as $id => $display) {
+        foreach ($ids[$id] as $field_name) {
+          $display->removeComponent($field_name);
+        }
+        $display->save();
+      }
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function linkTemplates() {
+    $link_templates = parent::linkTemplates();
+    if (\Drupal::moduleHandler()->moduleExists('field_ui')) {
+      $link_templates['edit-form'] = 'field_ui.field_edit_' . $this->entity_type;
+      $link_templates['storage-edit-form'] = 'field_ui.storage_edit_' . $this->entity_type;
+      $link_templates['delete-form'] = 'field_ui.delete_' . $this->entity_type;
+
+      if (isset($link_templates['drupal:config-translation-overview'])) {
+        $link_templates['drupal:config-translation-overview'] .= $link_templates['edit-form'];
+      }
+    }
+    return $link_templates;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function urlRouteParameters($rel) {
+    $parameters = parent::urlRouteParameters($rel);
+    $entity_type = \Drupal::entityManager()->getDefinition($this->entity_type);
+    $parameters[$entity_type->getBundleEntityType()] = $this->bundle;
+    return $parameters;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function isDeleted() {
+    return $this->deleted;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFieldStorageDefinition() {
+    if (!$this->fieldStorage) {
+      $fields = $this->entityManager()->getFieldStorageDefinitions($this->entity_type);
+      if (!isset($fields[$this->field_name])) {
+        throw new FieldException(String::format('Attempt to create field @field_name that does not have an associated storage entity type @entity_type.', array('@field_name' => $this->field_name, '@entity_type' => $this->entity_type)));
+      }
+      if (!$fields[$this->field_name] instanceof FieldStorageConfigInterface) {
+        throw new FieldException(String::format('Attempt to create a configurable field @field_name associated to a non-configurable storage.', array('@field_name' => $this->field_name, '@entity_type' => $this->entity_type)));
+      }
+      $this->fieldStorage = $fields[$this->field_name];
+    }
+
+    return $this->fieldStorage;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function isDisplayConfigurable($context) {
+    return TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getDisplayOptions($display_context) {
+    // Hide configurable fields by default.
+    return array('type' => 'hidden');
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function isReadOnly() {
+    return FALSE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function isComputed() {
+    return FALSE;
+  }
+
+  /**
+   * Loads a field config entity based on the entity type and field name.
+   *
+   * @param string $entity_type_id
+   *   ID of the entity type.
+   * @param string $bundle
+   *   Bundle name.
+   * @param string $field_name
+   *   Name of the field.
+   *
+   * @return static
+   *   The field config entity if one exists for the provided field
+   *   name, otherwise NULL.
+   */
+  public static function loadByName($entity_type_id, $bundle, $field_name) {
+    return \Drupal::entityManager()->getStorage('field_config')->load($entity_type_id . '.' . $bundle . '.' . $field_name);
+  }
+
+}
diff --git a/core/modules/field/src/Entity/FieldInstanceConfig.php b/core/modules/field/src/Entity/FieldInstanceConfig.php
deleted file mode 100644
index 4a4239d..0000000
--- a/core/modules/field/src/Entity/FieldInstanceConfig.php
+++ /dev/null
@@ -1,354 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\field\Entity\FieldInstanceConfig.
- */
-
-namespace Drupal\field\Entity;
-
-use Drupal\Component\Utility\String;
-use Drupal\Core\Entity\EntityStorageInterface;
-use Drupal\Core\Field\FieldConfigBase;
-use Drupal\Core\Field\FieldException;
-use Drupal\field\FieldStorageConfigInterface;
-use Drupal\field\FieldInstanceConfigInterface;
-
-/**
- * Defines the Field instance entity.
- *
- * @ConfigEntityType(
- *   id = "field_instance_config",
- *   label = @Translation("Field instance"),
- *   handlers = {
- *     "access" = "Drupal\field\FieldInstanceConfigAccessControlHandler",
- *     "storage" = "Drupal\field\FieldInstanceConfigStorage"
- *   },
- *   config_prefix = "instance",
- *   entity_keys = {
- *     "id" = "id",
- *     "label" = "label"
- *   }
- * )
- */
-class FieldInstanceConfig extends FieldConfigBase implements FieldInstanceConfigInterface {
-
-  /**
-   * Flag indicating whether the instance is deleted.
-   *
-   * The delete() method marks the instance as "deleted" and removes the
-   * corresponding entry from the config storage, but keeps its definition in
-   * the state storage while field data is purged by a separate
-   * garbage-collection process.
-   *
-   * Deleted instances stay out of the regular entity lifecycle (notably, their
-   * values are not populated in loaded entities, and are not saved back).
-   *
-   * @var bool
-   */
-  public $deleted = FALSE;
-
-  /**
-   * The field ConfigEntity object this is an instance of.
-   *
-   * @var \Drupal\field\Entity\FieldStorageConfig
-   */
-  protected $fieldStorage;
-
-  /**
-   * Constructs a FieldInstanceConfig object.
-   *
-   * In most cases, Field instance entities are created via
-   * entity_create('field_instance_config', $values), where $values is the same
-   * parameter as in this constructor.
-   *
-   * @param array $values
-   *   An array of field instance properties, keyed by property name. The
-   *   storage associated to the instance can be specified either with:
-   *   - field_storage: the FieldStorageConfigInterface object,
-   *   or by referring to an existing field storage in the current configuration
-   *   with:
-   *   - field_name: The field name.
-   *   - entity_type: The entity type.
-   *   Additionally, a 'bundle' property is required to indicate the entity
-   *   bundle to which the instance is attached to. Other array elements will be
-   *   used to set the corresponding properties on the class; see the class
-   *   property documentation for details.
-   *
-   * @see entity_create()
-   */
-  public function __construct(array $values, $entity_type = 'field_instance_config') {
-    // Allow either an injected FieldStorageConfig object, or a field_name and
-    // entity_type.
-    if (isset($values['field_storage'])) {
-      if (!$values['field_storage'] instanceof FieldStorageConfigInterface) {
-        throw new FieldException('Attempt to create a configurable field instance for a non-configurable field storage.');
-      }
-      $field_storage = $values['field_storage'];
-      $values['field_name'] = $field_storage->getName();
-      $values['entity_type'] = $field_storage->getTargetEntityTypeId();
-      // The internal property is fieldStorage, not field_storage.
-      unset($values['field_storage']);
-      $values['fieldStorage'] = $field_storage;
-    }
-    else {
-      if (empty($values['field_name'])) {
-        throw new FieldException('Attempt to create a field instance without a field_name.');
-      }
-      if (empty($values['entity_type'])) {
-        throw new FieldException(String::format('Attempt to create a field instance @field_name without an entity_type.', array('@field_name' => $values['field_name'])));
-      }
-    }
-    // 'bundle' is required in either case.
-    if (empty($values['bundle'])) {
-      throw new FieldException(String::format('Attempt to create a field instance @field_name without a bundle.', array('@field_name' => $values['field_name'])));
-    }
-
-    parent::__construct($values, $entity_type);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function postCreate(EntityStorageInterface $storage) {
-    parent::postCreate($storage);
-
-    // Validate that we have a valid storage for this instance. This throws an
-    // exception if the storage is invalid.
-    $this->getFieldStorageDefinition();
-
-    // 'Label' defaults to the field name (mostly useful for field instances
-    // created in tests).
-    if (empty($this->label)) {
-      $this->label = $this->getName();
-    }
-  }
-
-  /**
-   * Overrides \Drupal\Core\Entity\Entity::preSave().
-   *
-   * @throws \Drupal\Core\Field\FieldException
-   *   If the field instance definition is invalid.
-   * @throws \Drupal\Core\Entity\EntityStorageException
-   *   In case of failures at the configuration storage level.
-   */
-  public function preSave(EntityStorageInterface $storage) {
-    $entity_manager = \Drupal::entityManager();
-    $field_type_manager = \Drupal::service('plugin.manager.field.field_type');
-
-    $storage_definition = $this->getFieldStorageDefinition();
-
-    if ($this->isNew()) {
-      // Set the default instance settings.
-      $this->settings += $field_type_manager->getDefaultInstanceSettings($storage_definition->type);
-      // Notify the entity storage.
-      $entity_manager->getStorage($this->entity_type)->onFieldDefinitionCreate($this);
-    }
-    else {
-      // Some updates are always disallowed.
-      if ($this->entity_type != $this->original->entity_type) {
-        throw new FieldException("Cannot change an existing instance's entity_type.");
-      }
-      if ($this->bundle != $this->original->bundle && empty($this->bundleRenameAllowed)) {
-        throw new FieldException("Cannot change an existing instance's bundle.");
-      }
-      if ($storage_definition->uuid() != $this->original->getFieldStorageDefinition()->uuid()) {
-        throw new FieldException("Cannot change an existing instance's storage.");
-      }
-      // Set the default instance settings.
-      $this->settings += $field_type_manager->getDefaultInstanceSettings($storage_definition->type);
-      // Notify the entity storage.
-      $entity_manager->getStorage($this->entity_type)->onFieldDefinitionUpdate($this, $this->original);
-    }
-
-    parent::preSave($storage);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function calculateDependencies() {
-    parent::calculateDependencies();
-    // Mark the field_storage_config as a a dependency.
-    $this->addDependency('entity', $this->getFieldStorageDefinition()->getConfigDependencyName());
-    return $this->dependencies;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public static function preDelete(EntityStorageInterface $storage, array $instances) {
-    $state = \Drupal::state();
-
-    // Keep the instance definitions in the state storage so we can use them
-    // later during field_purge_batch().
-    $deleted_instances = $state->get('field.instance.deleted') ?: array();
-    foreach ($instances as $instance) {
-      if (!$instance->deleted) {
-        $config = $instance->toArray();
-        $config['deleted'] = TRUE;
-        $config['field_storage_uuid'] = $instance->getFieldStorageDefinition()->uuid();
-        $deleted_instances[$instance->uuid()] = $config;
-      }
-    }
-    $state->set('field.instance.deleted', $deleted_instances);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public static function postDelete(EntityStorageInterface $storage, array $instances) {
-    // Clear the cache upfront, to refresh the results of getBundles().
-    \Drupal::entityManager()->clearCachedFieldDefinitions();
-
-    // Notify the entity storage.
-    foreach ($instances as $instance) {
-      if (!$instance->deleted) {
-        \Drupal::entityManager()->getStorage($instance->entity_type)->onFieldDefinitionDelete($instance);
-      }
-    }
-
-    // If this is part of a configuration synchronization then the following
-    // configuration updates are not necessary.
-    $entity = reset($instances);
-    if ($entity->isSyncing()) {
-      return;
-    }
-
-    // Delete field storages that have no more instances.
-    $storages_to_delete = array();
-    foreach ($instances as $instance) {
-      $storage_definition = $instance->getFieldStorageDefinition();
-      if (!$instance->deleted && empty($instance->noFieldDelete) && !$instance->isUninstalling() && count($storage_definition->getBundles()) == 0) {
-        // Key by field UUID to avoid deleting the same storage twice.
-        $storages_to_delete[$storage_definition->uuid()] = $storage_definition;
-      }
-    }
-    if ($storages_to_delete) {
-      \Drupal::entityManager()->getStorage('field_storage_config')->delete($storages_to_delete);
-    }
-
-    // Cleanup entity displays.
-    $displays_to_update = array();
-    foreach ($instances as $instance) {
-      if (!$instance->deleted) {
-        $view_modes = \Drupal::entityManager()->getViewModeOptions($instance->entity_type, TRUE);
-        foreach (array_keys($view_modes) as $mode) {
-          $displays_to_update['entity_view_display'][$instance->entity_type . '.' . $instance->bundle . '.' . $mode][] = $instance->getName();
-        }
-        $form_modes = \Drupal::entityManager()->getFormModeOptions($instance->entity_type, TRUE);
-        foreach (array_keys($form_modes) as $mode) {
-          $displays_to_update['entity_form_display'][$instance->entity_type . '.' . $instance->bundle . '.' . $mode][] = $instance->getName();
-        }
-      }
-    }
-    foreach ($displays_to_update as $type => $ids) {
-      foreach (entity_load_multiple($type, array_keys($ids)) as $id => $display) {
-        foreach ($ids[$id] as $field_name) {
-          $display->removeComponent($field_name);
-        }
-        $display->save();
-      }
-    }
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function linkTemplates() {
-    $link_templates = parent::linkTemplates();
-    if (\Drupal::moduleHandler()->moduleExists('field_ui')) {
-      $link_templates['edit-form'] = 'field_ui.instance_edit_' . $this->entity_type;
-      $link_templates['storage-edit-form'] = 'field_ui.storage_edit_' . $this->entity_type;
-      $link_templates['delete-form'] = 'field_ui.delete_' . $this->entity_type;
-
-      if (isset($link_templates['drupal:config-translation-overview'])) {
-        $link_templates['drupal:config-translation-overview'] .= $link_templates['edit-form'];
-      }
-    }
-    return $link_templates;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function urlRouteParameters($rel) {
-    $parameters = parent::urlRouteParameters($rel);
-    $entity_type = \Drupal::entityManager()->getDefinition($this->entity_type);
-    $parameters[$entity_type->getBundleEntityType()] = $this->bundle;
-    return $parameters;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function isDeleted() {
-    return $this->deleted;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getFieldStorageDefinition() {
-    if (!$this->fieldStorage) {
-      $fields = $this->entityManager()->getFieldStorageDefinitions($this->entity_type);
-      if (!isset($fields[$this->field_name])) {
-        throw new FieldException(String::format('Attempt to create an instance of field @field_name that does not exist on entity type @entity_type.', array('@field_name' => $this->field_name, '@entity_type' => $this->entity_type)));
-      }
-      if (!$fields[$this->field_name] instanceof FieldStorageConfigInterface) {
-        throw new FieldException(String::format('Attempt to create a configurable instance of non-configurable field @field_name.', array('@field_name' => $this->field_name, '@entity_type' => $this->entity_type)));
-      }
-      $this->fieldStorage = $fields[$this->field_name];
-    }
-
-    return $this->fieldStorage;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function isDisplayConfigurable($context) {
-    return TRUE;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getDisplayOptions($display_context) {
-    // Hide configurable fields by default.
-    return array('type' => 'hidden');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function isReadOnly() {
-    return FALSE;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function isComputed() {
-    return FALSE;
-  }
-
-  /**
-   * Loads a field config entity based on the entity type and field name.
-   *
-   * @param string $entity_type_id
-   *   ID of the entity type.
-   * @param string $bundle
-   *   Bundle name.
-   * @param string $field_name
-   *   Name of the field.
-   *
-   * @return static
-   *   The field instance config entity if one exists for the provided field
-   *   name, otherwise NULL.
-   */
-  public static function loadByName($entity_type_id, $bundle, $field_name) {
-    return \Drupal::entityManager()->getStorage('field_instance_config')->load($entity_type_id . '.' . $bundle . '.' . $field_name);
-  }
-
-}
diff --git a/core/modules/field/src/Entity/FieldStorageConfig.php b/core/modules/field/src/Entity/FieldStorageConfig.php
index f6953b3..4018f1a 100644
--- a/core/modules/field/src/Entity/FieldStorageConfig.php
+++ b/core/modules/field/src/Entity/FieldStorageConfig.php
@@ -123,8 +123,8 @@ class FieldStorageConfig extends ConfigEntityBase implements FieldStorageConfigI
    * If TRUE, some actions not available though the UI (but are still possible
    * through direct API manipulation):
    * - field settings cannot be changed,
-   * - new instances cannot be created
-   * - existing instances cannot be deleted.
+   * - new fields cannot be created
+   * - existing fields cannot be deleted.
    * Defaults to FALSE.
    *
    * @var bool
@@ -288,7 +288,7 @@ protected function preSaveNew(EntityStorageInterface $storage) {
 
     // Make sure all settings are present, so that a complete field
     // definition is passed to the various hooks and written to config.
-     $this->settings += $field_type_manager->getDefaultSettings($this->type);
+   $this->settings += $field_type_manager->getDefaultStorageSettings($this->type);
 
     // Notify the entity storage.
     $entity_manager->getStorage($this->entity_type)->onFieldStorageDefinitionCreate($this);
@@ -328,7 +328,7 @@ protected function preSaveUpdated(EntityStorageInterface $storage) {
 
     // Make sure all settings are present, so that a complete field
     // definition is passed to the various hooks and written to config.
-    $this->settings += $field_type_manager->getDefaultSettings($this->type);
+    $this->settings += $field_type_manager->getDefaultStorageSettings($this->type);
 
     // See if any module forbids the update by throwing an exception. This
     // invokes hook_field_storage_config_update_forbid().
@@ -360,39 +360,39 @@ public function postSave(EntityStorageInterface $storage, $update = TRUE) {
   /**
    * {@inheritdoc}
    */
-  public static function preDelete(EntityStorageInterface $storage, array $fields) {
+  public static function preDelete(EntityStorageInterface $storage, array $field_storages) {
     $state = \Drupal::state();
-    $instance_storage = \Drupal::entityManager()->getStorage('field_instance_config');
+    $field_config_storage = \Drupal::entityManager()->getStorage('field_config');
 
-    // Delete instances first. Note: when deleting a field through
-    // FieldInstanceConfig::postDelete(), the instances have been deleted already, so
-    // no instances will be found here.
-    $instance_ids = array();
-    foreach ($fields as $field) {
-      if (!$field->deleted) {
-        foreach ($field->getBundles() as $bundle) {
-          $instance_ids[] = "{$field->entity_type}.$bundle.{$field->name}";
+    // Delete fields first. Note: when deleting a field storage through
+    // FieldConfig::postDelete(), the fields have been deleted already, so
+    // no fields will be found here.
+    $field_ids = array();
+    foreach ($field_storages as $field_storage) {
+      if (!$field_storage->deleted) {
+        foreach ($field_storage->getBundles() as $bundle) {
+          $field_ids[] = "{$field_storage->entity_type}.$bundle.{$field_storage->name}";
         }
       }
     }
-    if ($instance_ids) {
-      $instances = $instance_storage->loadMultiple($instance_ids);
+    if ($field_ids) {
+      $fields = $field_config_storage->loadMultiple($field_ids);
       // Tag the objects to preserve recursive deletion of the field.
-      foreach ($instances as $instance) {
-        $instance->noFieldDelete = TRUE;
+      foreach ($fields as $field) {
+        $field->noFieldDelete = TRUE;
       }
-      $instance_storage->delete($instances);
+      $field_config_storage->delete($fields);
     }
 
     // Keep the field definitions in the state storage so we can use them later
     // during field_purge_batch().
     $deleted_storages = $state->get('field.storage.deleted') ?: array();
-    foreach ($fields as $field) {
-      if (!$field->deleted) {
-        $config = $field->toArray();
+    foreach ($field_storages as $field_storage) {
+      if (!$field_storage->deleted) {
+        $config = $field_storage->toArray();
         $config['deleted'] = TRUE;
-        $config['bundles'] = $field->getBundles();
-        $deleted_storages[$field->uuid()] = $config;
+        $config['bundles'] = $field_storage->getBundles();
+        $deleted_storages[$field_storage->uuid()] = $config;
       }
     }
 
@@ -499,11 +499,11 @@ public function getType() {
   public function getSettings() {
     // @todo FieldTypePluginManager maintains its own static cache. However, do
     //   some CPU and memory profiling to see if it's worth statically caching
-    //   $field_type_info, or the default field and instance settings, within
-    //   $this.
+    //   $field_type_info, or the default field storage and field settings,
+    //   within $this.
     $field_type_manager = \Drupal::service('plugin.manager.field.field_type');
 
-    $settings = $field_type_manager->getDefaultSettings($this->type);
+    $settings = $field_type_manager->getDefaultStorageSettings($this->type);
     return $this->settings + $settings;
   }
 
diff --git a/core/modules/field/src/FieldInstanceConfigAccessControlHandler.php b/core/modules/field/src/FieldConfigAccessControlHandler.php
similarity index 66%
rename from core/modules/field/src/FieldInstanceConfigAccessControlHandler.php
rename to core/modules/field/src/FieldConfigAccessControlHandler.php
index 6b21783..c502466 100644
--- a/core/modules/field/src/FieldInstanceConfigAccessControlHandler.php
+++ b/core/modules/field/src/FieldConfigAccessControlHandler.php
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Contains \Drupal\field\FieldInstanceConfigAccessControlHandler.
+ * Contains \Drupal\field\FieldConfigAccessControlHandler.
  */
 
 namespace Drupal\field;
@@ -12,11 +12,11 @@
 use Drupal\Core\Session\AccountInterface;
 
 /**
- * Defines the access control handler for the field instance entity type.
+ * Defines the access control handler for the field entity type.
  *
- * @see \Drupal\field\Entity\FieldInstanceConfig
+ * @see \Drupal\field\Entity\FieldConfig
  */
-class FieldInstanceConfigAccessControlHandler extends EntityAccessControlHandler {
+class FieldConfigAccessControlHandler extends EntityAccessControlHandler {
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/field/src/FieldConfigInterface.php b/core/modules/field/src/FieldConfigInterface.php
new file mode 100644
index 0000000..5a8dfdb
--- /dev/null
+++ b/core/modules/field/src/FieldConfigInterface.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\field\FieldConfigInterface.
+ */
+
+namespace Drupal\field;
+
+use Drupal\Core\Config\Entity\ConfigEntityInterface;
+use Drupal\Core\Field\FieldDefinitionInterface;
+
+/**
+ * Provides an interface defining a field entity.
+ */
+interface FieldConfigInterface extends ConfigEntityInterface, FieldDefinitionInterface {
+
+  /**
+   * Gets the deleted flag of the field.
+   *
+   * @return bool
+   *   Returns TRUE if the field is deleted.
+   */
+  public function isDeleted();
+
+}
diff --git a/core/modules/field/src/FieldInstanceConfigStorage.php b/core/modules/field/src/FieldConfigStorage.php
similarity index 70%
rename from core/modules/field/src/FieldInstanceConfigStorage.php
rename to core/modules/field/src/FieldConfigStorage.php
index 2c4e5d1..08baae5 100644
--- a/core/modules/field/src/FieldInstanceConfigStorage.php
+++ b/core/modules/field/src/FieldConfigStorage.php
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Contains \Drupal\field\FieldInstanceConfigStorage.
+ * Contains \Drupal\field\FieldConfigStorage.
  */
 
 namespace Drupal\field;
@@ -19,9 +19,9 @@
 use Drupal\Core\State\StateInterface;
 
 /**
- * Storage class for field instances.
+ * Controller class for fields.
  */
-class FieldInstanceConfigStorage extends FieldConfigStorageBase {
+class FieldConfigStorage extends FieldConfigStorageBase {
 
   /**
    * The entity manager.
@@ -38,7 +38,14 @@ class FieldInstanceConfigStorage extends FieldConfigStorageBase {
   protected $state;
 
   /**
-   * Constructs a FieldInstanceConfigStorage object.
+   * The field type plugin manager.
+   *
+   * @var \Drupal\Core\Field\FieldTypePluginManagerInterface
+   */
+  protected $fieldTypeManager;
+
+  /**
+   * Constructs a FieldConfigStorage object.
    *
    * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
    *   The entity type definition.
@@ -81,8 +88,8 @@ public static function createInstance(ContainerInterface $container, EntityTypeI
    * {@inheritdoc}
    */
   public function importDelete($name, Config $new_config, Config $old_config) {
-    // If the field has been deleted in the same import, the instance will be
-    // deleted by then, and there is nothing left to do. Just return TRUE so
+    // If the field storage has been deleted in the same import, the field will
+    // be deleted by then, and there is nothing left to do. Just return TRUE so
     // that the file does not get written to active store.
     if (!$old_config->get()) {
       return TRUE;
@@ -94,47 +101,47 @@ public function importDelete($name, Config $new_config, Config $old_config) {
    * {@inheritdoc}
    */
   public function loadByProperties(array $conditions = array()) {
-    // Include deleted instances if specified in the $conditions parameters.
+    // Include deleted fields if specified in the $conditions parameters.
     $include_deleted = isset($conditions['include_deleted']) ? $conditions['include_deleted'] : FALSE;
     unset($conditions['include_deleted']);
 
-    $instances = array();
+    $fields = array();
 
-    // Get instances stored in configuration. If we are explicitly looking for
-    // deleted instances only, this can be skipped, because they will be
+    // Get fields stored in configuration. If we are explicitly looking for
+    // deleted fields only, this can be skipped, because they will be
     // retrieved from state below.
     if (empty($conditions['deleted'])) {
       if (isset($conditions['entity_type']) && isset($conditions['bundle']) && isset($conditions['field_name'])) {
         // Optimize for the most frequent case where we do have a specific ID.
         $id = $conditions['entity_type'] . '.' . $conditions['bundle'] . '.' . $conditions['field_name'];
-        $instances = $this->loadMultiple(array($id));
+        $fields = $this->loadMultiple(array($id));
       }
       else {
-        // No specific ID, we need to examine all existing instances.
-        $instances = $this->loadMultiple();
+        // No specific ID, we need to examine all existing fields.
+        $fields = $this->loadMultiple();
       }
     }
 
-    // Merge deleted instances (stored in state) if needed.
+    // Merge deleted fields (stored in state) if needed.
     if ($include_deleted || !empty($conditions['deleted'])) {
-      $deleted_instances = $this->state->get('field.instance.deleted') ?: array();
+      $deleted_fields = $this->state->get('field.field.deleted') ?: array();
       $deleted_storages = $this->state->get('field.storage.deleted') ?: array();
-      foreach ($deleted_instances as $id => $config) {
-        // If the field itself is deleted, inject it directly in the instance.
+      foreach ($deleted_fields as $id => $config) {
+        // If the field storage itself is deleted, inject it directly in the field.
         if (isset($deleted_storages[$config['field_storage_uuid']])) {
           $config['field_storage'] = $this->entityManager->getStorage('field_storage_config')->create($deleted_storages[$config['field_storage_uuid']]);
         }
-        $instances[$id] = $this->create($config);
+        $fields[$id] = $this->create($config);
       }
     }
 
-    // Collect matching instances.
-    $matching_instances = array();
-    foreach ($instances as $instance) {
+    // Collect matching fields.
+    $matching_fields = array();
+    foreach ($fields as $field) {
       // Some conditions are checked against the field.
-      $field_storage = $instance->getFieldStorageDefinition();
+      $field_storage = $field->getFieldStorageDefinition();
 
-      // Only keep the instance if it matches all conditions.
+      // Only keep the field if it matches all conditions.
       foreach ($conditions as $key => $value) {
         // Extract the actual value against which the condition is checked.
         switch ($key) {
@@ -148,27 +155,27 @@ public function loadByProperties(array $conditions = array()) {
             break;
 
           case 'uuid';
-            $checked_value = $instance->uuid();
+            $checked_value = $field->uuid();
             break;
 
           default:
-            $checked_value = $instance->$key;
+            $checked_value = $field->$key;
             break;
         }
 
-        // Skip to the next instance as soon as one condition does not match.
+        // Skip to the next field as soon as one condition does not match.
         if ($checked_value != $value) {
           continue 2;
         }
       }
 
-      // When returning deleted instances, key the results by UUID since they
-      // can include several instances with the same ID.
-      $key = $include_deleted ? $instance->uuid() : $instance->id();
-      $matching_instances[$key] = $instance;
+      // When returning deleted fields, key the results by UUID since they
+      // can include several fields with the same ID.
+      $key = $include_deleted ? $field->uuid() : $field->id();
+      $matching_fields[$key] = $field;
     }
 
-    return $matching_instances;
+    return $matching_fields;
   }
 
 }
diff --git a/core/modules/field/src/FieldInstanceConfigInterface.php b/core/modules/field/src/FieldInstanceConfigInterface.php
deleted file mode 100644
index 3026b4f..0000000
--- a/core/modules/field/src/FieldInstanceConfigInterface.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\field\FieldInstanceConfigInterface.
- */
-
-namespace Drupal\field;
-
-use Drupal\Core\Config\Entity\ConfigEntityInterface;
-use Drupal\Core\Field\FieldDefinitionInterface;
-
-/**
- * Provides an interface defining a field instance entity.
- */
-interface FieldInstanceConfigInterface extends ConfigEntityInterface, FieldDefinitionInterface {
-
-  /**
-   * Gets the deleted flag of the field instance.
-   *
-   * @return bool
-   *   Returns TRUE if the instance is deleted.
-   */
-  public function isDeleted();
-
-}
diff --git a/core/modules/field/src/FieldStorageConfigStorage.php b/core/modules/field/src/FieldStorageConfigStorage.php
index 563deef..6353731 100644
--- a/core/modules/field/src/FieldStorageConfigStorage.php
+++ b/core/modules/field/src/FieldStorageConfigStorage.php
@@ -101,7 +101,7 @@ public static function createInstance(ContainerInterface $container, EntityTypeI
    * {@inheritdoc}
    */
   public function loadByProperties(array $conditions = array()) {
-    // Include deleted instances if specified in the $conditions parameters.
+    // Include deleted fields if specified in the $conditions parameters.
     $include_deleted = isset($conditions['include_deleted']) ? $conditions['include_deleted'] : FALSE;
     unset($conditions['include_deleted']);
 
@@ -171,7 +171,7 @@ public function loadByProperties(array $conditions = array()) {
   protected function mapFromStorageRecords(array $records) {
     foreach ($records as &$record) {
       $class = $this->fieldTypeManager->getPluginClass($record['type']);
-      $record['settings'] = $class::settingsFromConfigData($record['settings']);
+      $record['settings'] = $class::storageSettingsFromConfigData($record['settings']);
     }
     return parent::mapFromStorageRecords($records);
   }
@@ -182,7 +182,7 @@ protected function mapFromStorageRecords(array $records) {
   protected function mapToStorageRecord(EntityInterface $entity) {
     $record = parent::mapToStorageRecord($entity);
     $class = $this->fieldTypeManager->getPluginClass($record['type']);
-    $record['settings'] = $class::settingsToConfigData($record['settings']);
+    $record['settings'] = $class::storageSettingsToConfigData($record['settings']);
     return $record;
   }
 
diff --git a/core/modules/field/src/Tests/Boolean/BooleanFieldTest.php b/core/modules/field/src/Tests/Boolean/BooleanFieldTest.php
index 85c0746..66ae498 100644
--- a/core/modules/field/src/Tests/Boolean/BooleanFieldTest.php
+++ b/core/modules/field/src/Tests/Boolean/BooleanFieldTest.php
@@ -8,7 +8,7 @@
 namespace Drupal\field\Tests\Boolean;
 
 use Drupal\field\Entity\FieldStorageConfig;
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 use Drupal\simpletest\WebTestBase;
 
 /**
@@ -30,16 +30,16 @@ class BooleanFieldTest extends WebTestBase {
    *
    * @var \Drupal\field\Entity\FieldStorageConfig
    */
+  protected $field_storage;
+
+  /**
+   * The field used in this test class.
+   *
+   * @var \Drupal\field\Entity\FieldConfig
+   */
   protected $field;
 
   /**
-   * The instance used in this test class.
-   *
-   * @var \Drupal\field\Entity\FieldInstanceConfig
-   */
-  protected $instance;
-
-  /**
    * {@inheritdoc}
    */
   protected function setUp() {
@@ -64,7 +64,7 @@ function testBooleanField() {
 
     // Create a field with settings to validate.
     $field_name = drupal_strtolower($this->randomMachineName());
-    $this->field = FieldStorageConfig::create(array(
+    $this->field_storage = FieldStorageConfig::create(array(
       'name' => $field_name,
       'entity_type' => 'entity_test',
       'type' => 'boolean',
@@ -73,15 +73,15 @@ function testBooleanField() {
         'off_label' => $off,
       ),
     ));
-    $this->field->save();
-    $this->instance = FieldInstanceConfig::create(array(
+    $this->field_storage->save();
+    $this->field = FieldConfig::create(array(
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'bundle' => 'entity_test',
       'label' => $label,
       'required' => TRUE,
     ));
-    $this->instance->save();
+    $this->field->save();
 
     // Create a form display for the default form mode.
     entity_get_form_display('entity_test', 'entity_test', 'default')
@@ -132,7 +132,7 @@ function testBooleanField() {
     $this->drupalGet('entity_test/add');
     $this->assertFieldByName("{$field_name}[value]", '', 'Widget found.');
     $this->assertNoRaw($on);
-    $this->assertText($this->instance->label());
+    $this->assertText($this->field->label());
 
     // Go to the form display page and check if the default settings works as
     // expected.
diff --git a/core/modules/field/src/Tests/Boolean/BooleanItemTest.php b/core/modules/field/src/Tests/Boolean/BooleanItemTest.php
index f9198b1..dfa8d4c 100644
--- a/core/modules/field/src/Tests/Boolean/BooleanItemTest.php
+++ b/core/modules/field/src/Tests/Boolean/BooleanItemTest.php
@@ -24,13 +24,13 @@ class BooleanItemTest extends FieldUnitTestBase {
   protected function setUp() {
     parent::setUp();
 
-    // Create an boolean field and instance for validation.
+    // Create a boolean field and storage for validation.
     entity_create('field_storage_config', array(
       'name' => 'field_boolean',
       'entity_type' => 'entity_test',
       'type' => 'boolean',
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => 'field_boolean',
       'bundle' => 'entity_test',
diff --git a/core/modules/field/src/Tests/BulkDeleteTest.php b/core/modules/field/src/Tests/BulkDeleteTest.php
index ee099a8..e492ff5 100644
--- a/core/modules/field/src/Tests/BulkDeleteTest.php
+++ b/core/modules/field/src/Tests/BulkDeleteTest.php
@@ -9,10 +9,10 @@
 
 use Drupal\Core\Entity\ContentEntityDatabaseStorage;
 use Drupal\Core\Entity\EntityInterface;
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 
 /**
- * Bulk delete fields and instances, and clean up afterwards.
+ * Bulk delete storages and fields, and clean up afterwards.
  *
  * @group field
  */
@@ -105,7 +105,7 @@ protected function setUp() {
       entity_test_create_bundle($name, $desc);
     }
 
-    // Create two fields.
+    // Create two field storages.
     $field_storage = entity_create('field_storage_config', array(
       'name' => 'bf_1',
       'entity_type' => $this->entity_type,
@@ -123,11 +123,11 @@ protected function setUp() {
     $field_storage->save();
     $this->fieldStorages[] = $field_storage;
 
-    // For each bundle, create an instance of each field, and 10
-    // entities with values for each field.
+    // For each bundle, create each field, and 10 entities with values for the
+    // fields.
     foreach ($this->bundles as $bundle) {
       foreach ($this->fieldStorages as $field_storage) {
-        entity_create('field_instance_config', array(
+        entity_create('field_config', array(
           'field_storage' => $field_storage,
           'bundle' => $bundle,
         ))->save();
@@ -148,14 +148,14 @@ protected function setUp() {
   }
 
   /**
-   * Verify that deleting an instance leaves the field data items in
-   * the database and that the appropriate Field API functions can
-   * operate on the deleted data and instance.
+   * Verify that deleting a field leaves the field data items in the database
+   * and that the appropriate Field API functions can operate on the deleted
+   * data and field definition.
    *
-   * This tests how EntityFieldQuery interacts with field instance deletion and
-   * could be moved to FieldCrudTestCase, but depends on this class's setUp().
+   * This tests how EntityFieldQuery interacts with field deletion and could be
+   * moved to FieldCrudTestCase, but depends on this class's setUp().
    */
-  function testDeleteFieldInstance() {
+  function testDeleteField() {
     $bundle = reset($this->bundles);
     $field_storage = reset($this->fieldStorages);
     $field_name = $field_storage->name;
@@ -167,15 +167,15 @@ function testDeleteFieldInstance() {
       ->execute();
     $this->assertEqual(count($found), 10, 'Correct number of entities found before deleting');
 
-    // Delete the instance.
-    $instance = FieldInstanceConfig::loadByName($this->entity_type, $bundle, $field_storage->name);
-    $instance->delete();
+    // Delete the field.
+    $field = FieldConfig::loadByName($this->entity_type, $bundle, $field_storage->name);
+    $field->delete();
 
-    // The instance still exists, deleted.
-    $instances = entity_load_multiple_by_properties('field_instance_config', array('field_storage_uuid' => $field_storage->uuid(), 'deleted' => TRUE, 'include_deleted' => TRUE));
-    $this->assertEqual(count($instances), 1, 'There is one deleted instance');
-    $instance = $instances[$instance->uuid()];
-    $this->assertEqual($instance->bundle, $bundle, 'The deleted instance is for the correct bundle');
+    // The field still exists, deleted.
+    $fields = entity_load_multiple_by_properties('field_config', array('field_storage_uuid' => $field_storage->uuid(), 'deleted' => TRUE, 'include_deleted' => TRUE));
+    $this->assertEqual(count($fields), 1, 'There is one deleted field');
+    $field = $fields[$field->uuid()];
+    $this->assertEqual($field->bundle, $bundle, 'The deleted field is for the correct bundle');
 
     // Check that the actual stored content did not change during delete.
     $schema = ContentEntityDatabaseStorage::_fieldSqlSchema($field_storage);
@@ -207,19 +207,19 @@ function testDeleteFieldInstance() {
   }
 
   /**
-   * Verify that field data items and instances are purged when an
-   * instance is deleted.
+   * Verify that field data items and fields are purged when a field storage is
+   * deleted.
    */
-  function testPurgeInstance() {
+  function testPurgeField() {
     // Start recording hook invocations.
     field_test_memorize();
 
     $bundle = reset($this->bundles);
     $field_storage = reset($this->fieldStorages);
 
-    // Delete the instance.
-    $instance = FieldInstanceConfig::loadByName($this->entity_type, $bundle, $field_storage->name);
-    $instance->delete();
+    // Delete the field.
+    $field = FieldConfig::loadByName($this->entity_type, $bundle, $field_storage->name);
+    $field->delete();
 
     // No field hooks were called.
     $mem = field_test_memorize();
@@ -249,26 +249,26 @@ function testPurgeInstance() {
     }
     $this->checkHooksInvocations($hooks, $actual_hooks);
 
-    // The instance still exists, deleted.
-    $instances = entity_load_multiple_by_properties('field_instance_config', array('field_storage_uuid' => $field_storage->uuid(), 'deleted' => TRUE, 'include_deleted' => TRUE));
-    $this->assertEqual(count($instances), 1, 'There is one deleted instance');
+    // The field still exists, deleted.
+    $fields = entity_load_multiple_by_properties('field_config', array('field_storage_uuid' => $field_storage->uuid(), 'deleted' => TRUE, 'include_deleted' => TRUE));
+    $this->assertEqual(count($fields), 1, 'There is one deleted field');
 
-    // Purge the instance.
+    // Purge the field.
     field_purge_batch($batch_size);
 
-    // The instance is gone.
-    $instances = entity_load_multiple_by_properties('field_instance_config', array('field_storage_uuid' => $field_storage->uuid(), 'deleted' => TRUE, 'include_deleted' => TRUE));
-    $this->assertEqual(count($instances), 0, 'The instance is gone');
+    // The field is gone.
+    $fields = entity_load_multiple_by_properties('field_config', array('field_storage_uuid' => $field_storage->uuid(), 'deleted' => TRUE, 'include_deleted' => TRUE));
+    $this->assertEqual(count($fields), 0, 'The field is gone');
 
     // The field storage still exists, not deleted, because it has a second
-    // instance.
+    // field.
     $storages = entity_load_multiple_by_properties('field_storage_config', array('uuid' => $field_storage->uuid(), 'include_deleted' => TRUE));
     $this->assertTrue(isset($storages[$field_storage->uuid()]), 'The field storage exists and is not deleted');
   }
 
   /**
    * Verify that field storages are preserved and purged correctly as multiple
-   * instances are deleted and purged.
+   * fields are deleted and purged.
    */
   function testPurgeFieldStorage() {
     // Start recording hook invocations.
@@ -276,10 +276,10 @@ function testPurgeFieldStorage() {
 
     $field_storage = reset($this->fieldStorages);
 
-    // Delete the first instance.
+    // Delete the first field.
     $bundle = reset($this->bundles);
-    $instance = FieldInstanceConfig::loadByName($this->entity_type, $bundle, $field_storage->name);
-    $instance->delete();
+    $field = FieldConfig::loadByName($this->entity_type, $bundle, $field_storage->name);
+    $field->delete();
 
     // Assert that FieldItemInterface::delete() was not called yet.
     $mem = field_test_memorize();
@@ -299,24 +299,24 @@ function testPurgeFieldStorage() {
     }
     $this->checkHooksInvocations($hooks, $actual_hooks);
 
-    // The instance still exists, deleted.
-    $instances = entity_load_multiple_by_properties('field_instance_config', array('uuid' => $instance->uuid(), 'include_deleted' => TRUE));
-    $this->assertTrue(isset($instances[$instance->uuid()]) && $instances[$instance->uuid()]->deleted, 'The instance exists and is deleted');
+    // The field still exists, deleted.
+    $fields = entity_load_multiple_by_properties('field_config', array('uuid' => $field->uuid(), 'include_deleted' => TRUE));
+    $this->assertTrue(isset($fields[$field->uuid()]) && $fields[$field->uuid()]->deleted, 'The field exists and is deleted');
 
-    // Purge again to purge the instance.
+    // Purge again to purge the field.
     field_purge_batch(0);
 
-    // The instance is gone.
-    $instances = entity_load_multiple_by_properties('field_instance_config', array('uuid' => $instance->uuid(), 'include_deleted' => TRUE));
-    $this->assertEqual(count($instances), 0, 'The instance is purged.');
+    // The field is gone.
+    $fields = entity_load_multiple_by_properties('field_config', array('uuid' => $field->uuid(), 'include_deleted' => TRUE));
+    $this->assertEqual(count($fields), 0, 'The field is purged.');
     // The field storage still exists, not deleted.
     $storages = entity_load_multiple_by_properties('field_storage_config', array('uuid' => $field_storage->uuid(), 'include_deleted' => TRUE));
     $this->assertTrue(isset($storages[$field_storage->uuid()]) && !$storages[$field_storage->uuid()]->deleted, 'The field storage exists and is not deleted');
 
-    // Delete the second instance.
+    // Delete the second field.
     $bundle = next($this->bundles);
-    $instance = FieldInstanceConfig::loadByName($this->entity_type, $bundle, $field_storage->name);
-    $instance->delete();
+    $field = FieldConfig::loadByName($this->entity_type, $bundle, $field_storage->name);
+    $field->delete();
 
     // Assert that FieldItemInterface::delete() was not called yet.
     $mem = field_test_memorize();
@@ -334,18 +334,18 @@ function testPurgeFieldStorage() {
     }
     $this->checkHooksInvocations($hooks, $actual_hooks);
 
-    // The field storage and instance still exist, deleted.
-    $instances = entity_load_multiple_by_properties('field_instance_config', array('uuid' => $instance->uuid(), 'include_deleted' => TRUE));
-    $this->assertTrue(isset($instances[$instance->uuid()]) && $instances[$instance->uuid()]->deleted, 'The instance exists and is deleted');
+    // The field and the storage still exist, deleted.
+    $fields = entity_load_multiple_by_properties('field_config', array('uuid' => $field->uuid(), 'include_deleted' => TRUE));
+    $this->assertTrue(isset($fields[$field->uuid()]) && $fields[$field->uuid()]->deleted, 'The field exists and is deleted');
     $storages = entity_load_multiple_by_properties('field_storage_config', array('uuid' => $field_storage->uuid(), 'include_deleted' => TRUE));
     $this->assertTrue(isset($storages[$field_storage->uuid()]) && $storages[$field_storage->uuid()]->deleted, 'The field storage exists and is deleted');
 
-    // Purge again to purge the instance and the field storage.
+    // Purge again to purge the field and the storage.
     field_purge_batch(0);
 
-    // The field storage and instance are gone.
-    $instances = entity_load_multiple_by_properties('field_instance_config', array('uuid' => $instance->uuid(), 'include_deleted' => TRUE));
-    $this->assertEqual(count($instances), 0, 'The instance is purged.');
+    // The field and the storage are gone.
+    $fields = entity_load_multiple_by_properties('field_config', array('uuid' => $field->uuid(), 'include_deleted' => TRUE));
+    $this->assertEqual(count($fields), 0, 'The field is purged.');
     $storages = entity_load_multiple_by_properties('field_storage_config', array('uuid' => $field_storage->uuid(), 'include_deleted' => TRUE));
     $this->assertEqual(count($storages), 0, 'The field storage is purged.');
   }
diff --git a/core/modules/field/src/Tests/ConfigFieldDefinitionTest.php b/core/modules/field/src/Tests/ConfigFieldDefinitionTest.php
index 7841c2b..44e8c89 100644
--- a/core/modules/field/src/Tests/ConfigFieldDefinitionTest.php
+++ b/core/modules/field/src/Tests/ConfigFieldDefinitionTest.php
@@ -40,15 +40,15 @@ class ConfigFieldDefinitionTest extends FieldUnitTestBase {
   protected function setUp() {
     parent::setUp();
 
-    // Create a field and instance of type 'test_field', on the 'entity_test'
+    // Create a field and a storage of type 'test_field', on the 'entity_test'
     // entity type.
     $this->entityType = 'entity_test';
     $this->bundle = 'entity_test';
-    $this->createFieldWithInstance('', $this->entityType, $this->bundle);
+    $this->createFieldWithStorage('', $this->entityType, $this->bundle);
     $this->entityManager = $this->container->get('entity.manager');
 
-    // Create a second instance on 'entity_test_rev'.
-    $this->createFieldWithInstance('_rev', 'entity_test_rev', 'entity_test_rev');
+    // Create a second field on 'entity_test_rev'.
+    $this->createFieldWithStorage('_rev', 'entity_test_rev', 'entity_test_rev');
   }
 
   /**
@@ -56,10 +56,10 @@ protected function setUp() {
    */
   public function testBundleFieldDefinition() {
     $definitions = $this->entityManager->getFieldDefinitions($this->entityType, $this->bundle);
-    $this->assertTrue(isset($definitions[$this->fieldTestData->instance->getName()]));
-    $this->assertTrue($definitions[$this->fieldTestData->instance->getName()] instanceof FieldDefinitionInterface);
-    // Make sure no field for the instance on another entity type is exposed.
-    $this->assertFalse(isset($definitions[$this->fieldTestData->instance_rev->getName()]));
+    $this->assertTrue(isset($definitions[$this->fieldTestData->field->getName()]));
+    $this->assertTrue($definitions[$this->fieldTestData->field->getName()] instanceof FieldDefinitionInterface);
+    // Make sure fields on other entity types are not exposed.
+    $this->assertFalse(isset($definitions[$this->fieldTestData->field_rev->getName()]));
   }
 
   /**
@@ -67,11 +67,10 @@ public function testBundleFieldDefinition() {
    */
   public function testFieldStorageDefinition() {
     $field_storage_definitions = $this->entityManager->getFieldStorageDefinitions($this->entityType);
-    $this->assertTrue(isset($field_storage_definitions[$this->fieldTestData->instance->getName()]));
-    $this->assertTrue($field_storage_definitions[$this->fieldTestData->instance->getName()] instanceof FieldStorageDefinitionInterface);
-    // Make sure no storage field for the instance on another entity type is
-    // exposed.
-    $this->assertFalse(isset($field_storage_definitions[$this->fieldTestData->instance_rev->getName()]));
+    $this->assertTrue(isset($field_storage_definitions[$this->fieldTestData->field->getName()]));
+    $this->assertTrue($field_storage_definitions[$this->fieldTestData->field->getName()] instanceof FieldStorageDefinitionInterface);
+    // Make sure storages on other entity types are not exposed.
+    $this->assertFalse(isset($field_storage_definitions[$this->fieldTestData->field_rev->getName()]));
   }
 
 }
diff --git a/core/modules/field/src/Tests/CrudTest.php b/core/modules/field/src/Tests/CrudTest.php
index ec9b4d7..770155a 100644
--- a/core/modules/field/src/Tests/CrudTest.php
+++ b/core/modules/field/src/Tests/CrudTest.php
@@ -63,7 +63,7 @@ function testCreate() {
 
     // Ensure that default settings are present.
     $field_type_manager = \Drupal::service('plugin.manager.field.field_type');
-    $this->assertEqual($field_storage_config['settings'], $field_type_manager->getDefaultSettings($field_storage_definition['type']), 'Default field settings have been written.');
+    $this->assertEqual($field_storage_config['settings'], $field_type_manager->getDefaultStorageSettings($field_storage_definition['type']), 'Default storage settings have been written.');
 
     // Guarantee that the name is unique.
     try {
@@ -212,13 +212,13 @@ function testRead() {
     $fields = entity_load_multiple_by_properties('field_storage_config', array('field_name' => $field_storage_definition['name'], 'type' => 'foo'));
     $this->assertTrue(empty($fields), 'No field was found.');
 
-    // Create an instance of the field.
-    $instance_definition = array(
+    // Create a field from the field storage.
+    $field_definition = array(
       'field_name' => $field_storage_definition['name'],
       'entity_type' => 'entity_test',
       'bundle' => 'entity_test',
     );
-    entity_create('field_instance_config', $instance_definition)->save();
+    entity_create('field_config', $field_definition)->save();
   }
 
   /**
@@ -278,67 +278,67 @@ function testDelete() {
     // TODO: Also test deletion of the data stored in the field ?
 
     // Create two fields (so we can test that only one is deleted).
-    $field = array(
+    $field_storage_definition = array(
       'name' => 'field_1',
       'type' => 'test_field',
       'entity_type' => 'entity_test',
     );
-    entity_create('field_storage_config', $field)->save();
-    $another_field = array(
+    entity_create('field_storage_config', $field_storage_definition)->save();
+    $another_field_storage_definition = array(
       'name' => 'field_2',
       'type' => 'test_field',
       'entity_type' => 'entity_test',
     );
-    entity_create('field_storage_config', $another_field)->save();
+    entity_create('field_storage_config', $another_field_storage_definition)->save();
 
-    // Create instances for each.
-    $instance_definition = array(
-      'field_name' => $field['name'],
+    // Create fields for each.
+    $field_definition = array(
+      'field_name' => $field_storage_definition['name'],
       'entity_type' => 'entity_test',
       'bundle' => 'entity_test',
     );
-    entity_create('field_instance_config', $instance_definition)->save();
-    $another_instance_definition = $instance_definition;
-    $another_instance_definition['field_name'] = $another_field['name'];
-    entity_create('field_instance_config', $another_instance_definition)->save();
+    entity_create('field_config', $field_definition)->save();
+    $another_field_definition = $field_definition;
+    $another_field_definition['field_name'] = $another_field_storage_definition['name'];
+    entity_create('field_config', $another_field_definition)->save();
 
     // Test that the first field is not deleted, and then delete it.
-    $field_storage = current(entity_load_multiple_by_properties('field_storage_config', array('field_name' => $field['name'], 'include_deleted' => TRUE)));
-    $this->assertTrue(!empty($field_storage) && empty($field_storage->deleted), 'A new field is not marked for deletion.');
-    FieldStorageConfig::loadByName('entity_test', $field['name'])->delete();
+    $field_storage = current(entity_load_multiple_by_properties('field_storage_config', array('field_name' => $field_storage_definition['name'], 'include_deleted' => TRUE)));
+    $this->assertTrue(!empty($field_storage) && empty($field_storage->deleted), 'A new storage is not marked for deletion.');
+    FieldStorageConfig::loadByName('entity_test', $field_storage_definition['name'])->delete();
 
     // Make sure that the field is marked as deleted when it is specifically
     // loaded.
-    $field_storage = current(entity_load_multiple_by_properties('field_storage_config', array('field_name' => $field['name'], 'include_deleted' => TRUE)));
-    $this->assertTrue(!empty($field_storage->deleted), 'A deleted field is marked for deletion.');
+    $field_storage = current(entity_load_multiple_by_properties('field_storage_config', array('field_name' => $field_storage_definition['name'], 'include_deleted' => TRUE)));
+    $this->assertTrue(!empty($field_storage->deleted), 'A deleted storage is marked for deletion.');
 
-    // Make sure that this field's instance is marked as deleted when it is
+    // Make sure that this field is marked as deleted when it is
     // specifically loaded.
-    $instance = current(entity_load_multiple_by_properties('field_instance_config', array('entity_type' => 'entity_test', 'field_name' => $instance_definition['field_name'], 'bundle' => $instance_definition['bundle'], 'include_deleted' => TRUE)));
-    $this->assertTrue(!empty($instance->deleted), 'An instance for a deleted field is marked for deletion.');
+    $field = current(entity_load_multiple_by_properties('field_config', array('entity_type' => 'entity_test', 'field_name' => $field_definition['field_name'], 'bundle' => $field_definition['bundle'], 'include_deleted' => TRUE)));
+    $this->assertTrue(!empty($field->deleted), 'A field whose storage was deleted is marked for deletion.');
+
+    // Try to load the storage normally and make sure it does not show up.
+    $field_storage = entity_load('field_storage_config', 'entity_test.' . $field_storage_definition['name']);
+    $this->assertTrue(empty($field_storage), 'A deleted storage is not loaded by default.');
 
     // Try to load the field normally and make sure it does not show up.
-    $field_storage = entity_load('field_storage_config', 'entity_test.' . $field['name']);
-    $this->assertTrue(empty($field_storage), 'A deleted field is not loaded by default.');
+    $field = entity_load('field_config', 'entity_test.' . '.' . $field_definition['bundle'] . '.' . $field_definition['field_name']);
+    $this->assertTrue(empty($field), 'A field whose storage was deleted is not loaded by default.');
 
-    // Try to load the instance normally and make sure it does not show up.
-    $instance = entity_load('field_instance_config', 'entity_test.' . '.' . $instance_definition['bundle'] . '.' . $instance_definition['field_name']);
-    $this->assertTrue(empty($instance), 'An instance for a deleted field is not loaded by default.');
-
-    // Make sure the other field (and its field instance) are not deleted.
-    $another_field_storage = entity_load('field_storage_config', 'entity_test.' . $another_field['name']);
-    $this->assertTrue(!empty($another_field_storage) && empty($another_field_storage->deleted), 'A non-deleted field is not marked for deletion.');
-    $another_instance = entity_load('field_instance_config', 'entity_test.' . $another_instance_definition['bundle'] . '.' . $another_instance_definition['field_name']);
-    $this->assertTrue(!empty($another_instance) && empty($another_instance->deleted), 'An instance of a non-deleted field is not marked for deletion.');
+    // Make sure the other field and its storage are not deleted.
+    $another_field_storage = entity_load('field_storage_config', 'entity_test.' . $another_field_storage_definition['name']);
+    $this->assertTrue(!empty($another_field_storage) && empty($another_field_storage->deleted), 'A non-deleted storage is not marked for deletion.');
+    $another_field = entity_load('field_config', 'entity_test.' . $another_field_definition['bundle'] . '.' . $another_field_definition['field_name']);
+    $this->assertTrue(!empty($another_field) && empty($another_field->deleted), 'A field whose storage was not deleted is not marked for deletion.');
 
     // Try to create a new field the same name as a deleted field and
     // write data into it.
-    entity_create('field_storage_config', $field)->save();
-    entity_create('field_instance_config', $instance_definition)->save();
-    $field_storage = entity_load('field_storage_config', 'entity_test.' . $field['name']);
-    $this->assertTrue(!empty($field_storage) && empty($field_storage->deleted), 'A new field with a previously used name is created.');
-    $instance = entity_load('field_instance_config', 'entity_test.' . $instance_definition['bundle'] . '.' . $instance_definition['field_name'] );
-    $this->assertTrue(!empty($instance) && empty($instance->deleted), 'A new instance for a previously used field name is created.');
+    entity_create('field_storage_config', $field_storage_definition)->save();
+    entity_create('field_config', $field_definition)->save();
+    $field_storage = entity_load('field_storage_config', 'entity_test.' . $field_storage_definition['name']);
+    $this->assertTrue(!empty($field_storage) && empty($field_storage->deleted), 'A new storage with a previously used name is created.');
+    $field = entity_load('field_config', 'entity_test.' . $field_definition['bundle'] . '.' . $field_definition['field_name'] );
+    $this->assertTrue(!empty($field) && empty($field->deleted), 'A new field for a previously used field name is created.');
 
     // Save an entity with data for the field
     $entity = entity_create('entity_test');
@@ -386,12 +386,12 @@ function testUpdate() {
       'cardinality' => $cardinality,
     ));
     $field_storage->save();
-    $instance = entity_create('field_instance_config', array(
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'entity_type' => 'entity_test',
       'bundle' => 'entity_test',
     ));
-    $instance->save();
+    $field->save();
 
     do {
       $entity = entity_create('entity_test');
diff --git a/core/modules/field/src/Tests/DisplayApiTest.php b/core/modules/field/src/Tests/DisplayApiTest.php
index 623419b..1a1abfd 100644
--- a/core/modules/field/src/Tests/DisplayApiTest.php
+++ b/core/modules/field/src/Tests/DisplayApiTest.php
@@ -59,7 +59,7 @@ class DisplayApiTest extends FieldUnitTestBase {
   protected function setUp() {
     parent::setUp();
 
-    // Create a field and instance.
+    // Create a field and its storage.
     $this->field_name = 'test_field';
     $this->label = $this->randomMachineName();
     $this->cardinality = 4;
@@ -70,7 +70,7 @@ protected function setUp() {
       'type' => 'test_field',
       'cardinality' => $this->cardinality,
     );
-    $instance = array(
+    $field = array(
       'field_name' => $this->field_name,
       'entity_type' => 'entity_test',
       'bundle' => 'entity_test',
@@ -93,14 +93,14 @@ protected function setUp() {
     );
 
     entity_create('field_storage_config', $field_storage)->save();
-    entity_create('field_instance_config', $instance)->save();
+    entity_create('field_config', $field)->save();
     // Create a display for the default view mode.
-    entity_get_display($instance['entity_type'], $instance['bundle'], 'default')
+    entity_get_display($field['entity_type'], $field['bundle'], 'default')
       ->setComponent($this->field_name, $this->display_options['default'])
       ->save();
     // Create a display for the teaser view mode.
     entity_create('view_mode', array('id' =>  'entity_test.teaser', 'targetEntityType' => 'entity_test'))->save();
-    entity_get_display($instance['entity_type'], $instance['bundle'], 'teaser')
+    entity_get_display($field['entity_type'], $field['bundle'], 'teaser')
       ->setComponent($this->field_name, $this->display_options['teaser'])
       ->save();
 
@@ -242,8 +242,7 @@ function testFieldItemView() {
       $this->assertText($setting . '|' . $value['value'] . '|' . ($value['value'] + 1), format_string('Value @delta was displayed with expected setting.', array('@delta' => $delta)));
     }
 
-    // View mode: check that display settings specified in the instance are
-    // used.
+    // View mode: check that display settings specified in the field are used.
     $setting = $this->display_options['teaser']['settings']['test_formatter_setting'];
     foreach ($this->values as $delta => $value) {
       $item = $this->entity->{$this->field_name}[$delta];
diff --git a/core/modules/field/src/Tests/Email/EmailFieldTest.php b/core/modules/field/src/Tests/Email/EmailFieldTest.php
index 738c2d7..4b67c79 100644
--- a/core/modules/field/src/Tests/Email/EmailFieldTest.php
+++ b/core/modules/field/src/Tests/Email/EmailFieldTest.php
@@ -31,11 +31,11 @@ class EmailFieldTest extends WebTestBase {
   protected $fieldStorage;
 
   /**
-   * The instance used in this test class.
+   * The field used in this test class.
    *
-   * @var \Drupal\field\Entity\FieldInstanceConfig
+   * @var \Drupal\field\Entity\FieldConfig
    */
-  protected $instance;
+  protected $field;
 
   protected function setUp() {
     parent::setUp();
@@ -60,11 +60,11 @@ function testEmailField() {
       'type' => 'email',
     ));
     $this->fieldStorage->save();
-    $this->instance = entity_create('field_instance_config', array(
+    $this->field = entity_create('field_config', array(
       'field_storage' => $this->fieldStorage,
       'bundle' => 'entity_test',
     ));
-    $this->instance->save();
+    $this->field->save();
 
     // Create a form display for the default form mode.
     entity_get_form_display('entity_test', 'entity_test', 'default')
diff --git a/core/modules/field/src/Tests/Email/EmailItemTest.php b/core/modules/field/src/Tests/Email/EmailItemTest.php
index 1ec0a08..6389b7d 100644
--- a/core/modules/field/src/Tests/Email/EmailItemTest.php
+++ b/core/modules/field/src/Tests/Email/EmailItemTest.php
@@ -21,13 +21,13 @@ class EmailItemTest extends FieldUnitTestBase {
   protected function setUp() {
     parent::setUp();
 
-    // Create an email field and instance for validation.
+    // Create an email field storage and field for validation.
     entity_create('field_storage_config', array(
       'name' => 'field_email',
       'entity_type' => 'entity_test',
       'type' => 'email',
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => 'field_email',
       'bundle' => 'entity_test',
diff --git a/core/modules/field/src/Tests/FieldAccessTest.php b/core/modules/field/src/Tests/FieldAccessTest.php
index 2a38031..2c36cab 100644
--- a/core/modules/field/src/Tests/FieldAccessTest.php
+++ b/core/modules/field/src/Tests/FieldAccessTest.php
@@ -51,12 +51,12 @@ protected function setUp() {
       'type' => 'text',
     );
     entity_create('field_storage_config', $field_storage)->save();
-    $instance = array(
+    $field = array(
       'field_name' => $field_storage['name'],
       'entity_type' => 'node',
       'bundle' => $content_type,
     );
-    entity_create('field_instance_config', $instance)->save();
+    entity_create('field_config', $field)->save();
 
     // Assign display properties for the 'default' and 'teaser' view modes.
     foreach (array('default', 'teaser') as $view_mode) {
diff --git a/core/modules/field/src/Tests/FieldAttachOtherTest.php b/core/modules/field/src/Tests/FieldAttachOtherTest.php
index ec5dd88..01e8a0c 100644
--- a/core/modules/field/src/Tests/FieldAttachOtherTest.php
+++ b/core/modules/field/src/Tests/FieldAttachOtherTest.php
@@ -21,14 +21,14 @@ class FieldAttachOtherTest extends FieldUnitTestBase {
   protected function setUp() {
     parent::setUp();
     $this->installEntitySchema('entity_test_rev');
-    $this->createFieldWithInstance();
+    $this->createFieldWithStorage();
   }
 
   /**
    * Test rendering fields with EntityDisplay build().
    */
   function testEntityDisplayBuild() {
-    $this->createFieldWithInstance('_2');
+    $this->createFieldWithStorage('_2');
 
     $entity_type = 'entity_test';
     $entity_init = entity_create($entity_type);
@@ -66,11 +66,11 @@ function testEntityDisplayBuild() {
     // View all fields.
     $content = $display->build($entity);
     $this->render($content);
-    $this->assertRaw($this->fieldTestData->instance->getLabel(), "First field's label is displayed.");
+    $this->assertRaw($this->fieldTestData->field->getLabel(), "First field's label is displayed.");
     foreach ($values as $delta => $value) {
       $this->assertRaw("$formatter_setting|{$value['value']}", "Value $delta is displayed, formatter settings are applied.");
     }
-    $this->assertRaw($this->fieldTestData->instance_2->getLabel(), "Second field's label is displayed.");
+    $this->assertRaw($this->fieldTestData->field_2->getLabel(), "Second field's label is displayed.");
     foreach ($values_2 as $delta => $value) {
       $this->assertRaw("$formatter_setting_2|{$value['value']}", "Value $delta is displayed, formatter settings are applied.");
     }
@@ -81,14 +81,14 @@ function testEntityDisplayBuild() {
     $display->setComponent($this->fieldTestData->field_name, $display_options);
     $content = $display->build($entity);
     $this->render($content);
-    $this->assertNoRaw($this->fieldTestData->instance->getLabel(), "Hidden label: label is not displayed.");
+    $this->assertNoRaw($this->fieldTestData->field->getLabel(), "Hidden label: label is not displayed.");
 
     // Field hidden.
     $entity = clone($entity_init);
     $display->removeComponent($this->fieldTestData->field_name);
     $content = $display->build($entity);
     $this->render($content);
-    $this->assertNoRaw($this->fieldTestData->instance->getLabel(), "Hidden field: label is not displayed.");
+    $this->assertNoRaw($this->fieldTestData->field->getLabel(), "Hidden field: label is not displayed.");
     foreach ($values as $delta => $value) {
       $this->assertNoRaw("$formatter_setting|{$value['value']}", "Hidden field: value $delta is not displayed.");
     }
@@ -164,7 +164,7 @@ function testEntityDisplayViewMultiple() {
    */
   function testEntityCache() {
     // Initialize random values and a test entity.
-    $entity_init = entity_create('entity_test', array('type' => $this->fieldTestData->instance->bundle));
+    $entity_init = entity_create('entity_test', array('type' => $this->fieldTestData->field->bundle));
     $values = $this->_generateTestFieldValues($this->fieldTestData->field_storage->getCardinality());
 
     // Non-cacheable entity type.
@@ -183,7 +183,7 @@ function testEntityCache() {
 
     // Cacheable entity type.
     $entity_type = 'entity_test_rev';
-    $this->createFieldWithInstance('_2', $entity_type);
+    $this->createFieldWithStorage('_2', $entity_type);
 
     $entity_init = entity_create($entity_type, array(
       'type' => $entity_type,
@@ -244,19 +244,19 @@ function testEntityCache() {
    * widgets show up.
    */
   function testEntityFormDisplayBuildForm() {
-    $this->createFieldWithInstance('_2');
+    $this->createFieldWithStorage('_2');
 
     $entity_type = 'entity_test';
-    $entity = entity_create($entity_type, array('id' => 1, 'revision_id' => 1, 'type' => $this->fieldTestData->instance->bundle));
+    $entity = entity_create($entity_type, array('id' => 1, 'revision_id' => 1, 'type' => $this->fieldTestData->field->bundle));
 
     // Test generating widgets for all fields.
-    $display = entity_get_form_display($entity_type, $this->fieldTestData->instance->bundle, 'default');
+    $display = entity_get_form_display($entity_type, $this->fieldTestData->field->bundle, 'default');
     $form = array();
     $form_state = new FormState();
     $display->buildForm($entity, $form, $form_state);
 
-    $this->assertEqual($form[$this->fieldTestData->field_name]['widget']['#title'], $this->fieldTestData->instance->getLabel(), "First field's form title is {$this->fieldTestData->instance->getLabel()}");
-    $this->assertEqual($form[$this->fieldTestData->field_name_2]['widget']['#title'], $this->fieldTestData->instance_2->getLabel(), "Second field's form title is {$this->fieldTestData->instance_2->getLabel()}");
+    $this->assertEqual($form[$this->fieldTestData->field_name]['widget']['#title'], $this->fieldTestData->field->getLabel(), "First field's form title is {$this->fieldTestData->field->getLabel()}");
+    $this->assertEqual($form[$this->fieldTestData->field_name_2]['widget']['#title'], $this->fieldTestData->field_2->getLabel(), "Second field's form title is {$this->fieldTestData->field_2->getLabel()}");
     for ($delta = 0; $delta < $this->fieldTestData->field_storage->getCardinality(); $delta++) {
       // field_test_widget uses 'textfield'
       $this->assertEqual($form[$this->fieldTestData->field_name]['widget'][$delta]['value']['#type'], 'textfield', "First field's form delta $delta widget is textfield");
@@ -267,7 +267,7 @@ function testEntityFormDisplayBuildForm() {
     }
 
     // Test generating widgets for all fields.
-    $display = entity_get_form_display($entity_type, $this->fieldTestData->instance->bundle, 'default');
+    $display = entity_get_form_display($entity_type, $this->fieldTestData->field->bundle, 'default');
     foreach ($display->getComponents() as $name => $options) {
       if ($name != $this->fieldTestData->field_name_2) {
         $display->removeComponent($name);
@@ -278,7 +278,7 @@ function testEntityFormDisplayBuildForm() {
     $display->buildForm($entity, $form, $form_state);
 
     $this->assertFalse(isset($form[$this->fieldTestData->field_name]), 'The first field does not exist in the form');
-    $this->assertEqual($form[$this->fieldTestData->field_name_2]['widget']['#title'], $this->fieldTestData->instance_2->getLabel(), "Second field's form title is {$this->fieldTestData->instance_2->getLabel()}");
+    $this->assertEqual($form[$this->fieldTestData->field_name_2]['widget']['#title'], $this->fieldTestData->field_2->getLabel(), "Second field's form title is {$this->fieldTestData->field_2->getLabel()}");
     for ($delta = 0; $delta < $this->fieldTestData->field_storage_2->getCardinality(); $delta++) {
       // field_test_widget uses 'textfield'
       $this->assertEqual($form[$this->fieldTestData->field_name_2]['widget'][$delta]['value']['#type'], 'textfield', "Second field's form delta $delta widget is textfield");
@@ -289,13 +289,13 @@ function testEntityFormDisplayBuildForm() {
    * Tests \Drupal\Core\Entity\Display\EntityFormDisplayInterface::extractFormValues().
    */
   function testEntityFormDisplayExtractFormValues() {
-    $this->createFieldWithInstance('_2');
+    $this->createFieldWithStorage('_2');
 
     $entity_type = 'entity_test';
-    $entity_init = entity_create($entity_type, array('id' => 1, 'revision_id' => 1, 'type' => $this->fieldTestData->instance->bundle));
+    $entity_init = entity_create($entity_type, array('id' => 1, 'revision_id' => 1, 'type' => $this->fieldTestData->field->bundle));
 
     // Build the form for all fields.
-    $display = entity_get_form_display($entity_type, $this->fieldTestData->instance->bundle, 'default');
+    $display = entity_get_form_display($entity_type, $this->fieldTestData->field->bundle, 'default');
     $form = array();
     $form_state = new FormState();
     $display->buildForm($entity_init, $form, $form_state);
diff --git a/core/modules/field/src/Tests/FieldAttachStorageTest.php b/core/modules/field/src/Tests/FieldAttachStorageTest.php
index 42c607b..dbcdfaa 100644
--- a/core/modules/field/src/Tests/FieldAttachStorageTest.php
+++ b/core/modules/field/src/Tests/FieldAttachStorageTest.php
@@ -6,7 +6,7 @@
  */
 
 namespace Drupal\field\Tests;
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 
 /**
  * Tests storage-related Field Attach API functions.
@@ -29,7 +29,7 @@ protected function setUp() {
    */
   function testFieldAttachSaveLoad() {
     $entity_type = 'entity_test_rev';
-    $this->createFieldWithInstance('', $entity_type);
+    $this->createFieldWithStorage('', $entity_type);
     $cardinality = $this->fieldTestData->field_storage->getCardinality();
 
     // TODO : test empty values filtering and "compression" (store consecutive deltas).
@@ -102,7 +102,7 @@ function testFieldAttachLoadMultiple() {
       $field_storage->save();
       $field_ids[$i] = $field_storage->uuid();
       foreach ($field_bundles_map[$i] as $bundle) {
-        entity_create('field_instance_config', array(
+        entity_create('field_config', array(
           'field_name' => $field_names[$i],
           'entity_type' => $entity_type,
           'bundle' => $bundles[$bundle],
@@ -145,7 +145,7 @@ function testFieldAttachLoadMultiple() {
    */
   function testFieldAttachSaveEmptyData() {
     $entity_type = 'entity_test';
-    $this->createFieldWithInstance('', $entity_type);
+    $this->createFieldWithStorage('', $entity_type);
 
     $entity_init = entity_create($entity_type, array('id' => 1));
 
@@ -191,15 +191,15 @@ function testFieldAttachSaveEmptyData() {
    */
   function testFieldAttachSaveEmptyDataDefaultValue() {
     $entity_type = 'entity_test_rev';
-    $this->createFieldWithInstance('', $entity_type);
+    $this->createFieldWithStorage('', $entity_type);
 
     // Add a default value function.
-    $this->fieldTestData->instance->default_value_function = 'field_test_default_value';
-    $this->fieldTestData->instance->save();
+    $this->fieldTestData->field->default_value_function = 'field_test_default_value';
+    $this->fieldTestData->field->save();
 
     // Verify that fields are populated with default values.
     $entity_init = entity_create($entity_type, array('id' => 1, 'revision_id' => 1));
-    $default = field_test_default_value($entity_init, $this->fieldTestData->instance);
+    $default = field_test_default_value($entity_init, $this->fieldTestData->field);
     $this->assertEqual($entity_init->{$this->fieldTestData->field_name}->getValue(), $default, 'Default field value correctly populated.');
 
     // Insert: Field is NULL.
@@ -220,9 +220,9 @@ function testFieldAttachSaveEmptyDataDefaultValue() {
    */
   function testFieldAttachDelete() {
     $entity_type = 'entity_test_rev';
-    $this->createFieldWithInstance('', $entity_type);
+    $this->createFieldWithStorage('', $entity_type);
     $cardinality = $this->fieldTestData->field_storage->getCardinality();
-    $entity = entity_create($entity_type, array('type' => $this->fieldTestData->instance->bundle));
+    $entity = entity_create($entity_type, array('type' => $this->fieldTestData->field->bundle));
     $vids = array();
 
     // Create revision 0
@@ -278,19 +278,19 @@ function testFieldAttachDelete() {
    */
   function testEntityCreateRenameBundle() {
     $entity_type = 'entity_test_rev';
-    $this->createFieldWithInstance('', $entity_type);
+    $this->createFieldWithStorage('', $entity_type);
     $cardinality = $this->fieldTestData->field_storage->getCardinality();
 
     // Create a new bundle.
     $new_bundle = 'test_bundle_' . drupal_strtolower($this->randomMachineName());
     entity_test_create_bundle($new_bundle, NULL, $entity_type);
 
-    // Add an instance to that bundle.
-    $this->fieldTestData->instance_definition['bundle'] = $new_bundle;
-    entity_create('field_instance_config', $this->fieldTestData->instance_definition)->save();
+    // Add a field to that bundle.
+    $this->fieldTestData->field_definition['bundle'] = $new_bundle;
+    entity_create('field_config', $this->fieldTestData->field_definition)->save();
 
     // Save an entity with data in the field.
-    $entity = entity_create($entity_type, array('type' => $this->fieldTestData->instance->bundle));
+    $entity = entity_create($entity_type, array('type' => $this->fieldTestData->field->bundle));
     $values = $this->_generateTestFieldValues($cardinality);
     $entity->{$this->fieldTestData->field_name} = $values;
 
@@ -300,11 +300,11 @@ function testEntityCreateRenameBundle() {
 
     // Rename the bundle.
     $new_bundle = 'test_bundle_' . drupal_strtolower($this->randomMachineName());
-    entity_test_rename_bundle($this->fieldTestData->instance_definition['bundle'], $new_bundle, $entity_type);
+    entity_test_rename_bundle($this->fieldTestData->field_definition['bundle'], $new_bundle, $entity_type);
 
-    // Check that the instance definition has been updated.
-    $this->fieldTestData->instance = FieldInstanceConfig::loadByName($entity_type, $new_bundle, $this->fieldTestData->field_name);
-    $this->assertIdentical($this->fieldTestData->instance->bundle, $new_bundle, "Bundle name has been updated in the instance.");
+    // Check that the field definition has been updated.
+    $this->fieldTestData->field = FieldConfig::loadByName($entity_type, $new_bundle, $this->fieldTestData->field_name);
+    $this->assertIdentical($this->fieldTestData->field->bundle, $new_bundle, "Bundle name has been updated in the field.");
 
     // Verify the field data is present on load.
     $controller = $this->container->get('entity.manager')->getStorage($entity->getEntityTypeId());
@@ -318,15 +318,15 @@ function testEntityCreateRenameBundle() {
    */
   function testEntityDeleteBundle() {
     $entity_type = 'entity_test_rev';
-    $this->createFieldWithInstance('', $entity_type);
+    $this->createFieldWithStorage('', $entity_type);
 
     // Create a new bundle.
     $new_bundle = 'test_bundle_' . drupal_strtolower($this->randomMachineName());
     entity_test_create_bundle($new_bundle, NULL, $entity_type);
 
-    // Add an instance to that bundle.
-    $this->fieldTestData->instance_definition['bundle'] = $new_bundle;
-    entity_create('field_instance_config', $this->fieldTestData->instance_definition)->save();
+    // Add a field to that bundle.
+    $this->fieldTestData->field_definition['bundle'] = $new_bundle;
+    entity_create('field_config', $this->fieldTestData->field_definition)->save();
 
     // Create a second field for the test bundle
     $field_name = drupal_strtolower($this->randomMachineName() . '_field_name');
@@ -337,18 +337,18 @@ function testEntityDeleteBundle() {
       'cardinality' => 1,
     );
     entity_create('field_storage_config', $field_storage)->save();
-    $instance = array(
+    $field = array(
       'field_name' => $field_name,
       'entity_type' => $entity_type,
-      'bundle' => $this->fieldTestData->instance->bundle,
+      'bundle' => $this->fieldTestData->field->bundle,
       'label' => $this->randomMachineName() . '_label',
       'description' => $this->randomMachineName() . '_description',
       'weight' => mt_rand(0, 127),
     );
-    entity_create('field_instance_config', $instance)->save();
+    entity_create('field_config', $field)->save();
 
     // Save an entity with data for both fields
-    $entity = entity_create($entity_type, array('type' => $this->fieldTestData->instance->bundle));
+    $entity = entity_create($entity_type, array('type' => $this->fieldTestData->field->bundle));
     $values = $this->_generateTestFieldValues($this->fieldTestData->field_storage->getCardinality());
     $entity->{$this->fieldTestData->field_name} = $values;
     $entity->{$field_name} = $this->_generateTestFieldValues(1);
@@ -359,7 +359,7 @@ function testEntityDeleteBundle() {
     $this->assertEqual(count($entity->{$field_name}), 1, 'Second field got loaded');
 
     // Delete the bundle.
-    entity_test_delete_bundle($this->fieldTestData->instance->bundle, $entity_type);
+    entity_test_delete_bundle($this->fieldTestData->field->bundle, $entity_type);
 
     // Verify no data gets loaded
     $controller = $this->container->get('entity.manager')->getStorage($entity->getEntityTypeId());
@@ -369,9 +369,9 @@ function testEntityDeleteBundle() {
     $this->assertTrue(empty($entity->{$this->fieldTestData->field_name}), 'No data for first field');
     $this->assertTrue(empty($entity->{$field_name}), 'No data for second field');
 
-    // Verify that the instances are gone.
-    $this->assertFalse(entity_load('field_instance_config', 'entity_test.' . $this->fieldTestData->instance->bundle . '.' . $this->fieldTestData->field_name), "First field is deleted");
-    $this->assertFalse(entity_load('field_instance_config', 'entity_test.' . $instance['bundle']. '.' . $field_name), "Second field is deleted");
+    // Verify that the fields are gone.
+    $this->assertFalse(entity_load('field_config', 'entity_test.' . $this->fieldTestData->field->bundle . '.' . $this->fieldTestData->field_name), "First field is deleted");
+    $this->assertFalse(entity_load('field_config', 'entity_test.' . $field['bundle']. '.' . $field_name), "Second field is deleted");
   }
 
 }
diff --git a/core/modules/field/src/Tests/FieldCrudTest.php b/core/modules/field/src/Tests/FieldCrudTest.php
new file mode 100644
index 0000000..9e682ff
--- /dev/null
+++ b/core/modules/field/src/Tests/FieldCrudTest.php
@@ -0,0 +1,221 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\field\Tests\FieldCrudTest.
+ */
+
+namespace Drupal\field\Tests;
+
+use Drupal\Core\Entity\EntityStorageException;
+use Drupal\Core\Field\FieldException;
+use Drupal\field\Entity\FieldStorageConfig;
+use Drupal\field\Entity\FieldConfig;
+
+/**
+ * Create field entities by attaching fields to entities.
+ *
+ * @group field
+ */
+class FieldCrudTest extends FieldUnitTestBase {
+
+  /**
+   * The field storage entity.
+   *
+   * @var \Drupal\field\Entity\FieldStorageConfig
+   */
+  protected $fieldStorage;
+
+  /**
+   * The field entity definition.
+   *
+   * @var array
+   */
+  protected $fieldStorageDefinition;
+
+  /**
+   * The field entity definition.
+   *
+   * @var array
+   */
+  protected $fieldDefinition;
+
+  function setUp() {
+    parent::setUp();
+
+    $this->fieldStorageDefinition = array(
+      'name' => drupal_strtolower($this->randomMachineName()),
+      'entity_type' => 'entity_test',
+      'type' => 'test_field',
+    );
+    $this->fieldStorage = entity_create('field_storage_config', $this->fieldStorageDefinition);
+    $this->fieldStorage->save();
+    $this->fieldDefinition = array(
+      'field_name' => $this->fieldStorage->getName(),
+      'entity_type' => 'entity_test',
+      'bundle' => 'entity_test',
+    );
+  }
+
+  // TODO : test creation with
+  // - a full fledged $field structure, check that all the values are there
+  // - a minimal $field structure, check all default values are set
+  // defer actual $field comparison to a helper function, used for the two cases above,
+  // and for testUpdateField
+
+  /**
+   * Test the creation of a field.
+   */
+  function testCreateField() {
+    $field = entity_create('field_config', $this->fieldDefinition);
+    $field->save();
+
+    // Read the configuration. Check against raw configuration data rather than
+    // the loaded ConfigEntity, to be sure we check that the defaults are
+    // applied on write.
+    $config = \Drupal::config('field.field.' . $field->id())->get();
+    $field_type_manager = \Drupal::service('plugin.manager.field.field_type');
+
+    // Check that default values are set.
+    $this->assertEqual($config['required'], FALSE, 'Required defaults to false.');
+    $this->assertIdentical($config['label'], $this->fieldDefinition['field_name'], 'Label defaults to field name.');
+    $this->assertIdentical($config['description'], '', 'Description defaults to empty string.');
+
+    // Check that default settings are set.
+    $this->assertEqual($config['settings'], $field_type_manager->getDefaultFieldSettings($this->fieldStorageDefinition['type']) , 'Default field settings have been written.');
+
+    // Check that the denormalized 'field_type' was properly written.
+    $this->assertEqual($config['field_type'], $this->fieldStorageDefinition['type']);
+
+    // Guarantee that the field/bundle combination is unique.
+    try {
+      entity_create('field_config', $this->fieldDefinition)->save();
+      $this->fail(t('Cannot create two fields with the same field / bundle combination.'));
+    }
+    catch (EntityStorageException $e) {
+      $this->pass(t('Cannot create two fields with the same field / bundle combination.'));
+    }
+
+    // Check that the specified field exists.
+    try {
+      $this->fieldDefinition['field_name'] = $this->randomMachineName();
+      entity_create('field_config', $this->fieldDefinition)->save();
+      $this->fail(t('Cannot create a field with a non-existing storage.'));
+    }
+    catch (FieldException $e) {
+      $this->pass(t('Cannot create a field with a non-existing storage.'));
+    }
+
+    // TODO: test other failures.
+  }
+
+  /**
+   * Test reading back a field definition.
+   */
+  function testReadField() {
+    entity_create('field_config', $this->fieldDefinition)->save();
+
+    // Read the field back.
+    $field = entity_load('field_config', 'entity_test.' . $this->fieldDefinition['bundle'] . '.' . $this->fieldDefinition['field_name']);
+    $this->assertTrue($this->fieldDefinition['field_name'] == $field->getName(), 'The field was properly read.');
+    $this->assertTrue($this->fieldDefinition['entity_type'] == $field->entity_type, 'The field was properly read.');
+    $this->assertTrue($this->fieldDefinition['bundle'] == $field->bundle, 'The field was properly read.');
+  }
+
+  /**
+   * Test the update of a field.
+   */
+  function testUpdateField() {
+    entity_create('field_config', $this->fieldDefinition)->save();
+
+    // Check that basic changes are saved.
+    $field = entity_load('field_config', 'entity_test.' . $this->fieldDefinition['bundle'] . '.' . $this->fieldDefinition['field_name']);
+    $field->required = !$field->isRequired();
+    $field->label = $this->randomMachineName();
+    $field->description = $this->randomMachineName();
+    $field->settings['test_field_setting'] = $this->randomMachineName();
+    $field->save();
+
+    $field_new = entity_load('field_config', 'entity_test.' . $this->fieldDefinition['bundle'] . '.' . $this->fieldDefinition['field_name']);
+    $this->assertEqual($field->isRequired(), $field_new->isRequired(), '"required" change is saved');
+    $this->assertEqual($field->getLabel(), $field_new->getLabel(), '"label" change is saved');
+    $this->assertEqual($field->getDescription(), $field_new->getDescription(), '"description" change is saved');
+
+    // TODO: test failures.
+  }
+
+  /**
+   * Test the deletion of a field.
+   */
+  function testDeleteField() {
+    // TODO: Test deletion of the data stored in the field also.
+    // Need to check that data for a 'deleted' field / storage doesn't get loaded
+    // Need to check data marked deleted is cleaned on cron (not implemented yet...)
+
+    // Create two fields for the same field storage so we can test that only one
+    // is deleted.
+    entity_create('field_config', $this->fieldDefinition)->save();
+    $another_field_definition = $this->fieldDefinition;
+    $another_field_definition['bundle'] .= '_another_bundle';
+    entity_test_create_bundle($another_field_definition['bundle']);
+    entity_create('field_config', $another_field_definition)->save();
+
+    // Test that the first field is not deleted, and then delete it.
+    $field = current(entity_load_multiple_by_properties('field_config', array('entity_type' => 'entity_test', 'field_name' => $this->fieldDefinition['field_name'], 'bundle' => $this->fieldDefinition['bundle'], 'include_deleted' => TRUE)));
+    $this->assertTrue(!empty($field) && empty($field->deleted), 'A new field is not marked for deletion.');
+    $field->delete();
+
+    // Make sure the field is marked as deleted when it is specifically loaded.
+    $field = current(entity_load_multiple_by_properties('field_config', array('entity_type' => 'entity_test', 'field_name' => $this->fieldDefinition['field_name'], 'bundle' => $this->fieldDefinition['bundle'], 'include_deleted' => TRUE)));
+    $this->assertTrue(!empty($field->deleted), 'A deleted field is marked for deletion.');
+
+    // Try to load the field normally and make sure it does not show up.
+    $field = entity_load('field_config', 'entity_test.' . '.' . $this->fieldDefinition['bundle'] . '.' . $this->fieldDefinition['field_name']);
+    $this->assertTrue(empty($field), 'A deleted field is not loaded by default.');
+
+    // Make sure the other field is not deleted.
+    $another_field = entity_load('field_config', 'entity_test.' . $another_field_definition['bundle'] . '.' . $another_field_definition['field_name']);
+    $this->assertTrue(!empty($another_field) && empty($another_field->deleted), 'A non-deleted field is not marked for deletion.');
+  }
+
+  /**
+   * Tests the cross deletion behavior between field storages and fields.
+   */
+  function testDeleteFieldCrossDeletion() {
+    $field_definition_2 = $this->fieldDefinition;
+    $field_definition_2['bundle'] .= '_another_bundle';
+    entity_test_create_bundle($field_definition_2['bundle']);
+
+    // Check that deletion of a field storage deletes its fields.
+    $field_storage = $this->fieldStorage;
+    entity_create('field_config', $this->fieldDefinition)->save();
+    entity_create('field_config', $field_definition_2)->save();
+    $field_storage->delete();
+    $this->assertFalse(FieldConfig::loadByName('entity_test', $this->fieldDefinition['bundle'], $field_storage->name));
+    $this->assertFalse(FieldConfig::loadByName('entity_test', $field_definition_2['bundle'], $field_storage->name));
+
+    // Chack that deletion of the last field deletes the storage.
+    $field_storage = entity_create('field_storage_config', $this->fieldStorageDefinition);
+    $field_storage->save();
+    $field = entity_create('field_config', $this->fieldDefinition);
+    $field->save();
+    $field_2 = entity_create('field_config', $field_definition_2);
+    $field_2->save();
+    $field->delete();
+    $this->assertTrue(FieldStorageConfig::loadByName('entity_test', $field_storage->name));
+    $field_2->delete();
+    $this->assertFalse(FieldStorageConfig::loadByName('entity_test', $field_storage->name));
+
+    // Check that deletion of all fields using a storage simultaneously deletes
+    // the storage.
+    $field_storage = entity_create('field_storage_config', $this->fieldStorageDefinition);
+    $field_storage->save();
+    $field = entity_create('field_config', $this->fieldDefinition);
+    $field->save();
+    $field_2 = entity_create('field_config', $field_definition_2);
+    $field_2->save();
+    $this->container->get('entity.manager')->getStorage('field_config')->delete(array($field, $field_2));
+    $this->assertFalse(FieldStorageConfig::loadByName('entity_test', $field_storage->name));
+  }
+
+}
diff --git a/core/modules/field/src/Tests/FieldDataCountTest.php b/core/modules/field/src/Tests/FieldDataCountTest.php
index 1a57fc9..90e0400 100644
--- a/core/modules/field/src/Tests/FieldDataCountTest.php
+++ b/core/modules/field/src/Tests/FieldDataCountTest.php
@@ -46,7 +46,7 @@ public function testEntityCountAndHasData() {
       'cardinality' => 2,
     ));
     $field_storage->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'entity_test',
     ))->save();
diff --git a/core/modules/field/src/Tests/FieldImportChangeTest.php b/core/modules/field/src/Tests/FieldImportChangeTest.php
index fce8d0e..6188846 100644
--- a/core/modules/field/src/Tests/FieldImportChangeTest.php
+++ b/core/modules/field/src/Tests/FieldImportChangeTest.php
@@ -8,7 +8,7 @@
 namespace Drupal\field\Tests;
 
 /**
- * Update field and instances during config change method invocation.
+ * Update field storage and fields during config change method invocation.
  *
  * @group field
  */
@@ -22,12 +22,12 @@ class FieldImportChangeTest extends FieldUnitTestBase {
   public static $modules = array('field_test_config');
 
   /**
-   * Tests importing an updated field instance.
+   * Tests importing an updated field.
    */
   function testImportChange() {
-    $field_id = 'field_test_import';
-    $instance_id = "entity_test.entity_test.$field_id";
-    $instance_config_name = "field.instance.$instance_id";
+    $field_storage_id = 'field_test_import';
+    $field_id = "entity_test.entity_test.$field_storage_id";
+    $field_config_name = "field.field.$field_id";
 
     // Import default config.
     $this->installConfig(array('field_test_config'));
@@ -36,17 +36,17 @@ function testImportChange() {
     $this->copyConfig($active, $staging);
 
     // Save as files in the the staging directory.
-    $instance = $active->read($instance_config_name);
+    $field = $active->read($field_config_name);
     $new_label = 'Test update import field';
-    $instance['label'] = $new_label;
-    $staging->write($instance_config_name, $instance);
+    $field['label'] = $new_label;
+    $staging->write($field_config_name, $field);
 
     // Import the content of the staging directory.
     $this->configImporter()->import();
 
     // Check that the updated config was correctly imported.
-    $instance = entity_load('field_instance_config', $instance_id);
-    $this->assertEqual($instance->getLabel(), $new_label, 'Instance label updated');
+    $field = entity_load('field_config', $field_id);
+    $this->assertEqual($field->getLabel(), $new_label, 'field label updated');
   }
 }
 
diff --git a/core/modules/field/src/Tests/FieldImportCreateTest.php b/core/modules/field/src/Tests/FieldImportCreateTest.php
index 4c56087..c07d8bf 100644
--- a/core/modules/field/src/Tests/FieldImportCreateTest.php
+++ b/core/modules/field/src/Tests/FieldImportCreateTest.php
@@ -8,59 +8,59 @@
 namespace Drupal\field\Tests;
 
 /**
- * Create field and instances during config create method invocation.
+ * Create field storages and fields during config create method invocation.
  *
  * @group field
  */
 class FieldImportCreateTest extends FieldUnitTestBase {
 
   /**
-   * Tests creating fields and instances during default config import.
+   * Tests creating field storages and fields during default config import.
    */
   function testImportCreateDefault() {
     $field_name = 'field_test_import';
-    $field_id = "entity_test.$field_name";
-    $instance_id = "entity_test.entity_test.$field_name";
+    $field_storage_id = "entity_test.$field_name";
+    $field_id = "entity_test.entity_test.$field_name";
     $field_name_2 = 'field_test_import_2';
-    $field_id_2 = "entity_test.$field_name_2";
-    $instance_id_2a = "entity_test.entity_test.$field_name_2";
-    $instance_id_2b = "entity_test.test_bundle.$field_name_2";
+    $field_storage_id_2 = "entity_test.$field_name_2";
+    $field_id_2a = "entity_test.entity_test.$field_name_2";
+    $field_id_2b = "entity_test.test_bundle.$field_name_2";
 
-    // Check that the fields and instances do not exist yet.
-    $this->assertFalse(entity_load('field_storage_config', $field_id));
-    $this->assertFalse(entity_load('field_instance_config', $instance_id));
-    $this->assertFalse(entity_load('field_storage_config', $field_id_2));
-    $this->assertFalse(entity_load('field_instance_config', $instance_id_2a));
-    $this->assertFalse(entity_load('field_instance_config', $instance_id_2b));
+    // Check that the field storages and fields do not exist yet.
+    $this->assertFalse(entity_load('field_storage_config', $field_storage_id));
+    $this->assertFalse(entity_load('field_config', $field_id));
+    $this->assertFalse(entity_load('field_storage_config', $field_storage_id_2));
+    $this->assertFalse(entity_load('field_config', $field_id_2a));
+    $this->assertFalse(entity_load('field_config', $field_id_2b));
 
     // Create a second bundle for the 'Entity test' entity type.
     entity_test_create_bundle('test_bundle');
 
-    // Enable field_test_config module and check that the field and instance
+    // Enable field_test_config module and check that the field and storage
     // shipped in the module's default config were created.
     \Drupal::moduleHandler()->install(array('field_test_config'));
 
-    // A field with one instance.
-    $field_storage = entity_load('field_storage_config', $field_id);
+    // A field storage with one single field.
+    $field_storage = entity_load('field_storage_config', $field_storage_id);
     $this->assertTrue($field_storage, 'The field was created.');
-    $instance = entity_load('field_instance_config', $instance_id);
-    $this->assertTrue($instance, 'The field instance was deleted.');
+    $field = entity_load('field_config', $field_id);
+    $this->assertTrue($field, 'The field was deleted.');
 
-    // A field with multiple instances.
-    $field_storage_2 = entity_load('field_storage_config', $field_id_2);
+    // A field storage with two fields.
+    $field_storage_2 = entity_load('field_storage_config', $field_storage_id_2);
     $this->assertTrue($field_storage_2, 'The second field was created.');
-    $this->assertTrue($instance->bundle, 'test_bundle', 'The second field instance was created on bundle test_bundle.');
-    $this->assertTrue($instance->bundle, 'test_bundle_2', 'The second field instance was created on bundle test_bundle_2.');
+    $this->assertTrue($field->bundle, 'test_bundle', 'The second field was created on bundle test_bundle.');
+    $this->assertTrue($field->bundle, 'test_bundle_2', 'The second field was created on bundle test_bundle_2.');
 
-    // Tests field instances.
-    $ids = \Drupal::entityQuery('field_instance_config')
+    // Tests fields.
+    $ids = \Drupal::entityQuery('field_config')
       ->condition('entity_type', 'entity_test')
       ->condition('bundle', 'entity_test')
       ->execute();
     $this->assertEqual(count($ids), 2);
     $this->assertTrue(isset($ids['entity_test.entity_test.field_test_import']));
     $this->assertTrue(isset($ids['entity_test.entity_test.field_test_import_2']));
-    $ids = \Drupal::entityQuery('field_instance_config')
+    $ids = \Drupal::entityQuery('field_config')
       ->condition('entity_type', 'entity_test')
       ->condition('bundle', 'test_bundle')
       ->execute();
@@ -69,24 +69,24 @@ function testImportCreateDefault() {
   }
 
   /**
-   * Tests creating fields and instances during config import.
+   * Tests creating field storages and fields during config import.
    */
   function testImportCreate() {
-    // One field with one field instance.
+    // A field storage with one single field.
     $field_name = 'field_test_import_staging';
-    $field_id = "entity_test.$field_name";
-    $instance_id = "entity_test.entity_test.$field_name";
-    $field_storage_config_name = "field.storage.$field_id";
-    $instance_config_name = "field.instance.$instance_id";
+    $field_storage_id = "entity_test.$field_name";
+    $field_id = "entity_test.entity_test.$field_name";
+    $field_storage_config_name = "field.storage.$field_storage_id";
+    $field_config_name = "field.field.$field_id";
 
-    // One field with two field instances.
+    // A field storage with two fields.
     $field_name_2 = 'field_test_import_staging_2';
-    $field_id_2 = "entity_test.$field_name_2";
-    $instance_id_2a = "entity_test.test_bundle.$field_name_2";
-    $instance_id_2b = "entity_test.test_bundle_2.$field_name_2";
-    $field_storage_config_name_2 = "field.storage.$field_id_2";
-    $instance_config_name_2a = "field.instance.$instance_id_2a";
-    $instance_config_name_2b = "field.instance.$instance_id_2b";
+    $field_storage_id_2 = "entity_test.$field_name_2";
+    $field_id_2a = "entity_test.test_bundle.$field_name_2";
+    $field_id_2b = "entity_test.test_bundle_2.$field_name_2";
+    $field_storage_config_name_2 = "field.storage.$field_storage_id_2";
+    $field_config_name_2a = "field.field.$field_id_2a";
+    $field_config_name_2b = "field.field.$field_id_2b";
 
     $active = $this->container->get('config.storage');
     $staging = $this->container->get('config.storage.staging');
@@ -96,25 +96,25 @@ function testImportCreate() {
     $src_dir = drupal_get_path('module', 'field_test_config') . '/staging';
     $target_dir = $this->configDirectories[CONFIG_STAGING_DIRECTORY];
     $this->assertTrue(file_unmanaged_copy("$src_dir/$field_storage_config_name.yml", "$target_dir/$field_storage_config_name.yml"));
-    $this->assertTrue(file_unmanaged_copy("$src_dir/$instance_config_name.yml", "$target_dir/$instance_config_name.yml"));
+    $this->assertTrue(file_unmanaged_copy("$src_dir/$field_config_name.yml", "$target_dir/$field_config_name.yml"));
     $this->assertTrue(file_unmanaged_copy("$src_dir/$field_storage_config_name_2.yml", "$target_dir/$field_storage_config_name_2.yml"));
-    $this->assertTrue(file_unmanaged_copy("$src_dir/$instance_config_name_2a.yml", "$target_dir/$instance_config_name_2a.yml"));
-    $this->assertTrue(file_unmanaged_copy("$src_dir/$instance_config_name_2b.yml", "$target_dir/$instance_config_name_2b.yml"));
+    $this->assertTrue(file_unmanaged_copy("$src_dir/$field_config_name_2a.yml", "$target_dir/$field_config_name_2a.yml"));
+    $this->assertTrue(file_unmanaged_copy("$src_dir/$field_config_name_2b.yml", "$target_dir/$field_config_name_2b.yml"));
 
     // Import the content of the staging directory.
     $this->configImporter()->import();
 
-    // Check that the field and instance were created.
-    $field_storage = entity_load('field_storage_config', $field_id);
-    $this->assertTrue($field_storage, 'Test import field from staging exists');
-    $instance = entity_load('field_instance_config', $instance_id);
-    $this->assertTrue($instance, 'Test import field instance from staging exists');
-    $field_storage = entity_load('field_storage_config', $field_id_2);
-    $this->assertTrue($field_storage, 'Test import field 2 from staging exists');
-    $instance = entity_load('field_instance_config', $instance_id_2a);
-    $this->assertTrue($instance, 'Test import field instance 2a from staging exists');
-    $instance = entity_load('field_instance_config', $instance_id_2b);
-    $this->assertTrue($instance, 'Test import field instance 2b from staging exists');
+    // Check that the field and storage were created.
+    $field_storage = entity_load('field_storage_config', $field_storage_id);
+    $this->assertTrue($field_storage, 'Test import storage field from staging exists');
+    $field = entity_load('field_config', $field_id);
+    $this->assertTrue($field, 'Test import field  from staging exists');
+    $field_storage = entity_load('field_storage_config', $field_storage_id_2);
+    $this->assertTrue($field_storage, 'Test import storage field 2 from staging exists');
+    $field = entity_load('field_config', $field_id_2a);
+    $this->assertTrue($field, 'Test import field 2a from staging exists');
+    $field = entity_load('field_config', $field_id_2b);
+    $this->assertTrue($field, 'Test import field 2b from staging exists');
   }
 }
 
diff --git a/core/modules/field/src/Tests/FieldImportDeleteTest.php b/core/modules/field/src/Tests/FieldImportDeleteTest.php
index 4b077d3..5019e49 100644
--- a/core/modules/field/src/Tests/FieldImportDeleteTest.php
+++ b/core/modules/field/src/Tests/FieldImportDeleteTest.php
@@ -10,7 +10,7 @@
 use Drupal\Component\Utility\String;
 
 /**
- * Delete field and instances during config delete method invocation.
+ * Delete field storages and fields during config delete method invocation.
  *
  * @group field
  */
@@ -24,29 +24,29 @@ class FieldImportDeleteTest extends FieldUnitTestBase {
   public static $modules = array('field_test_config');
 
   /**
-   * Tests deleting fields and instances as part of config import.
+   * Tests deleting field storages and fields as part of config import.
    */
   public function testImportDelete() {
     // At this point there are 5 field configuration objects in the active
     // storage.
     // - field.storage.entity_test.field_test_import
     // - field.storage.entity_test.field_test_import_2
-    // - field.instance.entity_test.entity_test.field_test_import
-    // - field.instance.entity_test.entity_test.field_test_import_2
-    // - field.instance.entity_test.test_bundle.field_test_import_2
+    // - field.field.entity_test.entity_test.field_test_import
+    // - field.field.entity_test.entity_test.field_test_import_2
+    // - field.field.entity_test.test_bundle.field_test_import_2
 
     $field_name = 'field_test_import';
     $field_storage_id = "entity_test.$field_name";
     $field_name_2 = 'field_test_import_2';
     $field_storage_id_2 = "entity_test.$field_name_2";
-    $instance_id = "entity_test.entity_test.$field_name";
-    $instance_id_2a = "entity_test.entity_test.$field_name_2";
-    $instance_id_2b = "entity_test.test_bundle.$field_name_2";
+    $field_id = "entity_test.entity_test.$field_name";
+    $field_id_2a = "entity_test.entity_test.$field_name_2";
+    $field_id_2b = "entity_test.test_bundle.$field_name_2";
     $field_storage_config_name = "field.storage.$field_storage_id";
     $field_storage_config_name_2 = "field.storage.$field_storage_id_2";
-    $instance_config_name = "field.instance.$instance_id";
-    $instance_config_name_2a = "field.instance.$instance_id_2a";
-    $instance_config_name_2b = "field.instance.$instance_id_2b";
+    $field_config_name = "field.field.$field_id";
+    $field_config_name_2a = "field.field.$field_id_2a";
+    $field_config_name_2b = "field.field.$field_id_2b";
 
     // Create a second bundle for the 'Entity test' entity type.
     entity_test_create_bundle('test_bundle');
@@ -61,37 +61,37 @@ public function testImportDelete() {
     $active = $this->container->get('config.storage');
     $staging = $this->container->get('config.storage.staging');
     $this->copyConfig($active, $staging);
-    $this->assertTrue($staging->delete($field_storage_config_name), String::format('Deleted field: !field', array('!field' => $field_storage_config_name)));
-    $this->assertTrue($staging->delete($field_storage_config_name_2), String::format('Deleted field: !field', array('!field' => $field_storage_config_name_2)));
-    $this->assertTrue($staging->delete($instance_config_name), String::format('Deleted field instance: !field_instance', array('!field_instance' => $instance_config_name)));
-    $this->assertTrue($staging->delete($instance_config_name_2a), String::format('Deleted field instance: !field_instance', array('!field_instance' => $instance_config_name_2a)));
-    $this->assertTrue($staging->delete($instance_config_name_2b), String::format('Deleted field instance: !field_instance', array('!field_instance' => $instance_config_name_2b)));
+    $this->assertTrue($staging->delete($field_storage_config_name), String::format('Deleted field storage: !field_storage', array('!field_storage' => $field_storage_config_name)));
+    $this->assertTrue($staging->delete($field_storage_config_name_2), String::format('Deleted field storage: !field_storage', array('!field_storage' => $field_storage_config_name_2)));
+    $this->assertTrue($staging->delete($field_config_name), String::format('Deleted field: !field', array('!field' => $field_config_name)));
+    $this->assertTrue($staging->delete($field_config_name_2a), String::format('Deleted field: !field', array('!field' => $field_config_name_2a)));
+    $this->assertTrue($staging->delete($field_config_name_2b), String::format('Deleted field: !field', array('!field' => $field_config_name_2b)));
 
     $deletes = $this->configImporter()->getUnprocessedConfiguration('delete');
-    $this->assertEqual(count($deletes), 5, 'Importing configuration will delete 3 field instances and 2 fields.');
+    $this->assertEqual(count($deletes), 5, 'Importing configuration will delete 3 fields and 2 field storages.');
 
     // Import the content of the staging directory.
     $this->configImporter()->import();
 
-    // Check that the fields and instances are gone.
+    // Check that the field storages and fields are gone.
     $field_storage = entity_load('field_storage_config', $field_storage_id, TRUE);
-    $this->assertFalse($field_storage, 'The field was deleted.');
+    $this->assertFalse($field_storage, 'The field storage was deleted.');
     $field_storage_2 = entity_load('field_storage_config', $field_storage_id_2, TRUE);
-    $this->assertFalse($field_storage_2, 'The second field was deleted.');
-    $instance = entity_load('field_instance_config', $instance_id, TRUE);
-    $this->assertFalse($instance, 'The field instance was deleted.');
-    $instance_2a = entity_load('field_instance_config', $instance_id_2a, TRUE);
-    $this->assertFalse($instance_2a, 'The second field instance on test bundle was deleted.');
-    $instance_2b = entity_load('field_instance_config', $instance_id_2b, TRUE);
-    $this->assertFalse($instance_2b, 'The second field instance on test bundle 2 was deleted.');
+    $this->assertFalse($field_storage_2, 'The second field storage was deleted.');
+    $field = entity_load('field_config', $field_id, TRUE);
+    $this->assertFalse($field, 'The field was deleted.');
+    $field_2a = entity_load('field_config', $field_id_2a, TRUE);
+    $this->assertFalse($field_2a, 'The second field on test bundle was deleted.');
+    $field_2b = entity_load('field_config', $field_id_2b, TRUE);
+    $this->assertFalse($field_2b, 'The second field on test bundle 2 was deleted.');
 
     // Check that all config files are gone.
     $active = $this->container->get('config.storage');
     $this->assertIdentical($active->listAll($field_storage_config_name), array());
     $this->assertIdentical($active->listAll($field_storage_config_name_2), array());
-    $this->assertIdentical($active->listAll($instance_config_name), array());
-    $this->assertIdentical($active->listAll($instance_config_name_2a), array());
-    $this->assertIdentical($active->listAll($instance_config_name_2b), array());
+    $this->assertIdentical($active->listAll($field_config_name), array());
+    $this->assertIdentical($active->listAll($field_config_name_2a), array());
+    $this->assertIdentical($active->listAll($field_config_name_2b), array());
 
     // Check that the storage definition is preserved in state.
     $deleted_storages = \Drupal::state()->get('field.storage.deleted') ?: array();
diff --git a/core/modules/field/src/Tests/FieldImportDeleteUninstallTest.php b/core/modules/field/src/Tests/FieldImportDeleteUninstallTest.php
index a02c3d0..975a6cb 100644
--- a/core/modules/field/src/Tests/FieldImportDeleteUninstallTest.php
+++ b/core/modules/field/src/Tests/FieldImportDeleteUninstallTest.php
@@ -8,8 +8,8 @@
 namespace Drupal\field\Tests;
 
 /**
- * Delete field and instances during config synchronization and uninstall module
- * that provides the field type.
+ * Delete field storages and fields during config synchronization and uninstall
+ * module that provides the field type.
  *
  * @group field
  * @see \Drupal\field\ConfigImporterFieldPurger
@@ -34,7 +34,7 @@ protected function setUp() {
   }
 
   /**
-   * Tests deleting fields and instances as part of config import.
+   * Tests deleting field storages and fields as part of config import.
    */
   public function testImportDeleteUninstall() {
     // Create a field to delete to prove that
@@ -46,19 +46,19 @@ public function testImportDeleteUninstall() {
       'type' => 'integer',
     ));
     $unrelated_field_storage->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_storage' => $unrelated_field_storage,
       'bundle' => 'entity_test',
     ))->save();
 
-    // Create a telephone field and instance for validation.
+    // Create a telephone field for validation.
     $field_storage = entity_create('field_storage_config', array(
       'name' => 'field_test',
       'entity_type' => 'entity_test',
       'type' => 'telephone',
     ));
     $field_storage->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'entity_test',
     ))->save();
@@ -92,7 +92,7 @@ public function testImportDeleteUninstall() {
 
     // Stage the field deletion
     $staging->delete('field.storage.entity_test.field_test');
-    $staging->delete('field.instance.entity_test.entity_test.field_test');
+    $staging->delete('field.field.entity_test.entity_test.field_test');
 
     $steps = $this->configImporter()->initialize();
     $this->assertIdentical($steps[0], array('\Drupal\field\ConfigImporterFieldPurger', 'process'), 'The additional process configuration synchronization step has been added.');
@@ -109,10 +109,11 @@ public function testImportDeleteUninstall() {
   }
 
   /**
-   * Tests purging already deleted fields and instances during a config import.
+   * Tests purging already deleted field storages and fields during a config
+   * import.
    */
   public function testImportAlreadyDeletedUninstall() {
-    // Create a telephone field and instance for validation.
+    // Create a telephone field for validation.
     $field_storage = entity_create('field_storage_config', array(
       'name' => 'field_test',
       'entity_type' => 'entity_test',
@@ -120,7 +121,7 @@ public function testImportAlreadyDeletedUninstall() {
     ));
     $field_storage->save();
     $field_storage_uuid = $field_storage->uuid();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'entity_test',
     ))->save();
diff --git a/core/modules/field/src/Tests/FieldImportDeleteUninstallUiTest.php b/core/modules/field/src/Tests/FieldImportDeleteUninstallUiTest.php
index 67dc92d..61091ad 100644
--- a/core/modules/field/src/Tests/FieldImportDeleteUninstallUiTest.php
+++ b/core/modules/field/src/Tests/FieldImportDeleteUninstallUiTest.php
@@ -8,8 +8,8 @@
 namespace Drupal\field\Tests;
 
 /**
- * Delete field and instances during config synchronization and uninstall module
- * that provides the field type through the UI.
+ * Delete field storages and fields during config synchronization and uninstall
+ * module that provides the field type through the UI.
  *
  * @group field
  * @see \Drupal\field\ConfigImporterFieldPurger
@@ -33,29 +33,29 @@ protected function setUp() {
   }
 
   /**
-   * Tests deleting fields and instances as part of config import.
+   * Tests deleting field storages and fields as part of config import.
    */
   public function testImportDeleteUninstall() {
-    // Create a telephone field and instance.
+    // Create a telephone field.
     $field_storage = entity_create('field_storage_config', array(
       'name' => 'field_tel',
       'entity_type' => 'entity_test',
       'type' => 'telephone',
     ));
     $field_storage->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'entity_test',
     ))->save();
 
-    // Create a text field and instance.
+    // Create a text field.
     $text_field_storage = entity_create('field_storage_config', array(
       'name' => 'field_text',
       'entity_type' => 'entity_test',
       'type' => 'text',
     ));
     $text_field_storage->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_storage' => $text_field_storage,
       'bundle' => 'entity_test',
     ))->save();
@@ -90,7 +90,7 @@ public function testImportDeleteUninstall() {
 
     // Stage the field deletion
     $staging->delete('field.storage.entity_test.field_tel');
-    $staging->delete('field.instance.entity_test.entity_test.field_tel');
+    $staging->delete('field.field.entity_test.entity_test.field_tel');
     $this->drupalGet('admin/config/development/configuration');
     // Test that the message for one field being purged during a configuration
     // synchronization is correct.
diff --git a/core/modules/field/src/Tests/FieldInstanceCrudTest.php b/core/modules/field/src/Tests/FieldInstanceCrudTest.php
deleted file mode 100644
index a59917a..0000000
--- a/core/modules/field/src/Tests/FieldInstanceCrudTest.php
+++ /dev/null
@@ -1,222 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\field\Tests\FieldInstanceCrudTest.
- */
-
-namespace Drupal\field\Tests;
-
-use Drupal\Core\Entity\EntityStorageException;
-use Drupal\Core\Field\FieldException;
-use Drupal\field\Entity\FieldStorageConfig;
-use Drupal\field\Entity\FieldInstanceConfig;
-
-/**
- * Create field entities by attaching fields to entities.
- *
- * @group field
- */
-class FieldInstanceCrudTest extends FieldUnitTestBase {
-
-  /**
-   * The field storage entity.
-   *
-   * @var \Drupal\field\Entity\FieldStorageConfig
-   */
-  protected $fieldStorage;
-
-  /**
-   * The field entity definition.
-   *
-   * @var array
-   */
-  protected $fieldStorageDefinition;
-
-  /**
-   * The field instance entity definition.
-   *
-   * @var array
-   */
-  protected $instanceDefinition;
-
-  protected function setUp() {
-    parent::setUp();
-
-    $this->fieldStorageDefinition = array(
-      'name' => drupal_strtolower($this->randomMachineName()),
-      'entity_type' => 'entity_test',
-      'type' => 'test_field',
-    );
-    $this->fieldStorage = entity_create('field_storage_config', $this->fieldStorageDefinition);
-    $this->fieldStorage->save();
-    $this->instanceDefinition = array(
-      'field_name' => $this->fieldStorage->getName(),
-      'entity_type' => 'entity_test',
-      'bundle' => 'entity_test',
-    );
-  }
-
-  // TODO : test creation with
-  // - a full fledged $instance structure, check that all the values are there
-  // - a minimal $instance structure, check all default values are set
-  // defer actual $instance comparison to a helper function, used for the two cases above,
-  // and for testUpdateFieldInstance
-
-  /**
-   * Test the creation of a field instance.
-   */
-  function testCreateFieldInstance() {
-    $instance = entity_create('field_instance_config', $this->instanceDefinition);
-    $instance->save();
-
-    // Read the configuration. Check against raw configuration data rather than
-    // the loaded ConfigEntity, to be sure we check that the defaults are
-    // applied on write.
-    $config = \Drupal::config('field.instance.' . $instance->id())->get();
-    $field_type_manager = \Drupal::service('plugin.manager.field.field_type');
-
-    // Check that default values are set.
-    $this->assertEqual($config['required'], FALSE, 'Required defaults to false.');
-    $this->assertIdentical($config['label'], $this->instanceDefinition['field_name'], 'Label defaults to field name.');
-    $this->assertIdentical($config['description'], '', 'Description defaults to empty string.');
-
-    // Check that default settings are set.
-    $this->assertEqual($config['settings'], $field_type_manager->getDefaultInstanceSettings($this->fieldStorageDefinition['type']) , 'Default instance settings have been written.');
-
-    // Check that the denormalized 'field_type' was properly written.
-    $this->assertEqual($config['field_type'], $this->fieldStorageDefinition['type']);
-
-    // Guarantee that the field/bundle combination is unique.
-    try {
-      entity_create('field_instance_config', $this->instanceDefinition)->save();
-      $this->fail(t('Cannot create two instances with the same field / bundle combination.'));
-    }
-    catch (EntityStorageException $e) {
-      $this->pass(t('Cannot create two instances with the same field / bundle combination.'));
-    }
-
-    // Check that the specified field exists.
-    try {
-      $this->instanceDefinition['field_name'] = $this->randomMachineName();
-      entity_create('field_instance_config', $this->instanceDefinition)->save();
-      $this->fail(t('Cannot create an instance of a non-existing field.'));
-    }
-    catch (FieldException $e) {
-      $this->pass(t('Cannot create an instance of a non-existing field.'));
-    }
-
-    // TODO: test other failures.
-  }
-
-  /**
-   * Test reading back an instance definition.
-   */
-  function testReadFieldInstance() {
-    entity_create('field_instance_config', $this->instanceDefinition)->save();
-
-    // Read the instance back.
-    $instance = entity_load('field_instance_config', 'entity_test.' . $this->instanceDefinition['bundle'] . '.' . $this->instanceDefinition['field_name']);
-    $this->assertTrue($this->instanceDefinition['field_name'] == $instance->getName(), 'The field was properly read.');
-    $this->assertTrue($this->instanceDefinition['entity_type'] == $instance->entity_type, 'The field was properly read.');
-    $this->assertTrue($this->instanceDefinition['bundle'] == $instance->bundle, 'The field was properly read.');
-  }
-
-  /**
-   * Test the update of a field instance.
-   */
-  function testUpdateFieldInstance() {
-    entity_create('field_instance_config', $this->instanceDefinition)->save();
-
-    // Check that basic changes are saved.
-    $instance = entity_load('field_instance_config', 'entity_test.' . $this->instanceDefinition['bundle'] . '.' . $this->instanceDefinition['field_name']);
-    $instance->required = !$instance->isRequired();
-    $instance->label = $this->randomMachineName();
-    $instance->description = $this->randomMachineName();
-    $instance->settings['test_instance_setting'] = $this->randomMachineName();
-    $instance->save();
-
-    $instance_new = entity_load('field_instance_config', 'entity_test.' . $this->instanceDefinition['bundle'] . '.' . $this->instanceDefinition['field_name']);
-    $this->assertEqual($instance->isRequired(), $instance_new->isRequired(), '"required" change is saved');
-    $this->assertEqual($instance->getLabel(), $instance_new->getLabel(), '"label" change is saved');
-    $this->assertEqual($instance->getDescription(), $instance_new->getDescription(), '"description" change is saved');
-
-    // TODO: test failures.
-  }
-
-  /**
-   * Test the deletion of a field instance.
-   */
-  function testDeleteFieldInstance() {
-    // TODO: Test deletion of the data stored in the field also.
-    // Need to check that data for a 'deleted' field / instance doesn't get loaded
-    // Need to check data marked deleted is cleaned on cron (not implemented yet...)
-
-    // Create two instances for the same field so we can test that only one
-    // is deleted.
-    entity_create('field_instance_config', $this->instanceDefinition)->save();
-    $another_instance_definition = $this->instanceDefinition;
-    $another_instance_definition['bundle'] .= '_another_bundle';
-    entity_test_create_bundle($another_instance_definition['bundle']);
-    entity_create('field_instance_config', $another_instance_definition)->save();
-
-    // Test that the first instance is not deleted, and then delete it.
-    $instance = current(entity_load_multiple_by_properties('field_instance_config', array('entity_type' => 'entity_test', 'field_name' => $this->instanceDefinition['field_name'], 'bundle' => $this->instanceDefinition['bundle'], 'include_deleted' => TRUE)));
-    $this->assertTrue(!empty($instance) && empty($instance->deleted), 'A new field instance is not marked for deletion.');
-    $instance->delete();
-
-    // Make sure the instance is marked as deleted when the instance is
-    // specifically loaded.
-    $instance = current(entity_load_multiple_by_properties('field_instance_config', array('entity_type' => 'entity_test', 'field_name' => $this->instanceDefinition['field_name'], 'bundle' => $this->instanceDefinition['bundle'], 'include_deleted' => TRUE)));
-    $this->assertTrue(!empty($instance->deleted), 'A deleted field instance is marked for deletion.');
-
-    // Try to load the instance normally and make sure it does not show up.
-    $instance = entity_load('field_instance_config', 'entity_test.' . '.' . $this->instanceDefinition['bundle'] . '.' . $this->instanceDefinition['field_name']);
-    $this->assertTrue(empty($instance), 'A deleted field instance is not loaded by default.');
-
-    // Make sure the other field instance is not deleted.
-    $another_instance = entity_load('field_instance_config', 'entity_test.' . $another_instance_definition['bundle'] . '.' . $another_instance_definition['field_name']);
-    $this->assertTrue(!empty($another_instance) && empty($another_instance->deleted), 'A non-deleted field instance is not marked for deletion.');
-  }
-
-  /**
-   * Tests the cross deletion behavior between fields and instances.
-   */
-  function testDeleteFieldInstanceCrossDeletion() {
-    $instance_definition_2 = $this->instanceDefinition;
-    $instance_definition_2['bundle'] .= '_another_bundle';
-    entity_test_create_bundle($instance_definition_2['bundle']);
-
-    // Check that deletion of a field deletes its instances.
-    $field_storage = $this->fieldStorage;
-    entity_create('field_instance_config', $this->instanceDefinition)->save();
-    entity_create('field_instance_config', $instance_definition_2)->save();
-    $field_storage->delete();
-    $this->assertFalse(FieldInstanceConfig::loadByName('entity_test', $this->instanceDefinition['bundle'], $field_storage->name));
-    $this->assertFalse(FieldInstanceConfig::loadByName('entity_test', $instance_definition_2['bundle'], $field_storage->name));
-
-    // Chack that deletion of the last instance deletes the field.
-    $field_storage = entity_create('field_storage_config', $this->fieldStorageDefinition);
-    $field_storage->save();
-    $instance = entity_create('field_instance_config', $this->instanceDefinition);
-    $instance->save();
-    $instance_2 = entity_create('field_instance_config', $instance_definition_2);
-    $instance_2->save();
-    $instance->delete();
-    $this->assertTrue(FieldStorageConfig::loadByName('entity_test', $field_storage->name));
-    $instance_2->delete();
-    $this->assertFalse(FieldStorageConfig::loadByName('entity_test', $field_storage->name));
-
-    // Check that deletion of all instances of the same field simultaneously
-    // deletes the field.
-    $field_storage = entity_create('field_storage_config', $this->fieldStorageDefinition);
-    $field_storage->save();
-    $instance = entity_create('field_instance_config', $this->instanceDefinition);
-    $instance->save();
-    $instance_2 = entity_create('field_instance_config', $instance_definition_2);
-    $instance_2->save();
-    $this->container->get('entity.manager')->getStorage('field_instance_config')->delete(array($instance, $instance_2));
-    $this->assertFalse(FieldStorageConfig::loadByName('entity_test', $field_storage->name));
-  }
-
-}
diff --git a/core/modules/field/src/Tests/FieldTypePluginManagerTest.php b/core/modules/field/src/Tests/FieldTypePluginManagerTest.php
index f079d3e..ea12c40 100644
--- a/core/modules/field/src/Tests/FieldTypePluginManagerTest.php
+++ b/core/modules/field/src/Tests/FieldTypePluginManagerTest.php
@@ -21,8 +21,8 @@ function testDefaultSettings() {
     $field_type_manager = \Drupal::service('plugin.manager.field.field_type');
     foreach (array('test_field', 'shape', 'hidden_test_field') as $type) {
       $definition = $field_type_manager->getDefinition($type);
-      $this->assertIdentical($field_type_manager->getDefaultSettings($type), $definition['class']::defaultSettings(), format_string("field settings service returns %type's field settings", array('%type' => $type)));
-      $this->assertIdentical($field_type_manager->getDefaultInstanceSettings($type), $definition['class']::defaultInstanceSettings(), format_string("field instance settings service returns %type's field instance settings", array('%type' => $type)));
+      $this->assertIdentical($field_type_manager->getDefaultStorageSettings($type), $definition['class']::defaultStorageSettings(), format_string("%type storage settings were returned", array('%type' => $type)));
+      $this->assertIdentical($field_type_manager->getDefaultFieldSettings($type), $definition['class']::defaultFieldSettings(), format_string(" %type field settings were returned", array('%type' => $type)));
     }
   }
 
diff --git a/core/modules/field/src/Tests/FieldUnitTestBase.php b/core/modules/field/src/Tests/FieldUnitTestBase.php
index 66ba2a0..0b0fdd0 100644
--- a/core/modules/field/src/Tests/FieldUnitTestBase.php
+++ b/core/modules/field/src/Tests/FieldUnitTestBase.php
@@ -24,16 +24,16 @@
   public static $modules = array('user', 'entity', 'system', 'field', 'text', 'entity_test', 'field_test');
 
   /**
-   * Bag of created fields and instances.
+   * Bag of created field storages and fields.
    *
-   * Allows easy access to test field/instance names/IDs/objects via:
-   * - $this->fields->field_name[suffix]
-   * - $this->fields->field_storage[suffix]
-   * - $this->fields->field_storage_uuid[suffix]
-   * - $this->fields->instance[suffix]
-   * - $this->fields->instance_definition[suffix]
+   * Allows easy access to test field storage/field names/IDs/objects via:
+   * - $this->fieldTestData->field_name[suffix]
+   * - $this->fieldTestData->field_storage[suffix]
+   * - $this->fieldTestData->field_storage_uuid[suffix]
+   * - $this->fieldTestData->field[suffix]
+   * - $this->fieldTestData->field_definition[suffix]
    *
-   * @see \Drupal\field\Tests\FieldUnitTestBase::createFieldWithInstance()
+   * @see \Drupal\field\Tests\FieldUnitTestBase::createFieldWithStorage()
    *
    * @var \ArrayObject
    */
@@ -56,27 +56,27 @@ protected function setUp() {
   }
 
   /**
-   * Create a field and an instance of it.
+   * Create a field and an associated field storage.
    *
    * @param string $suffix
    *   (optional) A string that should only contain characters that are valid in
    *   PHP variable names as well.
    * @param string $entity_type
-   *   (optional) The entity type on which the instance should be created.
+   *   (optional) The entity type on which the field should be created.
    *   Defaults to "entity_test".
    * @param string $bundle
-   *   (optional) The entity type on which the instance should be created.
+   *   (optional) The entity type on which the field should be created.
    *   Defaults to the default bundle of the entity type.
    */
-  protected function createFieldWithInstance($suffix = '', $entity_type = 'entity_test', $bundle = NULL) {
+  protected function createFieldWithStorage($suffix = '', $entity_type = 'entity_test', $bundle = NULL) {
     if (empty($bundle)) {
       $bundle = $entity_type;
     }
     $field_name = 'field_name' . $suffix;
     $field_storage = 'field_storage' . $suffix;
     $field_storage_uuid = 'field_storage_uuid' . $suffix;
-    $instance = 'instance' . $suffix;
-    $instance_definition = 'instance_definition' . $suffix;
+    $field = 'field' . $suffix;
+    $field_definition = 'field_definition' . $suffix;
 
     $this->fieldTestData->$field_name = drupal_strtolower($this->randomMachineName() . '_field_name' . $suffix);
     $this->fieldTestData->$field_storage = entity_create('field_storage_config', array(
@@ -87,17 +87,17 @@ protected function createFieldWithInstance($suffix = '', $entity_type = 'entity_
     ));
     $this->fieldTestData->$field_storage->save();
     $this->fieldTestData->$field_storage_uuid = $this->fieldTestData->$field_storage->uuid();
-    $this->fieldTestData->$instance_definition = array(
+    $this->fieldTestData->$field_definition = array(
       'field_storage' => $this->fieldTestData->$field_storage,
       'bundle' => $bundle,
       'label' => $this->randomMachineName() . '_label',
       'description' => $this->randomMachineName() . '_description',
       'settings' => array(
-        'test_instance_setting' => $this->randomMachineName(),
+        'test_field_setting' => $this->randomMachineName(),
       ),
     );
-    $this->fieldTestData->$instance = entity_create('field_instance_config', $this->fieldTestData->$instance_definition);
-    $this->fieldTestData->$instance->save();
+    $this->fieldTestData->$field = entity_create('field_config', $this->fieldTestData->$field_definition);
+    $this->fieldTestData->$field->save();
 
     entity_get_form_display($entity_type, $bundle, 'default')
       ->setComponent($this->fieldTestData->$field_name, array(
diff --git a/core/modules/field/src/Tests/FieldValidationTest.php b/core/modules/field/src/Tests/FieldValidationTest.php
index 7795684..4454c23 100644
--- a/core/modules/field/src/Tests/FieldValidationTest.php
+++ b/core/modules/field/src/Tests/FieldValidationTest.php
@@ -7,8 +7,6 @@
 
 namespace Drupal\field\Tests;
 
-use Drupal\field\Tests\FieldUnitTestBase;
-
 /**
  * Tests field validation.
  *
@@ -34,11 +32,11 @@ class FieldValidationTest extends FieldUnitTestBase {
   protected function setUp() {
     parent::setUp();
 
-    // Create a field and instance of type 'test_field', on the 'entity_test'
+    // Create a field and storage of type 'test_field', on the 'entity_test'
     // entity type.
     $this->entityType = 'entity_test';
     $this->bundle = 'entity_test';
-    $this->createFieldWithInstance('', $this->entityType, $this->bundle);
+    $this->createFieldWithStorage('', $this->entityType, $this->bundle);
 
     // Create an 'entity_test' entity.
     $this->entity = entity_create($this->entityType, array(
@@ -63,7 +61,7 @@ function testCardinalityConstraint() {
     // Check that the expected constraint violations are reported.
     $this->assertEqual(count($violations), 1);
     $this->assertEqual($violations[0]->getPropertyPath(), '');
-    $this->assertEqual($violations[0]->getMessage(), t('%name: this field cannot hold more than @count values.', array('%name' => $this->fieldTestData->instance->getLabel(), '@count' => $cardinality)));
+    $this->assertEqual($violations[0]->getMessage(), t('%name: this field cannot hold more than @count values.', array('%name' => $this->fieldTestData->field->getLabel(), '@count' => $cardinality)));
   }
 
   /**
@@ -85,7 +83,7 @@ function testFieldConstraints() {
       }
       else {
         $value = -1;
-        $expected_violations[$delta . '.value'][] = t('%name does not accept the value -1.', array('%name' => $this->fieldTestData->instance->getLabel()));
+        $expected_violations[$delta . '.value'][] = t('%name does not accept the value -1.', array('%name' => $this->fieldTestData->field->getLabel()));
       }
       $entity->{$this->fieldTestData->field_name}->get($delta)->set('value', $value);
     }
diff --git a/core/modules/field/src/Tests/FormTest.php b/core/modules/field/src/Tests/FormTest.php
index bea7e14..ea0ad65 100644
--- a/core/modules/field/src/Tests/FormTest.php
+++ b/core/modules/field/src/Tests/FormTest.php
@@ -47,11 +47,11 @@ class FormTest extends FieldTestBase {
   protected $fieldStorageUnlimited;
 
   /**
-   * An array of values defining a field instance.
+   * An array of values defining a field.
    *
    * @var array
    */
-  protected $instance;
+  protected $field;
 
   protected function setUp() {
     parent::setUp();
@@ -77,14 +77,14 @@ protected function setUp() {
       'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
     );
 
-    $this->instance = array(
+    $this->field = array(
       'entity_type' => 'entity_test',
       'bundle' => 'entity_test',
       'label' => $this->randomMachineName() . '_label',
       'description' => '[site:name]_description',
       'weight' => mt_rand(0, 127),
       'settings' => array(
-        'test_instance_setting' => $this->randomMachineName(),
+        'test_field_setting' => $this->randomMachineName(),
       ),
     );
   }
@@ -92,10 +92,10 @@ protected function setUp() {
   function testFieldFormSingle() {
     $field_storage = $this->fieldStorageSingle;
     $field_name = $field_storage['name'];
-    $this->instance['field_name'] = $field_name;
+    $this->field['field_name'] = $field_name;
     entity_create('field_storage_config', $field_storage)->save();
-    entity_create('field_instance_config', $this->instance)->save();
-    entity_get_form_display($this->instance['entity_type'], $this->instance['bundle'], 'default')
+    entity_create('field_config', $this->field)->save();
+    entity_get_form_display($this->field['entity_type'], $this->field['bundle'], 'default')
       ->setComponent($field_name)
       ->save();
 
@@ -119,7 +119,7 @@ function testFieldFormSingle() {
       "{$field_name}[0][value]" => -1
     );
     $this->drupalPostForm(NULL, $edit, t('Save'));
-    $this->assertRaw(t('%name does not accept the value -1.', array('%name' => $this->instance['label'])), 'Field validation fails with invalid input.');
+    $this->assertRaw(t('%name does not accept the value -1.', array('%name' => $this->field['label'])), 'Field validation fails with invalid input.');
     // TODO : check that the correct field is flagged for error.
 
     // Create an entity
@@ -174,12 +174,12 @@ function testFieldFormSingle() {
   function testFieldFormDefaultValue() {
     $field_storage = $this->fieldStorageSingle;
     $field_name = $field_storage['name'];
-    $this->instance['field_name'] = $field_name;
+    $this->field['field_name'] = $field_name;
     $default = rand(1, 127);
-    $this->instance['default_value'] = array(array('value' => $default));
+    $this->field['default_value'] = array(array('value' => $default));
     entity_create('field_storage_config', $field_storage)->save();
-    entity_create('field_instance_config', $this->instance)->save();
-    entity_get_form_display($this->instance['entity_type'], $this->instance['bundle'], 'default')
+    entity_create('field_config', $this->field)->save();
+    entity_get_form_display($this->field['entity_type'], $this->field['bundle'], 'default')
       ->setComponent($field_name)
       ->save();
 
@@ -205,18 +205,18 @@ function testFieldFormDefaultValue() {
   function testFieldFormSingleRequired() {
     $field_storage = $this->fieldStorageSingle;
     $field_name = $field_storage['name'];
-    $this->instance['field_name'] = $field_name;
-    $this->instance['required'] = TRUE;
+    $this->field['field_name'] = $field_name;
+    $this->field['required'] = TRUE;
     entity_create('field_storage_config', $field_storage)->save();
-    entity_create('field_instance_config', $this->instance)->save();
-    entity_get_form_display($this->instance['entity_type'], $this->instance['bundle'], 'default')
+    entity_create('field_config', $this->field)->save();
+    entity_get_form_display($this->field['entity_type'], $this->field['bundle'], 'default')
       ->setComponent($field_name)
       ->save();
 
     // Submit with missing required value.
     $edit = array();
     $this->drupalPostForm('entity_test/add', $edit, t('Save'));
-    $this->assertRaw(t('!name field is required.', array('!name' => $this->instance['label'])), 'Required field with no value fails validation');
+    $this->assertRaw(t('!name field is required.', array('!name' => $this->field['label'])), 'Required field with no value fails validation');
 
     // Create an entity
     $value = mt_rand(1, 127);
@@ -240,7 +240,7 @@ function testFieldFormSingleRequired() {
       "{$field_name}[0][value]" => $value,
     );
     $this->drupalPostForm('entity_test/manage/' . $id, $edit, t('Save'));
-    $this->assertRaw(t('!name field is required.', array('!name' => $this->instance['label'])), 'Required field with no value fails validation');
+    $this->assertRaw(t('!name field is required.', array('!name' => $this->field['label'])), 'Required field with no value fails validation');
   }
 
 //  function testFieldFormMultiple() {
@@ -248,16 +248,16 @@ function testFieldFormSingleRequired() {
 //    $field_name = $this->field['field_name'];
 //    $this->instance['field_name'] = $field_name;
 //    entity_create('field_storage_config', $this->field)->save();
-//    entity_create('field_instance_config', $this->instance)->save();
+//    entity_create('field_config', $this->instance)->save();
 //  }
 
   function testFieldFormUnlimited() {
     $field_storage = $this->fieldStorageUnlimited;
     $field_name = $field_storage['name'];
-    $this->instance['field_name'] = $field_name;
+    $this->field['field_name'] = $field_name;
     entity_create('field_storage_config', $field_storage)->save();
-    entity_create('field_instance_config', $this->instance)->save();
-    entity_get_form_display($this->instance['entity_type'], $this->instance['bundle'], 'default')
+    entity_create('field_config', $this->field)->save();
+    entity_get_form_display($this->field['entity_type'], $this->field['bundle'], 'default')
       ->setComponent($field_name)
       ->save();
 
@@ -340,10 +340,10 @@ function testFieldFormMultivalueWithRequiredRadio() {
     // Create a multivalue test field.
     $field_storage = $this->fieldStorageUnlimited;
     $field_name = $field_storage['name'];
-    $this->instance['field_name'] = $field_name;
+    $this->field['field_name'] = $field_name;
     entity_create('field_storage_config', $field_storage)->save();
-    entity_create('field_instance_config', $this->instance)->save();
-    entity_get_form_display($this->instance['entity_type'], $this->instance['bundle'], 'default')
+    entity_create('field_config', $this->field)->save();
+    entity_get_form_display($this->field['entity_type'], $this->field['bundle'], 'default')
       ->setComponent($field_name)
       ->save();
 
@@ -356,15 +356,15 @@ function testFieldFormMultivalueWithRequiredRadio() {
         'allowed_values' => array('yes' => 'yes', 'no' => 'no'),
       ),
     ))->save();
-    $instance = array(
+    $field = array(
       'field_name' => 'required_radio_test',
       'entity_type' => 'entity_test',
       'bundle' => 'entity_test',
       'required' => TRUE,
     );
-    entity_create('field_instance_config', $instance)->save();
-    entity_get_form_display($instance['entity_type'], $instance['bundle'], 'default')
-      ->setComponent($instance['field_name'], array(
+    entity_create('field_config', $field)->save();
+    entity_get_form_display($field['entity_type'], $field['bundle'], 'default')
+      ->setComponent($field['field_name'], array(
         'type' => 'options_buttons',
       ))
       ->save();
@@ -387,10 +387,10 @@ function testFieldFormMultivalueWithRequiredRadio() {
   function testFieldFormJSAddMore() {
     $field_storage = $this->fieldStorageUnlimited;
     $field_name = $field_storage['name'];
-    $this->instance['field_name'] = $field_name;
+    $this->field['field_name'] = $field_name;
     entity_create('field_storage_config', $field_storage)->save();
-    entity_create('field_instance_config', $this->instance)->save();
-    entity_get_form_display($this->instance['entity_type'], $this->instance['bundle'], 'default')
+    entity_create('field_config', $this->field)->save();
+    entity_get_form_display($this->field['entity_type'], $this->field['bundle'], 'default')
       ->setComponent($field_name)
       ->save();
 
@@ -444,14 +444,14 @@ function testFieldFormJSAddMore() {
    * Tests widgets handling multiple values.
    */
   function testFieldFormMultipleWidget() {
-    // Create a field with fixed cardinality and an instance using a multiple
-    // widget.
+    // Create a field with fixed cardinality, configure the form to use a
+    // "multiple" widget.
     $field_storage = $this->fieldStorageMultiple;
     $field_name = $field_storage['name'];
-    $this->instance['field_name'] = $field_name;
+    $this->field['field_name'] = $field_name;
     entity_create('field_storage_config', $field_storage)->save();
-    entity_create('field_instance_config', $this->instance)->save();
-    entity_get_form_display($this->instance['entity_type'], $this->instance['bundle'], 'default')
+    entity_create('field_config', $this->field)->save();
+    entity_get_form_display($this->field['entity_type'], $this->field['bundle'], 'default')
       ->setComponent($field_name, array(
         'type' => 'test_field_widget_multiple',
       ))
@@ -496,12 +496,12 @@ function testFieldFormAccess() {
     $field_storage = $this->fieldStorageSingle;
     $field_storage['entity_type'] = $entity_type;
     $field_name = $field_storage['name'];
-    $instance = $this->instance;
-    $instance['field_name'] = $field_name;
-    $instance['entity_type'] = $entity_type;
-    $instance['bundle'] = $entity_type;
+    $field = $this->field;
+    $field['field_name'] = $field_name;
+    $field['entity_type'] = $entity_type;
+    $field['bundle'] = $entity_type;
     entity_create('field_storage_config', $field_storage)->save();
-    entity_create('field_instance_config', $instance)->save();
+    entity_create('field_config', $field)->save();
     entity_get_form_display($entity_type, $entity_type, 'default')
       ->setComponent($field_name)
       ->save();
@@ -514,15 +514,15 @@ function testFieldFormAccess() {
       'type' => 'test_field',
     );
     $field_name_no_access = $field_storage_no_access['name'];
-    $instance_no_access = array(
+    $field_no_access = array(
       'field_name' => $field_name_no_access,
       'entity_type' => $entity_type,
       'bundle' => $entity_type,
       'default_value' => array(0 => array('value' => 99)),
     );
     entity_create('field_storage_config', $field_storage_no_access)->save();
-    entity_create('field_instance_config', $instance_no_access)->save();
-    entity_get_form_display($instance_no_access['entity_type'], $instance_no_access['bundle'], 'default')
+    entity_create('field_config', $field_no_access)->save();
+    entity_get_form_display($field_no_access['entity_type'], $field_no_access['bundle'], 'default')
       ->setComponent($field_name_no_access)
       ->save();
 
@@ -585,13 +585,13 @@ function testHiddenField() {
     $field_storage = $this->fieldStorageSingle;
     $field_storage['entity_type'] = $entity_type;
     $field_name = $field_storage['name'];
-    $this->instance['field_name'] = $field_name;
-    $this->instance['default_value'] = array(0 => array('value' => 99));
-    $this->instance['entity_type'] = $entity_type;
-    $this->instance['bundle'] = $entity_type;
+    $this->field['field_name'] = $field_name;
+    $this->field['default_value'] = array(0 => array('value' => 99));
+    $this->field['entity_type'] = $entity_type;
+    $this->field['bundle'] = $entity_type;
     entity_create('field_storage_config', $field_storage)->save();
-    $this->instance = entity_create('field_instance_config', $this->instance);
-    $this->instance->save();
+    $this->field = entity_create('field_config', $this->field);
+    $this->field->save();
     // We explicitly do not assign a widget in a form display, so the field
     // stays hidden in forms.
 
@@ -608,12 +608,12 @@ function testHiddenField() {
     $entity = entity_load($entity_type, $id);
     $this->assertEqual($entity->{$field_name}->value, 99, 'Default value was saved');
 
-    // Update the instance to remove the default value and switch to the
-    // default widget.
-    $this->instance->default_value = NULL;
-    $this->instance->save();
-    entity_get_form_display($entity_type, $this->instance->bundle, 'default')
-      ->setComponent($this->instance->getName(), array(
+    // Update the field to remove the default value, and switch to the default
+    // widget.
+    $this->field->default_value = NULL;
+    $this->field->save();
+    entity_get_form_display($entity_type, $this->field->bundle, 'default')
+      ->setComponent($this->field->getName(), array(
         'type' => 'test_field_widget',
       ))
       ->save();
@@ -632,8 +632,8 @@ function testHiddenField() {
     $this->assertEqual($entity->{$field_name}->value, $value, 'Field value was updated');
 
     // Set the field back to hidden.
-    entity_get_form_display($entity_type, $this->instance->bundle, 'default')
-      ->removeComponent($this->instance->getName())
+    entity_get_form_display($entity_type, $this->field->bundle, 'default')
+      ->removeComponent($this->field->getName())
       ->save();
 
     // Create a new revision.
diff --git a/core/modules/field/src/Tests/NestedFormTest.php b/core/modules/field/src/Tests/NestedFormTest.php
index e1d6096..6f0605a 100644
--- a/core/modules/field/src/Tests/NestedFormTest.php
+++ b/core/modules/field/src/Tests/NestedFormTest.php
@@ -40,14 +40,14 @@ protected function setUp() {
       'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
     );
 
-    $this->instance = array(
+    $this->field = array(
       'entity_type' => 'entity_test',
       'bundle' => 'entity_test',
       'label' => $this->randomMachineName() . '_label',
       'description' => '[site:name]_description',
       'weight' => mt_rand(0, 127),
       'settings' => array(
-        'test_instance_setting' => $this->randomMachineName(),
+        'test_field_setting' => $this->randomMachineName(),
       ),
     );
   }
@@ -56,20 +56,20 @@ protected function setUp() {
    * Tests Field API form integration within a subform.
    */
   function testNestedFieldForm() {
-    // Add two instances on the 'entity_test'
+    // Add two fields on the 'entity_test'
     entity_create('field_storage_config', $this->fieldStorageSingle)->save();
     entity_create('field_storage_config', $this->fieldStorageUnlimited)->save();
-    $this->instance['field_name'] = 'field_single';
-    $this->instance['label'] = 'Single field';
-    entity_create('field_instance_config', $this->instance)->save();
-    entity_get_form_display($this->instance['entity_type'], $this->instance['bundle'], 'default')
-      ->setComponent($this->instance['field_name'])
+    $this->field['field_name'] = 'field_single';
+    $this->field['label'] = 'Single field';
+    entity_create('field_config', $this->field)->save();
+    entity_get_form_display($this->field['entity_type'], $this->field['bundle'], 'default')
+      ->setComponent($this->field['field_name'])
       ->save();
-    $this->instance['field_name'] = 'field_unlimited';
-    $this->instance['label'] = 'Unlimited field';
-    entity_create('field_instance_config', $this->instance)->save();
-    entity_get_form_display($this->instance['entity_type'], $this->instance['bundle'], 'default')
-      ->setComponent($this->instance['field_name'])
+    $this->field['field_name'] = 'field_unlimited';
+    $this->field['label'] = 'Unlimited field';
+    entity_create('field_config', $this->field)->save();
+    entity_get_form_display($this->field['entity_type'], $this->field['bundle'], 'default')
+      ->setComponent($this->field['field_name'])
       ->save();
 
     // Create two entities.
diff --git a/core/modules/field/src/Tests/Number/NumberFieldTest.php b/core/modules/field/src/Tests/Number/NumberFieldTest.php
index 82b69d2..2e5217c 100644
--- a/core/modules/field/src/Tests/Number/NumberFieldTest.php
+++ b/core/modules/field/src/Tests/Number/NumberFieldTest.php
@@ -51,7 +51,7 @@ function testNumberDecimalField() {
         'precision' => 8, 'scale' => 4, 'decimal_separator' => '.',
       )
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'bundle' => 'entity_test',
@@ -141,7 +141,7 @@ function testNumberIntegerField() {
       'type' => 'integer',
     ))->save();
 
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'bundle' => 'entity_test',
@@ -245,7 +245,7 @@ function testNumberFloatField() {
       'type' => 'float',
     ))->save();
 
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'bundle' => 'entity_test',
@@ -350,7 +350,7 @@ function testNumberFormatter() {
       'type' => 'integer',
     ))->save();
 
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => $float_field,
       'entity_type' => 'node',
       'bundle' => $type,
@@ -360,7 +360,7 @@ function testNumberFormatter() {
       ),
     ))->save();
 
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => $integer_field,
       'entity_type' => 'node',
       'bundle' => $type,
diff --git a/core/modules/field/src/Tests/Number/NumberItemTest.php b/core/modules/field/src/Tests/Number/NumberItemTest.php
index 4b66ad6..21fbe69 100644
--- a/core/modules/field/src/Tests/Number/NumberItemTest.php
+++ b/core/modules/field/src/Tests/Number/NumberItemTest.php
@@ -28,14 +28,14 @@ class NumberItemTest extends FieldUnitTestBase {
   protected function setUp() {
     parent::setUp();
 
-    // Create number fields and instances for validation.
+    // Create number field storages and fields for validation.
     foreach (array('integer', 'float', 'decimal') as $type) {
       entity_create('field_storage_config', array(
         'name' => 'field_' . $type,
         'entity_type' => 'entity_test',
         'type' => $type,
       ))->save();
-      entity_create('field_instance_config', array(
+      entity_create('field_config', array(
         'entity_type' => 'entity_test',
         'field_name' => 'field_' . $type,
         'bundle' => 'entity_test',
diff --git a/core/modules/field/src/Tests/ShapeItemTest.php b/core/modules/field/src/Tests/ShapeItemTest.php
index dc05d66..4b9671c 100644
--- a/core/modules/field/src/Tests/ShapeItemTest.php
+++ b/core/modules/field/src/Tests/ShapeItemTest.php
@@ -34,13 +34,13 @@ class ShapeItemTest extends FieldUnitTestBase {
   protected function setUp() {
     parent::setUp();
 
-    // Create an field field and instance for validation.
+    // Create a 'shape' field and storage for validation.
     entity_create('field_storage_config', array(
       'name' => $this->field_name,
       'entity_type' => 'entity_test',
       'type' => 'shape',
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => $this->field_name,
       'bundle' => 'entity_test',
diff --git a/core/modules/field/src/Tests/TestItemTest.php b/core/modules/field/src/Tests/TestItemTest.php
index e72b46b..a433c00 100644
--- a/core/modules/field/src/Tests/TestItemTest.php
+++ b/core/modules/field/src/Tests/TestItemTest.php
@@ -35,13 +35,13 @@ class TestItemTest extends FieldUnitTestBase {
   protected function setUp() {
     parent::setUp();
 
-    // Create an field field and instance for validation.
+    // Create a 'test_field' field and storage for validation.
     entity_create('field_storage_config', array(
       'name' => $this->field_name,
       'entity_type' => 'entity_test',
       'type' => 'test_field',
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => $this->field_name,
       'bundle' => 'entity_test',
diff --git a/core/modules/field/src/Tests/TranslationTest.php b/core/modules/field/src/Tests/TranslationTest.php
index 50c31aa..17caf02 100644
--- a/core/modules/field/src/Tests/TranslationTest.php
+++ b/core/modules/field/src/Tests/TranslationTest.php
@@ -43,6 +43,13 @@ class TranslationTest extends FieldUnitTestBase {
 
 
   /**
+   * An array defining the field storage to use in this test.
+   *
+   * @var array
+   */
+  protected $field_storage_definition;
+
+  /**
    * An array defining the field to use in this test.
    *
    * @var array
@@ -50,13 +57,6 @@ class TranslationTest extends FieldUnitTestBase {
   protected $field_definition;
 
   /**
-   * An array defining the field instance to use in this test.
-   *
-   * @var array
-   */
-  protected $instance_definition;
-
-  /**
    * The field storage to use in this test.
    *
    * @var \Drupal\field\Entity\FieldStorageConfig
@@ -64,11 +64,11 @@ class TranslationTest extends FieldUnitTestBase {
   protected $fieldStorage;
 
   /**
-   * The field instance to use in this test.
+   * The field to use in this test.
    *
-   * @var \Drupal\field\Entity\FieldInstanceConfig
+   * @var \Drupal\field\Entity\FieldConfig
    */
-  protected $instance;
+  protected $field;
 
   protected function setUp() {
     parent::setUp();
@@ -79,22 +79,22 @@ protected function setUp() {
 
     $this->entity_type = 'entity_test';
 
-    $this->field_definition = array(
+    $this->field_storage_definition = array(
       'name' => $this->field_name,
       'entity_type' => $this->entity_type,
       'type' => 'test_field',
       'cardinality' => 4,
       'translatable' => TRUE,
     );
-    $this->fieldStorage = entity_create('field_storage_config', $this->field_definition);
+    $this->fieldStorage = entity_create('field_storage_config', $this->field_storage_definition);
     $this->fieldStorage->save();
 
-    $this->instance_definition = array(
+    $this->field_definition = array(
       'field_storage' => $this->fieldStorage,
       'bundle' => 'entity_test',
     );
-    $this->instance = entity_create('field_instance_config', $this->instance_definition);
-    $this->instance->save();
+    $this->field = entity_create('field_config', $this->field_definition);
+    $this->field->save();
 
     for ($i = 0; $i < 3; ++$i) {
       $language = new Language(array(
@@ -117,7 +117,7 @@ function testTranslatableFieldSaveLoad() {
     // Prepare the field translations.
     $entity_type_id = 'entity_test';
     field_test_entity_info_translatable($entity_type_id, TRUE);
-    $entity = entity_create($entity_type_id, array('type' => $this->instance->bundle));
+    $entity = entity_create($entity_type_id, array('type' => $this->field->bundle));
     $field_translations = array();
     $available_langcodes = array_keys($this->container->get('language_manager')->getLanguages());
     $entity->langcode->value = reset($available_langcodes);
@@ -140,22 +140,22 @@ function testTranslatableFieldSaveLoad() {
 
     // Test default values.
     $field_name_default = drupal_strtolower($this->randomMachineName() . '_field_name');
-    $field_definition = $this->field_definition;
-    $field_definition['name'] = $field_name_default;
-    $field_storage = entity_create('field_storage_config', $field_definition);
+    $field_storage_definition = $this->field_storage_definition;
+    $field_storage_definition['name'] = $field_name_default;
+    $field_storage = entity_create('field_storage_config', $field_storage_definition);
     $field_storage->save();
 
-    $instance_definition = $this->instance_definition;
-    $instance_definition['field_storage'] = $field_storage;
-    $instance_definition['default_value'] = array(array('value' => rand(1, 127)));
-    $instance = entity_create('field_instance_config', $instance_definition);
-    $instance->save();
+    $field_definition = $this->field_definition;
+    $field_definition['field_storage'] = $field_storage;
+    $field_definition['default_value'] = array(array('value' => rand(1, 127)));
+    $field = entity_create('field_config', $field_definition);
+    $field->save();
 
     $translation_langcodes = array_slice($available_langcodes, 0, 2);
     asort($translation_langcodes);
     $translation_langcodes = array_values($translation_langcodes);
 
-    $values = array('type' => $instance->bundle, 'langcode' => $translation_langcodes[0]);
+    $values = array('type' => $field->bundle, 'langcode' => $translation_langcodes[0]);
     $entity = entity_create($entity_type_id, $values);
     foreach ($translation_langcodes as $langcode) {
       $values[$this->field_name][$langcode] = $this->_generateTestFieldValues($this->fieldStorage->getCardinality());
@@ -169,11 +169,11 @@ function testTranslatableFieldSaveLoad() {
     // @todo Test every translation once the Entity Translation API allows for
     //   multilingual defaults.
     $langcode = $entity->language()->id;
-    $this->assertEqual($entity->getTranslation($langcode)->{$field_name_default}->getValue(), $instance->default_value, format_string('Default value correctly populated for language %language.', array('%language' => $langcode)));
+    $this->assertEqual($entity->getTranslation($langcode)->{$field_name_default}->getValue(), $field->default_value, format_string('Default value correctly populated for language %language.', array('%language' => $langcode)));
 
     // Check that explicit empty values are not overridden with default values.
     foreach (array(NULL, array()) as $empty_items) {
-      $values = array('type' => $instance->bundle, 'langcode' => $translation_langcodes[0]);
+      $values = array('type' => $field->bundle, 'langcode' => $translation_langcodes[0]);
       $entity = entity_create($entity_type_id, $values);
       foreach ($translation_langcodes as $langcode) {
         $values[$this->field_name][$langcode] = $this->_generateTestFieldValues($this->fieldStorage->getCardinality());
diff --git a/core/modules/field/src/Tests/TranslationWebTest.php b/core/modules/field/src/Tests/TranslationWebTest.php
index 6646072..4a13e2e 100644
--- a/core/modules/field/src/Tests/TranslationWebTest.php
+++ b/core/modules/field/src/Tests/TranslationWebTest.php
@@ -45,33 +45,33 @@ class TranslationWebTest extends FieldTestBase {
   protected $fieldStorage;
 
   /**
-   * The field instance to use in this test.
+   * The field to use in this test.
    *
-   * @var \Drupal\field\Entity\FieldInstanceConfig
+   * @var \Drupal\field\Entity\FieldConfig
    */
-  protected $instance;
+  protected $field;
 
   protected function setUp() {
     parent::setUp();
 
     $this->field_name = drupal_strtolower($this->randomMachineName() . '_field_name');
 
-    $field = array(
+    $field_storage = array(
       'name' => $this->field_name,
       'entity_type' => $this->entity_type,
       'type' => 'test_field',
       'cardinality' => 4,
       'translatable' => TRUE,
     );
-    entity_create('field_storage_config', $field)->save();
+    entity_create('field_storage_config', $field_storage)->save();
     $this->fieldStorage = entity_load('field_storage_config', $this->entity_type . '.' . $this->field_name);
 
-    $instance = array(
+    $field = array(
       'field_storage' => $this->fieldStorage,
       'bundle' => $this->entity_type,
     );
-    entity_create('field_instance_config', $instance)->save();
-    $this->instance = entity_load('field_instance_config', $this->entity_type . '.' . $instance['bundle'] . '.' . $this->field_name);
+    entity_create('field_config', $field)->save();
+    $this->field = entity_load('field_config', $this->entity_type . '.' . $field['bundle'] . '.' . $this->field_name);
 
     entity_get_form_display($this->entity_type, $this->entity_type, 'default')
       ->setComponent($this->field_name)
diff --git a/core/modules/field/src/Tests/Views/ApiDataTest.php b/core/modules/field/src/Tests/Views/ApiDataTest.php
index 7631e29..b53c136 100644
--- a/core/modules/field/src/Tests/Views/ApiDataTest.php
+++ b/core/modules/field/src/Tests/Views/ApiDataTest.php
@@ -18,15 +18,15 @@ class ApiDataTest extends FieldTestBase {
   protected function setUp() {
     parent::setUp();
 
-    $field_names = $this->setUpFields(1);
+    $field_names = $this->setUpFieldStorages(1);
 
     // Attach the field to nodes only.
-    $instance = array(
+    $field = array(
       'field_name' => $field_names[0],
       'entity_type' => 'node',
       'bundle' => 'page',
     );
-    entity_create('field_instance_config', $instance)->save();
+    entity_create('field_config', $field)->save();
 
     // Now create some example nodes/users for the view result.
     for ($i = 0; $i < 5; $i++) {
diff --git a/core/modules/field/src/Tests/Views/FieldTestBase.php b/core/modules/field/src/Tests/Views/FieldTestBase.php
index 43222e0..9362ca6 100644
--- a/core/modules/field/src/Tests/Views/FieldTestBase.php
+++ b/core/modules/field/src/Tests/Views/FieldTestBase.php
@@ -42,12 +42,12 @@
   public $fieldStorages;
 
   /**
-   * Stores the instances of the fields. They have
-   * the same keys as the fields.
+   * Stores the fields of the field storage. They have the same keys as the
+   * field storages.
    *
    * @var array
    */
-  public $instances;
+  public $fields;
 
   protected function setUp() {
     parent::setUp();
@@ -61,7 +61,7 @@ protected function setUp() {
     ViewTestData::createTestViews(get_class($this), array('field_test_views'));
   }
 
-  function setUpFields($amount = 3) {
+  function setUpFieldStorages($amount = 3) {
     // Create three fields.
     $field_names = array();
     for ($i = 0; $i < $amount; $i++) {
@@ -76,13 +76,13 @@ function setUpFields($amount = 3) {
     return $field_names;
   }
 
-  function setUpInstances($bundle = 'page') {
+  function setUpFields($bundle = 'page') {
     foreach ($this->fieldStorages as $key => $field_storage) {
-      $this->instances[$key] = entity_create('field_instance_config', array(
+      $this->fields[$key] = entity_create('field_config', array(
         'field_storage' => $field_storage,
         'bundle' => $bundle,
       ));
-      $this->instances[$key]->save();
+      $this->fields[$key]->save();
     }
   }
 
diff --git a/core/modules/field/src/Tests/Views/FieldUITest.php b/core/modules/field/src/Tests/Views/FieldUITest.php
index c38aaee..022cb52 100644
--- a/core/modules/field/src/Tests/Views/FieldUITest.php
+++ b/core/modules/field/src/Tests/Views/FieldUITest.php
@@ -47,8 +47,8 @@ protected function setUp() {
     $this->account = $this->drupalCreateUser(array('administer views'));
     $this->drupalLogin($this->account);
 
+    $this->setUpFieldStorages();
     $this->setUpFields();
-    $this->setUpInstances();
   }
 
   /**
diff --git a/core/modules/field/src/Tests/Views/HandlerFieldFieldTest.php b/core/modules/field/src/Tests/Views/HandlerFieldFieldTest.php
index e575a02..8f7da9f 100644
--- a/core/modules/field/src/Tests/Views/HandlerFieldFieldTest.php
+++ b/core/modules/field/src/Tests/Views/HandlerFieldFieldTest.php
@@ -39,7 +39,7 @@ protected function setUp() {
     parent::setUp();
 
     // Setup basic fields.
-    $this->setUpFields(3);
+    $this->setUpFieldStorages(3);
 
     // Setup a field with cardinality > 1.
     $this->fieldStorages[3] = entity_create('field_storage_config', array(
@@ -58,7 +58,7 @@ protected function setUp() {
     ));
     $this->fieldStorages[4]->save();
 
-    $this->setUpInstances();
+    $this->setUpFields();
 
     // Create some nodes.
     $this->nodes = array();
diff --git a/core/modules/field/src/Tests/reEnableModuleFieldTest.php b/core/modules/field/src/Tests/reEnableModuleFieldTest.php
index dcbd20a..c7bdcf6 100644
--- a/core/modules/field/src/Tests/reEnableModuleFieldTest.php
+++ b/core/modules/field/src/Tests/reEnableModuleFieldTest.php
@@ -49,7 +49,7 @@ function testReEnabledField() {
       'type' => 'telephone',
     ));
     $field_storage->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'article',
       'label' => 'Telephone Number',
diff --git a/core/modules/field/tests/modules/field_test/field_test.module b/core/modules/field/tests/modules/field_test/field_test.module
index 499c883..e805c0f 100644
--- a/core/modules/field/tests/modules/field_test/field_test.module
+++ b/core/modules/field/tests/modules/field_test/field_test.module
@@ -128,7 +128,7 @@ function field_test_field_widget_form_alter(&$element, FormStateInterface $form_
       break;
   }
   // Set a message if this is for the form displayed to set default value for
-  // the field instance.
+  // the field.
   if ($context['default']) {
     drupal_set_message('From hook_field_widget_form_alter(): Default form is true.');
   }
diff --git a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldType/ShapeItem.php b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldType/ShapeItem.php
index 87a7f31..a090dba 100644
--- a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldType/ShapeItem.php
+++ b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldType/ShapeItem.php
@@ -27,10 +27,10 @@ class ShapeItem extends FieldItemBase {
   /**
    * {@inheritdoc}
    */
-  public static function defaultSettings() {
+  public static function defaultStorageSettings() {
     return array(
       'foreign_key_name' => 'shape',
-    ) + parent::defaultSettings();
+    ) + parent::defaultStorageSettings();
   }
 
   /**
diff --git a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldType/TestItem.php b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldType/TestItem.php
index 5234964..ba79e7d 100644
--- a/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldType/TestItem.php
+++ b/core/modules/field/tests/modules/field_test/src/Plugin/Field/FieldType/TestItem.php
@@ -28,22 +28,22 @@ class TestItem extends FieldItemBase {
   /**
    * {@inheritdoc}
    */
-  public static function defaultSettings() {
+  public static function defaultStorageSettings() {
     return array(
       'test_field_storage_setting' => 'dummy test string',
       'changeable' => 'a changeable field storage setting',
       'unchangeable' => 'an unchangeable field storage setting',
-    ) + parent::defaultSettings();
+    ) + parent::defaultStorageSettings();
   }
 
   /**
    * {@inheritdoc}
    */
-  public static function defaultInstanceSettings() {
+  public static function defaultFieldSettings() {
     return array(
-      'test_instance_setting' => 'dummy test string',
+      'test_field_setting' => 'dummy test string',
       'test_cached_data' => FALSE,
-    ) + parent::defaultInstanceSettings();
+    ) + parent::defaultFieldSettings();
   }
 
   /**
@@ -77,7 +77,7 @@ public static function schema(FieldStorageDefinitionInterface $field_definition)
   /**
    * {@inheritdoc}
    */
-  public function settingsForm(array &$form, FormStateInterface $form_state, $has_data) {
+  public function storageSettingsForm(array &$form, FormStateInterface $form_state, $has_data) {
     $form['test_field_storage_setting'] = array(
       '#type' => 'textfield',
       '#title' => t('Field test field storage setting'),
@@ -92,13 +92,13 @@ public function settingsForm(array &$form, FormStateInterface $form_state, $has_
   /**
    * {@inheritdoc}
    */
-  public function instanceSettingsForm(array $form, FormStateInterface $form_state) {
-    $form['test_instance_setting'] = array(
+  public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
+    $form['test_field_setting'] = array(
       '#type' => 'textfield',
-      '#title' => t('Field test field instance setting'),
-      '#default_value' => $this->getSetting('test_instance_setting'),
+      '#title' => t('Field test field setting'),
+      '#default_value' => $this->getSetting('test_field_setting'),
       '#required' => FALSE,
-      '#description' => t('A dummy form element to simulate field instance setting.'),
+      '#description' => t('A dummy form element to simulate field setting.'),
     );
 
     return $form;
diff --git a/core/modules/field/tests/modules/field_test_config/config/install/field.instance.entity_test.entity_test.field_test_import.yml b/core/modules/field/tests/modules/field_test_config/config/install/field.field.entity_test.entity_test.field_test_import.yml
similarity index 100%
rename from core/modules/field/tests/modules/field_test_config/config/install/field.instance.entity_test.entity_test.field_test_import.yml
rename to core/modules/field/tests/modules/field_test_config/config/install/field.field.entity_test.entity_test.field_test_import.yml
diff --git a/core/modules/field/tests/modules/field_test_config/config/install/field.instance.entity_test.entity_test.field_test_import_2.yml b/core/modules/field/tests/modules/field_test_config/config/install/field.field.entity_test.entity_test.field_test_import_2.yml
similarity index 100%
rename from core/modules/field/tests/modules/field_test_config/config/install/field.instance.entity_test.entity_test.field_test_import_2.yml
rename to core/modules/field/tests/modules/field_test_config/config/install/field.field.entity_test.entity_test.field_test_import_2.yml
diff --git a/core/modules/field/tests/modules/field_test_config/config/install/field.instance.entity_test.test_bundle.field_test_import_2.yml b/core/modules/field/tests/modules/field_test_config/config/install/field.field.entity_test.test_bundle.field_test_import_2.yml
similarity index 100%
rename from core/modules/field/tests/modules/field_test_config/config/install/field.instance.entity_test.test_bundle.field_test_import_2.yml
rename to core/modules/field/tests/modules/field_test_config/config/install/field.field.entity_test.test_bundle.field_test_import_2.yml
diff --git a/core/modules/field/tests/modules/field_test_config/staging/field.instance.entity_test.entity_test.field_test_import_staging.yml b/core/modules/field/tests/modules/field_test_config/staging/field.field.entity_test.entity_test.field_test_import_staging.yml
similarity index 100%
rename from core/modules/field/tests/modules/field_test_config/staging/field.instance.entity_test.entity_test.field_test_import_staging.yml
rename to core/modules/field/tests/modules/field_test_config/staging/field.field.entity_test.entity_test.field_test_import_staging.yml
diff --git a/core/modules/field/tests/modules/field_test_config/staging/field.instance.entity_test.test_bundle.field_test_import_staging_2.yml b/core/modules/field/tests/modules/field_test_config/staging/field.field.entity_test.test_bundle.field_test_import_staging_2.yml
similarity index 100%
rename from core/modules/field/tests/modules/field_test_config/staging/field.instance.entity_test.test_bundle.field_test_import_staging_2.yml
rename to core/modules/field/tests/modules/field_test_config/staging/field.field.entity_test.test_bundle.field_test_import_staging_2.yml
diff --git a/core/modules/field/tests/modules/field_test_config/staging/field.instance.entity_test.test_bundle_2.field_test_import_staging_2.yml b/core/modules/field/tests/modules/field_test_config/staging/field.field.entity_test.test_bundle_2.field_test_import_staging_2.yml
similarity index 100%
rename from core/modules/field/tests/modules/field_test_config/staging/field.instance.entity_test.test_bundle_2.field_test_import_staging_2.yml
rename to core/modules/field/tests/modules/field_test_config/staging/field.field.entity_test.test_bundle_2.field_test_import_staging_2.yml
diff --git a/core/modules/field/tests/src/FieldInstanceConfigEntityUnitTest.php b/core/modules/field/tests/src/FieldConfigEntityUnitTest.php
similarity index 88%
rename from core/modules/field/tests/src/FieldInstanceConfigEntityUnitTest.php
rename to core/modules/field/tests/src/FieldConfigEntityUnitTest.php
index 56f2857..7a4e22c 100644
--- a/core/modules/field/tests/src/FieldInstanceConfigEntityUnitTest.php
+++ b/core/modules/field/tests/src/FieldConfigEntityUnitTest.php
@@ -2,21 +2,21 @@
 
 /**
  * @file
- * Contains \Drupal\field\Tests\FieldInstanceConfigEntityUnitTest.
+ * Contains \Drupal\field\Tests\FieldConfigEntityUnitTest.
  */
 
 namespace Drupal\field\Tests;
 
 use Drupal\Core\Language\LanguageInterface;
 use Drupal\Core\DependencyInjection\ContainerBuilder;
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 use Drupal\Tests\UnitTestCase;
 
 /**
- * @coversDefaultClass \Drupal\field\Entity\FieldInstanceConfig
+ * @coversDefaultClass \Drupal\field\Entity\FieldConfig
  * @group field
  */
-class FieldInstanceConfigEntityUnitTest extends UnitTestCase {
+class FieldConfigEntityUnitTest extends UnitTestCase {
 
   /**
    * The entity type used for testing.
@@ -125,13 +125,13 @@ public function testCalculateDependencies() {
       ->method('getConfigDependencyName')
       ->will($this->returnValue('field.storage.test_entity_type.test_field'));
 
-    $instance = new FieldInstanceConfig(array(
+    $field = new FieldConfig(array(
       'field_name' => $this->fieldStorage->getName(),
       'entity_type' => 'test_entity_type',
       'bundle' => 'test_bundle',
       'field_type' => 'test_field',
     ), $this->entityTypeId);
-    $dependencies = $instance->calculateDependencies();
+    $dependencies = $field->calculateDependencies();
     $this->assertContains('field.storage.test_entity_type.test_field', $dependencies['entity']);
     $this->assertContains('test.test_entity_type.id', $dependencies['entity']);
   }
@@ -140,7 +140,7 @@ public function testCalculateDependencies() {
    * @covers ::toArray()
    */
   public function testToArray() {
-    $instance = new FieldInstanceConfig(array(
+    $field = new FieldConfig(array(
       'field_name' => $this->fieldStorage->getName(),
       'entity_type' => 'test_entity_type',
       'bundle' => 'test_bundle',
@@ -165,9 +165,9 @@ public function testToArray() {
       'field_type' => 'test_field',
     );
     $this->entityManager->expects($this->any())
-       ->method('getDefinition')
-       ->with($this->entityTypeId)
-       ->will($this->returnValue($this->entityType));
+      ->method('getDefinition')
+      ->with($this->entityTypeId)
+      ->will($this->returnValue($this->entityType));
     $this->entityType->expects($this->once())
       ->method('getKey')
       ->with('id')
@@ -176,7 +176,7 @@ public function testToArray() {
       ->method('getDefinition')
       ->will($this->returnValue(array('mapping' => array_fill_keys(array_keys($expected), ''))));
 
-    $export = $instance->toArray();
+    $export = $field->toArray();
     $this->assertEquals($expected, $export);
   }
 
@@ -184,21 +184,21 @@ public function testToArray() {
    * @covers ::getType
    */
   public function testGetType() {
-    // Ensure that FieldInstanceConfig::getType() is not delegated to
+    // Ensure that FieldConfig::getType() is not delegated to
     // FieldStorage.
     $this->entityManager->expects($this->never())
       ->method('getFieldStorageDefinitions');
     $this->fieldStorage->expects($this->never())
       ->method('getType');
 
-    $instance = new FieldInstanceConfig(array(
+    $field = new FieldConfig(array(
       'field_name' => $this->fieldStorage->getName(),
       'entity_type' => 'test_entity_type',
       'bundle' => 'test_bundle',
       'field_type' => 'test_field',
     ), $this->entityTypeId);
 
-    $this->assertEquals('test_field', $instance->getType());
+    $this->assertEquals('test_field', $field->getType());
   }
 
 }
diff --git a/core/modules/field_ui/field_ui.module b/core/modules/field_ui/field_ui.module
index 696d07a..d5578b6 100644
--- a/core/modules/field_ui/field_ui.module
+++ b/core/modules/field_ui/field_ui.module
@@ -109,8 +109,8 @@ function field_ui_element_info() {
  */
 function field_ui_entity_type_build(array &$entity_types) {
   /** @var $entity_types \Drupal\Core\Entity\EntityTypeInterface[] */
-  $entity_types['field_instance_config']->setFormClass('delete', 'Drupal\field_ui\Form\FieldInstanceConfigDeleteForm');
-  $entity_types['field_instance_config']->setListBuilderClass('Drupal\field_ui\FieldInstanceConfigListBuilder');
+  $entity_types['field_config']->setFormClass('delete', 'Drupal\field_ui\Form\FieldConfigDeleteForm');
+  $entity_types['field_config']->setListBuilderClass('Drupal\field_ui\FieldConfigListBuilder');
   $entity_types['field_storage_config']->setListBuilderClass('Drupal\field_ui\FieldStorageConfigListBuilder');
 
   foreach ($entity_types as $entity_type) {
diff --git a/core/modules/field_ui/src/DisplayOverviewBase.php b/core/modules/field_ui/src/DisplayOverviewBase.php
index 1bad243..4c649ff 100644
--- a/core/modules/field_ui/src/DisplayOverviewBase.php
+++ b/core/modules/field_ui/src/DisplayOverviewBase.php
@@ -508,7 +508,7 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
 
     // Collect data for 'regular' fields.
     foreach ($form['#fields'] as $field_name) {
-      // Retrieve the stored instance settings to merge with the incoming
+      // Retrieve the stored field settings to merge with the incoming
       // values.
       $values = $form_values['fields'][$field_name];
 
@@ -716,7 +716,7 @@ protected function getExtraFields() {
    * Returns the widget or formatter plugin for a field.
    *
    * @param \Drupal\Core\Field\FieldDefinitionInterface $field_definition
-   *   The field instance.
+   *   The field.
    * @param array $configuration
    *   The plugin configuration
    *
diff --git a/core/modules/field_ui/src/FieldInstanceConfigListBuilder.php b/core/modules/field_ui/src/FieldConfigListBuilder.php
similarity index 79%
rename from core/modules/field_ui/src/FieldInstanceConfigListBuilder.php
rename to core/modules/field_ui/src/FieldConfigListBuilder.php
index 74252e0..f4f76b5 100644
--- a/core/modules/field_ui/src/FieldInstanceConfigListBuilder.php
+++ b/core/modules/field_ui/src/FieldConfigListBuilder.php
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Contains \Drupal\field_ui\FieldInstanceConfigListBuilder.
+ * Contains \Drupal\field_ui\FieldConfigListBuilder.
  */
 
 namespace Drupal\field_ui;
@@ -14,9 +14,9 @@
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
- * Provides lists of field instance config entities.
+ * Provides lists of field config entities.
  */
-class FieldInstanceConfigListBuilder extends ConfigEntityListBuilder {
+class FieldConfigListBuilder extends ConfigEntityListBuilder {
 
   /**
    * The entity manager.
@@ -49,7 +49,7 @@ public static function createInstance(ContainerInterface $container, EntityTypeI
    * {@inheritdoc}
    */
   public function render() {
-    // The actual field instance config overview is rendered by
+    // The actual field config overview is rendered by
     // \Drupal\field_ui\FieldOverview, so we should not use this class to build
     // lists.
     throw new \Exception('This class is only used for operations and not for building lists.');
@@ -59,16 +59,16 @@ public function render() {
    * {@inheritdoc}
    */
   public function getDefaultOperations(EntityInterface $entity) {
-    /** @var \Drupal\field\FieldInstanceConfigInterface $entity */
+    /** @var \Drupal\field\FieldConfigInterface $entity */
     $operations = parent::getDefaultOperations($entity);
 
     $operations['storage-settings'] = array(
-      'title' => $this->t('Field settings'),
+      'title' => $this->t('Storage settings'),
       'weight' => 20,
-      'attributes' => array('title' => $this->t('Edit field settings.')),
+      'attributes' => array('title' => $this->t('Edit storage settings.')),
     ) + $entity->urlInfo('storage-edit-form')->toArray();
-    $operations['edit']['attributes']['title'] = $this->t('Edit instance settings.');
-    $operations['delete']['attributes']['title'] = $this->t('Delete instance.');
+    $operations['edit']['attributes']['title'] = $this->t('Edit field settings.');
+    $operations['delete']['attributes']['title'] = $this->t('Delete field.');
 
     return $operations;
   }
diff --git a/core/modules/field_ui/src/FieldOverview.php b/core/modules/field_ui/src/FieldOverview.php
index 6d5f15f..d5abb97 100644
--- a/core/modules/field_ui/src/FieldOverview.php
+++ b/core/modules/field_ui/src/FieldOverview.php
@@ -17,7 +17,7 @@
 use Drupal\field_ui\OverviewBase;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Drupal\field\Entity\FieldStorageConfig;
-use Drupal\field\FieldInstanceConfigInterface;
+use Drupal\field\FieldConfigInterface;
 
 /**
  * Field UI field overview form.
@@ -82,8 +82,8 @@ public function buildForm(array $form, FormStateInterface $form_state, $entity_t
     parent::buildForm($form, $form_state, $entity_type_id, $bundle);
 
     // Gather bundle information.
-    $instances = array_filter(\Drupal::entityManager()->getFieldDefinitions($this->entity_type, $this->bundle), function ($field_definition) {
-      return $field_definition instanceof FieldInstanceConfigInterface;
+    $fields = array_filter(\Drupal::entityManager()->getFieldDefinitions($this->entity_type, $this->bundle), function ($field_definition) {
+      return $field_definition instanceof FieldConfigInterface;
     });
     $field_types = $this->fieldTypeManager->getDefinitions();
 
@@ -93,7 +93,7 @@ public function buildForm(array $form, FormStateInterface $form_state, $entity_t
     $form += array(
       '#entity_type' => $this->entity_type,
       '#bundle' => $this->bundle,
-      '#fields' => array_keys($instances),
+      '#fields' => array_keys($fields),
     );
 
     $table = array(
@@ -116,21 +116,21 @@ public function buildForm(array $form, FormStateInterface $form_state, $entity_t
     );
 
     // Fields.
-    foreach ($instances as $name => $instance) {
-      $field_storage = $instance->getFieldStorageDefinition();
+    foreach ($fields as $name => $field) {
+      $field_storage = $field->getFieldStorageDefinition();
       $route_parameters = array(
         $this->bundleEntityType => $this->bundle,
-        'field_instance_config' => $instance->id(),
+        'field_config' => $field->id(),
       );
       $table[$name] = array(
         '#attributes' => array(
           'id' => drupal_html_class($name),
         ),
         'label' => array(
-          '#markup' => String::checkPlain($instance->getLabel()),
+          '#markup' => String::checkPlain($field->getLabel()),
         ),
         'field_name' => array(
-          '#markup' => $instance->getName(),
+          '#markup' => $field->getName(),
         ),
         'type' => array(
           '#type' => 'link',
@@ -143,7 +143,7 @@ public function buildForm(array $form, FormStateInterface $form_state, $entity_t
 
       $table[$name]['operations']['data'] = array(
         '#type' => 'operations',
-        '#links' => $this->entityManager->getListBuilder('field_instance_config')->getOperations($instance),
+        '#links' => $this->entityManager->getListBuilder('field_config')->getOperations($field),
       );
 
       if (!empty($field_storage->locked)) {
@@ -375,7 +375,7 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
         'type' => $values['type'],
         'translatable' => $values['translatable'],
       );
-      $instance = array(
+      $field = array(
         'field_name' => $values['field_name'],
         'entity_type' => $this->entity_type,
         'bundle' => $this->bundle,
@@ -384,11 +384,11 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
         'translatable' => FALSE,
       );
 
-      // Create the field and instance.
+      // Create the field storage and field.
       try {
         $this->entityManager->getStorage('field_storage_config')->create($field_storage)->save();
-        $new_instance = $this->entityManager->getStorage('field_instance_config')->create($instance);
-        $new_instance->save();
+        $new_field = $this->entityManager->getStorage('field_config')->create($field);
+        $new_field->save();
 
         // Make sure the field is displayed in the 'default' form mode (using
         // default widget and settings). It stays hidden for other form modes
@@ -408,17 +408,17 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
         // configured for new fields.
         $route_parameters = array(
           $this->bundleEntityType => $this->bundle,
-          'field_instance_config' => $new_instance->id(),
+          'field_config' => $new_field->id(),
         );
         $destinations[] = array('route_name' => 'field_ui.storage_edit_' . $this->entity_type, 'route_parameters' => $route_parameters);
-        $destinations[] = array('route_name' => 'field_ui.instance_edit_' . $this->entity_type, 'route_parameters' => $route_parameters);
+        $destinations[] = array('route_name' => 'field_ui.field_edit_' . $this->entity_type, 'route_parameters' => $route_parameters);
 
         // Store new field information for any additional submit handlers.
         $form_state['fields_added']['_add_new_field'] = $values['field_name'];
       }
       catch (\Exception $e) {
         $error = TRUE;
-        drupal_set_message($this->t('There was a problem creating field %label: !message', array('%label' => $instance['label'], '!message' => $e->getMessage())), 'error');
+        drupal_set_message($this->t('There was a problem creating field %label: !message', array('%label' => $field['label'], '!message' => $e->getMessage())), 'error');
       }
     }
 
@@ -431,7 +431,7 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
         drupal_set_message($this->t('The field %label cannot be added because it is locked.', array('%label' => $values['label'])), 'error');
       }
       else {
-        $instance = array(
+        $field = array(
           'field_name' => $field_name,
           'entity_type' => $this->entity_type,
           'bundle' => $this->bundle,
@@ -439,8 +439,8 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
         );
 
         try {
-          $new_instance = $this->entityManager->getStorage('field_instance_config')->create($instance);
-          $new_instance->save();
+          $new_field = $this->entityManager->getStorage('field_config')->create($field);
+          $new_field->save();
 
           // Make sure the field is displayed in the 'default' form mode (using
           // default widget and settings). It stays hidden for other form modes
@@ -457,18 +457,18 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
             ->save();
 
           $destinations[] = array(
-            'route_name' => 'field_ui.instance_edit_' . $this->entity_type,
+            'route_name' => 'field_ui.field_edit_' . $this->entity_type,
             'route_parameters' => array(
               $this->bundleEntityType => $this->bundle,
-              'field_instance_config' => $new_instance->id(),
+              'field_config' => $new_field->id(),
             ),
           );
           // Store new field information for any additional submit handlers.
-          $form_state['fields_added']['_add_existing_field'] = $instance['field_name'];
+          $form_state['fields_added']['_add_existing_field'] = $field['field_name'];
         }
         catch (\Exception $e) {
           $error = TRUE;
-          drupal_set_message($this->t('There was a problem creating field instance %label: @message.', array('%label' => $instance['label'], '@message' => $e->getMessage())), 'error');
+          drupal_set_message($this->t('There was a problem creating field %label: @message.', array('%label' => $field['label'], '@message' => $e->getMessage())), 'error');
         }
       }
     }
@@ -492,35 +492,35 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
   protected function getExistingFieldOptions() {
     $options = array();
 
-    // Collect candidate field instances: all instances of fields for this
+    // Collect candidate fields: all fields of field storages for this
     // entity type that are not already present in the current bundle.
     $field_map = \Drupal::entityManager()->getFieldMap();
-    $instance_ids = array();
+    $field_ids = array();
     if (!empty($field_map[$this->entity_type])) {
       foreach ($field_map[$this->entity_type] as $field_name => $data) {
         if (!in_array($this->bundle, $data['bundles'])) {
           $bundle = reset($data['bundles']);
-          $instance_ids[] = $this->entity_type . '.' . $bundle . '.' . $field_name;
+          $field_ids[] = $this->entity_type . '.' . $bundle . '.' . $field_name;
         }
       }
     }
 
-    // Load the instances and build the list of options.
-    if ($instance_ids) {
+    // Load the fields and build the list of options.
+    if ($field_ids) {
       $field_types = $this->fieldTypeManager->getDefinitions();
-      $instances = $this->entityManager->getStorage('field_instance_config')->loadMultiple($instance_ids);
-      foreach ($instances as $instance) {
+      $fields = $this->entityManager->getStorage('field_config')->loadMultiple($field_ids);
+      foreach ($fields as $field) {
         // Do not show:
         // - locked fields,
         // - fields that should not be added via user interface.
-        $field_type = $instance->getType();
-        $field_storage = $instance->getFieldStorageDefinition();
+        $field_type = $field->getType();
+        $field_storage = $field->getFieldStorageDefinition();
         if (empty($field_storage->locked) && empty($field_types[$field_type]['no_ui'])) {
-          $options[$instance->getName()] = array(
+          $options[$field->getName()] = array(
             'type' => $field_type,
             'type_label' => $field_types[$field_type]['label'],
-            'field' => $instance->getName(),
-            'label' => $instance->getLabel(),
+            'field' => $field->getName(),
+            'label' => $field->getLabel(),
           );
         }
       }
diff --git a/core/modules/field_ui/src/Form/FieldInstanceConfigDeleteForm.php b/core/modules/field_ui/src/Form/FieldConfigDeleteForm.php
similarity index 89%
rename from core/modules/field_ui/src/Form/FieldInstanceConfigDeleteForm.php
rename to core/modules/field_ui/src/Form/FieldConfigDeleteForm.php
index 97470db..4599954 100644
--- a/core/modules/field_ui/src/Form/FieldInstanceConfigDeleteForm.php
+++ b/core/modules/field_ui/src/Form/FieldConfigDeleteForm.php
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Contains \Drupal\field_ui\Form\FieldInstanceConfigDeleteForm.
+ * Contains \Drupal\field_ui\Form\FieldConfigDeleteForm.
  */
 
 namespace Drupal\field_ui\Form;
@@ -14,9 +14,9 @@
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
- * Provides a form for removing a field instance from a bundle.
+ * Provides a form for removing a field from a bundle.
  */
-class FieldInstanceConfigDeleteForm extends EntityConfirmFormBase {
+class FieldConfigDeleteForm extends EntityConfirmFormBase {
 
   /**
    * The entity manager.
@@ -26,7 +26,7 @@ class FieldInstanceConfigDeleteForm extends EntityConfirmFormBase {
   protected $entityManager;
 
   /**
-   * Constructs a new FieldInstanceConfigDeleteForm object.
+   * Constructs a new FieldConfigDeleteForm object.
    *
    * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
    *   The entity manager.
@@ -88,7 +88,7 @@ public function submit(array $form, FormStateInterface $form_state) {
     // purged. In the case that a field has minimal or no content, a single call
     // to field_purge_batch() will remove it from the system. Call this with a
     // low batch limit to avoid administrators having to wait for cron runs when
-    // removing instances that meet this criteria.
+    // removing fields that meet this criteria.
     field_purge_batch(10);
   }
 
diff --git a/core/modules/field_ui/src/Form/FieldInstanceEditForm.php b/core/modules/field_ui/src/Form/FieldEditForm.php
similarity index 54%
rename from core/modules/field_ui/src/Form/FieldInstanceEditForm.php
rename to core/modules/field_ui/src/Form/FieldEditForm.php
index e8d4469..8134076 100644
--- a/core/modules/field_ui/src/Form/FieldInstanceEditForm.php
+++ b/core/modules/field_ui/src/Form/FieldEditForm.php
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Contains \Drupal\field_ui\Form\FieldInstanceEditForm.
+ * Contains \Drupal\field_ui\Form\FieldEditForm.
  */
 
 namespace Drupal\field_ui\Form;
@@ -11,21 +11,21 @@
 use Drupal\Core\Form\FormBase;
 use Drupal\Component\Utility\String;
 use Drupal\Core\Form\FormStateInterface;
-use Drupal\field\FieldInstanceConfigInterface;
+use Drupal\field\FieldConfigInterface;
 use Drupal\field_ui\FieldUI;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
- * Provides a form for the field instance settings form.
+ * Provides a form for the field settings form.
  */
-class FieldInstanceEditForm extends FormBase {
+class FieldEditForm extends FormBase {
 
   /**
-   * The field instance being edited.
+   * The field being edited.
    *
-   * @var \Drupal\field\FieldInstanceConfigInterface
+   * @var \Drupal\field\FieldConfigInterface
    */
-  protected $instance;
+  protected $field;
 
   /**
    * The entity manager.
@@ -35,7 +35,7 @@ class FieldInstanceEditForm extends FormBase {
   protected $entityManager;
 
   /**
-   * Constructs a new field instance form.
+   * Constructs a new field form.
    *
    * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
    *   The entity manager.
@@ -57,89 +57,89 @@ public static function create(ContainerInterface $container) {
    * {@inheritdoc}
    */
   public function getFormId() {
-    return 'field_ui_field_instance_edit_form';
+    return 'field_ui_field_edit_form';
   }
 
   /**
    * {@inheritdoc}
    */
-  public function buildForm(array $form, FormStateInterface $form_state, FieldInstanceConfigInterface $field_instance_config = NULL) {
-    $this->instance = $form_state['instance'] = $field_instance_config;
+  public function buildForm(array $form, FormStateInterface $form_state, FieldConfigInterface $field_config = NULL) {
+    $this->field = $form_state['field'] = $field_config;
 
-    $bundle = $this->instance->bundle;
-    $entity_type = $this->instance->entity_type;
-    $field_storage = $this->instance->getFieldStorageDefinition();
+    $bundle = $this->field->bundle;
+    $entity_type = $this->field->entity_type;
+    $field_storage = $this->field->getFieldStorageDefinition();
     $bundles = entity_get_bundles();
 
-    $form_title = $this->t('%instance settings for %bundle', array(
-      '%instance' => $this->instance->getLabel(),
+    $form_title = $this->t('%field settings for %bundle', array(
+      '%field' => $this->field->getLabel(),
       '%bundle' => $bundles[$entity_type][$bundle]['label'],
     ));
     $form['#title'] = $form_title;
 
     $form['#field'] = $field_storage;
     // Create an arbitrary entity object (used by the 'default value' widget).
-    $ids = (object) array('entity_type' => $this->instance->entity_type, 'bundle' => $this->instance->bundle, 'entity_id' => NULL);
+    $ids = (object) array('entity_type' => $this->field->entity_type, 'bundle' => $this->field->bundle, 'entity_id' => NULL);
     $form['#entity'] = _field_create_entity_from_ids($ids);
-    $items = $form['#entity']->get($this->instance->getName());
+    $items = $form['#entity']->get($this->field->getName());
 
     if (!empty($field_storage->locked)) {
       $form['locked'] = array(
-        '#markup' => $this->t('The field %field is locked and cannot be edited.', array('%field' => $this->instance->getLabel())),
+        '#markup' => $this->t('The field %field is locked and cannot be edited.', array('%field' => $this->field->getLabel())),
       );
       return $form;
     }
 
-    // Create a form structure for the instance values.
-    $form['instance'] = array(
+    // Create a form structure for the field values.
+    $form['field'] = array(
       '#tree' => TRUE,
     );
 
-    // Build the non-configurable instance values.
-    $form['instance']['field_name'] = array(
+    // Build the non-configurable field values.
+    $form['field']['field_name'] = array(
       '#type' => 'value',
-      '#value' => $this->instance->getName(),
+      '#value' => $this->field->getName(),
     );
-    $form['instance']['entity_type'] = array(
+    $form['field']['entity_type'] = array(
       '#type' => 'value',
       '#value' => $entity_type,
     );
-    $form['instance']['bundle'] = array(
+    $form['field']['bundle'] = array(
       '#type' => 'value',
       '#value' => $bundle,
     );
 
-    // Build the configurable instance values.
-    $form['instance']['label'] = array(
+    // Build the configurable field values.
+    $form['field']['label'] = array(
       '#type' => 'textfield',
       '#title' => $this->t('Label'),
-      '#default_value' => $this->instance->getLabel() ?: $field_storage->getName(),
+      '#default_value' => $this->field->getLabel() ?: $field_storage->getName(),
       '#required' => TRUE,
       '#weight' => -20,
     );
 
-    $form['instance']['description'] = array(
+    $form['field']['description'] = array(
       '#type' => 'textarea',
       '#title' => $this->t('Help text'),
-      '#default_value' => $this->instance->getDescription(),
+      '#default_value' => $this->field->getDescription(),
       '#rows' => 5,
       '#description' => $this->t('Instructions to present to the user below this field on the editing form.<br />Allowed HTML tags: @tags', array('@tags' => _field_filter_xss_display_allowed_tags())) . '<br />' . $this->t('This field supports tokens.'),
       '#weight' => -10,
     );
 
-    $form['instance']['required'] = array(
+    $form['field']['required'] = array(
       '#type' => 'checkbox',
       '#title' => $this->t('Required field'),
-      '#default_value' => $this->instance->isRequired(),
+      '#default_value' => $this->field->isRequired(),
       '#weight' => -5,
     );
 
-    // Add instance settings for the field type and a container for third party
+    // Add field settings for the field type and a container for third party
     // settings that modules can add to via hook_form_FORM_ID_alter().
-    $form['instance']['settings'] = $items[0]->instanceSettingsForm($form, $form_state);
-    $form['instance']['settings']['#weight'] = 10;
-    $form['instance']['third_party_settings'] = array();
-    $form['instance']['third_party_settings']['#weight'] = 11;
+    $form['field']['settings'] = $items[0]->instanceSettingsForm($form, $form_state);
+    $form['field']['settings']['#weight'] = 10;
+    $form['field']['third_party_settings'] = array();
+    $form['field']['third_party_settings']['#weight'] = 11;
 
     // Add handling for default value.
     if ($element = $items->defaultValuesForm($form, $form_state)) {
@@ -149,7 +149,8 @@ public function buildForm(array $form, FormStateInterface $form_state, FieldInst
         '#open' => TRUE,
         '#description' => $this->t('The default value for this field, used when creating new content.'),
       ));
-      $form['instance']['default_value'] = $element;
+
+      $form['field']['default_value'] = $element;
     }
 
     $form['actions'] = array('#type' => 'actions');
@@ -169,9 +170,9 @@ public function buildForm(array $form, FormStateInterface $form_state, FieldInst
    * {@inheritdoc}
    */
   public function validateForm(array &$form, FormStateInterface $form_state) {
-    if (isset($form['instance']['default_value'])) {
-      $items = $form['#entity']->get($this->instance->getName());
-      $items->defaultValuesFormValidate($form['instance']['default_value'], $form, $form_state);
+    if (isset($form['field']['default_value'])) {
+      $items = $form['#entity']->get($this->field->getName());
+      $items->defaultValuesFormValidate($form['field']['default_value'], $form, $form_state);
     }
   }
 
@@ -181,19 +182,19 @@ public function validateForm(array &$form, FormStateInterface $form_state) {
   public function submitForm(array &$form, FormStateInterface $form_state) {
     // Handle the default value.
     $default_value = array();
-    if (isset($form['instance']['default_value'])) {
-      $items = $form['#entity']->get($this->instance->getName());
-      $default_value = $items->defaultValuesFormSubmit($form['instance']['default_value'], $form, $form_state);
+    if (isset($form['field']['default_value'])) {
+      $items = $form['#entity']->get($this->field->getName());
+      $default_value = $items->defaultValuesFormSubmit($form['field']['default_value'], $form, $form_state);
     }
-    $this->instance->default_value = $default_value;
+    $this->field->default_value = $default_value;
 
-    // Merge incoming values into the instance.
-    foreach ($form_state->getValue('instance') as $key => $value) {
-      $this->instance->set($key, $value);
+    // Merge incoming values into the field.
+    foreach ($form_state->getValue('field') as $key => $value) {
+      $this->field->set($key, $value);
     }
-    $this->instance->save();
+    $this->field->save();
 
-    drupal_set_message($this->t('Saved %label configuration.', array('%label' => $this->instance->getLabel())));
+    drupal_set_message($this->t('Saved %label configuration.', array('%label' => $this->field->getLabel())));
 
     $request = $this->getRequest();
     if (($destinations = $request->query->get('destinations')) && $next_destination = FieldUI::getNextDestination($destinations)) {
@@ -201,12 +202,12 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
       $form_state->setRedirectUrl($next_destination);
     }
     else {
-      $form_state->setRedirectUrl(FieldUI::getOverviewRouteInfo($this->instance->entity_type, $this->instance->bundle));
+      $form_state->setRedirectUrl(FieldUI::getOverviewRouteInfo($this->field->entity_type, $this->field->bundle));
     }
   }
 
   /**
-   * Redirects to the field instance deletion form.
+   * Redirects to the field deletion form.
    */
   public function delete(array &$form, FormStateInterface $form_state) {
     $destination = array();
@@ -215,28 +216,28 @@ public function delete(array &$form, FormStateInterface $form_state) {
       $destination = drupal_get_destination();
       $request->query->remove('destination');
     }
-    $entity_type = $this->entityManager->getDefinition($this->instance->entity_type);
+    $entity_type = $this->entityManager->getDefinition($this->field->entity_type);
     $form_state->setRedirect(
-      'field_ui.delete_' . $this->instance->entity_type,
+      'field_ui.delete_' . $this->field->entity_type,
       array(
-        $entity_type->getBundleEntityType() => $this->instance->bundle,
-        'field_instance_config' => $this->instance->id(),
+        $entity_type->getBundleEntityType() => $this->field->bundle,
+        'field_config' => $this->field->id(),
       ),
       array('query' => $destination)
     );
   }
 
   /**
-   * The _title_callback for the field instance settings form.
+   * The _title_callback for the field settings form.
    *
-   * @param \Drupal\field\FieldInstanceConfigInterface $field_instance_config
-   *   The field instance.
+   * @param \Drupal\field\FieldConfigInterface $field_config
+   *   The field.
    *
    * @return string
-   *   The label of the field instance.
+   *   The label of the field.
    */
-  public function getTitle(FieldInstanceConfigInterface $field_instance_config) {
-    return String::checkPlain($field_instance_config->label());
+  public function getTitle(FieldConfigInterface $field_config) {
+    return String::checkPlain($field_config->label());
   }
 
 }
diff --git a/core/modules/field_ui/src/Form/FieldStorageEditForm.php b/core/modules/field_ui/src/Form/FieldStorageEditForm.php
index 903a614..05c4fbb 100644
--- a/core/modules/field_ui/src/Form/FieldStorageEditForm.php
+++ b/core/modules/field_ui/src/Form/FieldStorageEditForm.php
@@ -12,7 +12,7 @@
 use Drupal\Core\Form\FormBase;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\TypedData\TypedDataManager;
-use Drupal\field\FieldInstanceConfigInterface;
+use Drupal\field\FieldConfigInterface;
 use Drupal\field_ui\FieldUI;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
@@ -22,11 +22,11 @@
 class FieldStorageEditForm extends FormBase {
 
   /**
-   * The field instance being edited.
+   * The field being edited.
    *
-   * @var \Drupal\field\FieldInstanceConfigInterface
+   * @var \Drupal\field\FieldConfigInterface
    */
-  protected $instance;
+  protected $field;
 
   /**
    * The entity manager.
@@ -75,15 +75,15 @@ public static function create(ContainerInterface $container) {
   /**
    * {@inheritdoc}
    */
-  public function buildForm(array $form, FormStateInterface $form_state, FieldInstanceConfigInterface $field_instance_config = NULL) {
-    $this->instance = $form_state['instance'] = $field_instance_config;
-    $form['#title'] = $this->instance->label();
+  public function buildForm(array $form, FormStateInterface $form_state, FieldConfigInterface $field_config = NULL) {
+    $this->field = $field_config;
+    $form['#title'] = $this->field->label();
 
-    $field_storage = $this->instance->getFieldStorageDefinition();
+    $field_storage = $this->field->getFieldStorageDefinition();
     $form['#field'] = $field_storage;
-    $form['#bundle'] = $this->instance->bundle;
+    $form['#bundle'] = $this->field->bundle;
 
-    $description = '<p>' . $this->t('These settings apply to the %field field everywhere it is used. These settings impact the way that data is stored in the database and cannot be changed once data has been created.', array('%field' => $this->instance->label())) . '</p>';
+    $description = '<p>' . $this->t('These settings apply to the %field field everywhere it is used. These settings impact the way that data is stored in the database and cannot be changed once data has been created.', array('%field' => $this->field->label())) . '</p>';
 
     // Create a form structure for the field values.
     $form['field'] = array(
@@ -148,7 +148,7 @@ public function buildForm(array $form, FormStateInterface $form_state, FieldInst
     );
     // Create an arbitrary entity object, so that we can have an instantiated
     // FieldItem.
-    $ids = (object) array('entity_type' => $this->instance->entity_type, 'bundle' => $this->instance->bundle, 'entity_id' => NULL);
+    $ids = (object) array('entity_type' => $this->field->entity_type, 'bundle' => $this->field->bundle, 'entity_id' => NULL);
     $entity = _field_create_entity_from_ids($ids);
     $form['field']['settings'] += $entity->get($field_storage->getName())->first()->settingsForm($form, $form_state, $field_storage->hasData());
 
@@ -187,7 +187,7 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
     unset($field_values['container']);
 
     // Merge incoming form values into the existing field.
-    $field_storage = $this->instance->getFieldStorageDefinition();
+    $field_storage = $this->field->getFieldStorageDefinition();
     foreach ($field_values as $key => $value) {
       $field_storage->{$key} = $value;
     }
@@ -195,18 +195,18 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
     // Update the field.
     try {
       $field_storage->save();
-      drupal_set_message($this->t('Updated field %label field settings.', array('%label' => $this->instance->label())));
+      drupal_set_message($this->t('Updated field %label field settings.', array('%label' => $this->field->label())));
       $request = $this->getRequest();
       if (($destinations = $request->query->get('destinations')) && $next_destination = FieldUI::getNextDestination($destinations)) {
         $request->query->remove('destinations');
         $form_state->setRedirectUrl($next_destination);
       }
       else {
-        $form_state->setRedirectUrl(FieldUI::getOverviewRouteInfo($this->instance->entity_type, $this->instance->bundle));
+        $form_state->setRedirectUrl(FieldUI::getOverviewRouteInfo($this->field->entity_type, $this->field->bundle));
       }
     }
     catch (\Exception $e) {
-      drupal_set_message($this->t('Attempt to update field %label failed: %message.', array('%label' => $this->instance->label(), '%message' => $e->getMessage())), 'error');
+      drupal_set_message($this->t('Attempt to update field %label failed: %message.', array('%label' => $this->field->label(), '%message' => $e->getMessage())), 'error');
     }
   }
 
diff --git a/core/modules/field_ui/src/Plugin/Derivative/FieldUiLocalTask.php b/core/modules/field_ui/src/Plugin/Derivative/FieldUiLocalTask.php
index 758a98b..788392c 100644
--- a/core/modules/field_ui/src/Plugin/Derivative/FieldUiLocalTask.php
+++ b/core/modules/field_ui/src/Plugin/Derivative/FieldUiLocalTask.php
@@ -93,18 +93,18 @@ public function getDerivativeDefinitions($base_plugin_definition) {
           'base_route' => "field_ui.overview_$entity_type_id",
         );
 
-        // Field instance edit tab.
-        $this->derivatives["instance_edit_$entity_type_id"] = array(
-          'route_name' => "field_ui.instance_edit_$entity_type_id",
+        // Field edit tab.
+        $this->derivatives["field_edit_$entity_type_id"] = array(
+          'route_name' => "field_ui.field_edit_$entity_type_id",
           'title' => $this->t('Edit'),
-          'base_route' => "field_ui.instance_edit_$entity_type_id",
+          'base_route' => "field_ui.field_edit_$entity_type_id",
         );
 
         // Field settings tab.
         $this->derivatives["field_edit_$entity_type_id"] = array(
           'route_name' => "field_ui.storage_edit_$entity_type_id",
           'title' => $this->t('Field settings'),
-          'base_route' => "field_ui.instance_edit_$entity_type_id",
+          'base_route' => "field_ui.field_edit_$entity_type_id",
         );
 
         // View and form modes secondary tabs.
diff --git a/core/modules/field_ui/src/Routing/RouteSubscriber.php b/core/modules/field_ui/src/Routing/RouteSubscriber.php
index 4b371ab..5fe9f36 100644
--- a/core/modules/field_ui/src/Routing/RouteSubscriber.php
+++ b/core/modules/field_ui/src/Routing/RouteSubscriber.php
@@ -56,28 +56,28 @@ protected function alterRoutes(RouteCollection $collection) {
         }
 
         $route = new Route(
-          "$path/fields/{field_instance_config}",
+          "$path/fields/{field_config}",
           array(
-            '_form' => '\Drupal\field_ui\Form\FieldInstanceEditForm',
-            '_title_callback' => '\Drupal\field_ui\Form\FieldInstanceEditForm::getTitle',
+            '_form' => '\Drupal\field_ui\Form\FieldEditForm',
+            '_title_callback' => '\Drupal\field_ui\Form\FieldEditForm::getTitle',
           ),
-          array('_entity_access' => 'field_instance_config.update'),
+          array('_entity_access' => 'field_config.update'),
           $options
         );
-        $collection->add("field_ui.instance_edit_$entity_type_id", $route);
+        $collection->add("field_ui.field_edit_$entity_type_id", $route);
 
         $route = new Route(
-          "$path/fields/{field_instance_config}/storage",
+          "$path/fields/{field_config}/storage",
           array('_form' => '\Drupal\field_ui\Form\FieldStorageEditForm'),
-          array('_entity_access' => 'field_instance_config.update'),
+          array('_entity_access' => 'field_config.update'),
           $options
         );
         $collection->add("field_ui.storage_edit_$entity_type_id", $route);
 
         $route = new Route(
-          "$path/fields/{field_instance_config}/delete",
-          array('_entity_form' => 'field_instance_config.delete'),
-          array('_entity_access' => 'field_instance_config.delete'),
+          "$path/fields/{field_config}/delete",
+          array('_entity_form' => 'field_config.delete'),
+          array('_entity_access' => 'field_config.delete'),
           $options
         );
         $collection->add("field_ui.delete_$entity_type_id", $route);
diff --git a/core/modules/field_ui/src/Tests/FieldUiTestBase.php b/core/modules/field_ui/src/Tests/FieldUiTestBase.php
index 6157893..962acec 100644
--- a/core/modules/field_ui/src/Tests/FieldUiTestBase.php
+++ b/core/modules/field_ui/src/Tests/FieldUiTestBase.php
@@ -56,14 +56,14 @@ protected function setUp() {
    * @param $initial_edit
    *   $edit parameter for drupalPostForm() on the first step ('Manage fields'
    *   screen).
+   * @param $storage_edit
+   *   $edit parameter for drupalPostForm() on the second step ('Storage
+   *   settings' form).
    * @param $field_edit
-   *   $edit parameter for drupalPostForm() on the second step ('Field settings'
-   *   form).
-   * @param $instance_edit
-   *   $edit parameter for drupalPostForm() on the third step ('Instance settings'
+   *   $edit parameter for drupalPostForm() on the third step ('Field settings'
    *   form).
    */
-  function fieldUIAddNewField($bundle_path, $initial_edit, $field_edit = array(), $instance_edit = array()) {
+  function fieldUIAddNewField($bundle_path, $initial_edit, $storage_edit = array(), $field_edit = array()) {
     // Use 'test_field' field type by default.
     $initial_edit += array(
       'fields[_add_new_field][type]' => 'test_field',
@@ -76,12 +76,12 @@ function fieldUIAddNewField($bundle_path, $initial_edit, $field_edit = array(),
     // Test Breadcrumbs.
     $this->assertLink($label, 0, 'Field label is correct in the breadcrumb of the storage settings page.');
 
-    // Second step : 'Field settings' form.
-    $this->drupalPostForm(NULL, $field_edit, t('Save field settings'));
-    $this->assertRaw(t('Updated field %label field settings.', array('%label' => $label)), 'Redirected to instance and widget settings page.');
+    // Second step : 'Storage settings' form.
+    $this->drupalPostForm(NULL, $storage_edit, t('Save field settings'));
+    $this->assertRaw(t('Updated field %label field settings.', array('%label' => $label)), 'Redirected to field settings page.');
 
-    // Third step : 'Instance settings' form.
-    $this->drupalPostForm(NULL, $instance_edit, t('Save settings'));
+    // Third step : 'Field settings' form.
+    $this->drupalPostForm(NULL, $field_edit, t('Save settings'));
     $this->assertRaw(t('Saved %label configuration.', array('%label' => $label)), 'Redirected to "Manage fields" page.');
 
     // Check that the field appears in the overview form.
@@ -96,18 +96,18 @@ function fieldUIAddNewField($bundle_path, $initial_edit, $field_edit = array(),
    * @param $initial_edit
    *   $edit parameter for drupalPostForm() on the first step ('Manage fields'
    *   screen).
-   * @param $instance_edit
-   *   $edit parameter for drupalPostForm() on the second step ('Instance settings'
+   * @param $field_edit
+   *   $edit parameter for drupalPostForm() on the second step ('Field settings'
    *   form).
    */
-  function fieldUIAddExistingField($bundle_path, $initial_edit, $instance_edit = array()) {
+  function fieldUIAddExistingField($bundle_path, $initial_edit, $field_edit = array()) {
     $label = $initial_edit['fields[_add_existing_field][label]'];
 
     // First step : 'Re-use existing field' on the 'Manage fields' page.
     $this->drupalPostForm("$bundle_path/fields", $initial_edit, t('Save'));
 
-    // Second step : 'Instance settings' form.
-    $this->drupalPostForm(NULL, $instance_edit, t('Save settings'));
+    // Second step : 'Field settings' form.
+    $this->drupalPostForm(NULL, $field_edit, t('Save settings'));
     $this->assertRaw(t('Saved %label configuration.', array('%label' => $label)), 'Redirected to "Manage fields" page.');
 
     // Check that the field appears in the overview form.
@@ -115,10 +115,10 @@ function fieldUIAddExistingField($bundle_path, $initial_edit, $instance_edit = a
   }
 
   /**
-   * Deletes a field instance through the Field UI.
+   * Deletes a field through the Field UI.
    *
    * @param $bundle_path
-   *   Admin path of the bundle that the field instance is to be deleted from.
+   *   Admin path of the bundle that the field is to be deleted from.
    * @param $field_name
    *   The name of the field.
    * @param $label
diff --git a/core/modules/field_ui/src/Tests/ManageDisplayTest.php b/core/modules/field_ui/src/Tests/ManageDisplayTest.php
index 24ccc7d..8cb0a6f 100644
--- a/core/modules/field_ui/src/Tests/ManageDisplayTest.php
+++ b/core/modules/field_ui/src/Tests/ManageDisplayTest.php
@@ -40,7 +40,8 @@ function testFormatterUI() {
     );
     $this->fieldUIAddNewField($manage_fields, $edit);
 
-    // Clear the test-side cache and get the saved field instance.
+    // Get the display options (formatter and settings) that were automatically
+    // assigned for the 'default' display.
     $display = entity_get_display('node', $this->type, 'default');
     $display_options = $display->getComponent('field_test');
     $format = $display_options['type'];
@@ -157,7 +158,8 @@ public function testWidgetUI() {
     );
     $this->fieldUIAddNewField($manage_fields, $edit);
 
-    // Clear the test-side cache and get the saved field instance.
+    // Get the display options (formatter and settings) that were automatically
+    // assigned for the 'default' display.
     $display = entity_get_form_display('node', $this->type, 'default');
     $display_options = $display->getComponent('field_test');
     $widget_type = $display_options['type'];
@@ -330,7 +332,7 @@ public function testViewModeLocalTasks() {
   }
 
   /**
-   * Tests that field instances with no explicit display settings do not break.
+   * Tests that fields with no explicit display settings do not break.
    */
   function testNonInitializedFields() {
     // Create a test field.
diff --git a/core/modules/field_ui/src/Tests/ManageFieldsTest.php b/core/modules/field_ui/src/Tests/ManageFieldsTest.php
index c137308..b745afa 100644
--- a/core/modules/field_ui/src/Tests/ManageFieldsTest.php
+++ b/core/modules/field_ui/src/Tests/ManageFieldsTest.php
@@ -10,7 +10,7 @@
 use Drupal\Component\Utility\String;
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
 use Drupal\Core\Language\LanguageInterface;
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Entity\FieldStorageConfig;
 
 /**
@@ -46,7 +46,7 @@ protected function setUp() {
       'type' => 'taxonomy_term_reference',
     ))->save();
 
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => 'field_' . $vocabulary->id(),
       'entity_type' => 'node',
       'label' => 'Tags',
@@ -71,7 +71,7 @@ function testCRUDFields() {
     $this->addExistingField();
     $this->cardinalitySettings();
     $this->fieldListAdminPage();
-    $this->deleteFieldInstance();
+    $this->deleteField();
   }
 
   /**
@@ -101,7 +101,7 @@ function manageFieldsPage($type = '') {
       $this->assertText($element, format_string('"@element" was found.', array('@element' => $element)));
     }
 
-    // Assert entity operations for all field instances.
+    // Assert entity operations for all fields.
     $result = $this->xpath('//ul[@class = "dropbutton"]/li/a');
     $url = base_path() . "admin/structure/types/manage/$type/fields/node.$type.body";
     $this->assertIdentical($url, (string) $result[0]['href']);
@@ -112,8 +112,8 @@ function manageFieldsPage($type = '') {
   /**
    * Tests adding a new field.
    *
-   * @todo Assert properties can bet set in the form and read back in $field and
-   * $instances.
+   * @todo Assert properties can bet set in the form and read back in
+   * $field_storage and $fields.
    */
   function createField() {
     // Create a test field.
@@ -128,9 +128,9 @@ function createField() {
    * Tests editing an existing field.
    */
   function updateField() {
-    $instance_id = 'node.' . $this->type . '.' . $this->field_name;
+    $field_id = 'node.' . $this->type . '.' . $this->field_name;
     // Go to the field edit page.
-    $this->drupalGet('admin/structure/types/manage/' . $this->type . '/fields/' . $instance_id . '/storage');
+    $this->drupalGet('admin/structure/types/manage/' . $this->type . '/fields/' . $field_id . '/storage');
 
     // Populate the field settings with new settings.
     $string = 'updated dummy test string';
@@ -139,10 +139,10 @@ function updateField() {
     );
     $this->drupalPostForm(NULL, $edit, t('Save field settings'));
 
-    // Go to the field instance edit page.
-    $this->drupalGet('admin/structure/types/manage/' . $this->type . '/fields/' . $instance_id);
+    // Go to the field edit page.
+    $this->drupalGet('admin/structure/types/manage/' . $this->type . '/fields/' . $field_id);
     $edit = array(
-      'instance[settings][test_instance_setting]' => $string,
+      'field[settings][test_field_setting]' => $string,
     );
     $this->assertText(t('Default value'), 'Default value heading is shown');
     $this->drupalPostForm(NULL, $edit, t('Save settings'));
@@ -215,12 +215,12 @@ function cardinalitySettings() {
   }
 
   /**
-   * Tests deleting a field from the instance edit form.
+   * Tests deleting a field from the field edit form.
    */
-  protected function deleteFieldInstance() {
-    // Delete the field instance.
-    $instance_id = 'node.' . $this->type . '.' . $this->field_name;
-    $this->drupalGet('admin/structure/types/manage/' . $this->type . '/fields/' . $instance_id);
+  protected function deleteField() {
+    // Delete the field.
+    $field_id = 'node.' . $this->type . '.' . $this->field_name;
+    $this->drupalGet('admin/structure/types/manage/' . $this->type . '/fields/' . $field_id);
     $this->drupalPostForm(NULL, array(), t('Delete field'));
     $this->assertResponse(200);
   }
@@ -229,22 +229,22 @@ protected function deleteFieldInstance() {
    * Asserts field settings are as expected.
    *
    * @param $bundle
-   *   The bundle name for the instance.
+   *   The bundle name for the field.
    * @param $field_name
-   *   The field name for the instance.
+   *   The field name for the field.
    * @param $string
    *   The settings text.
    * @param $entity_type
-   *   The entity type for the instance.
+   *   The entity type for the field.
    */
   function assertFieldSettings($bundle, $field_name, $string = 'dummy test string', $entity_type = 'node') {
     // Assert field storage settings.
     $field_storage = FieldStorageConfig::loadByName($entity_type, $field_name);
     $this->assertTrue($field_storage->getSetting('test_field_storage_setting') == $string, 'Field storage settings were found.');
 
-    // Assert instance settings.
-    $instance = FieldInstanceConfig::loadByName($entity_type, $bundle, $field_name);
-    $this->assertTrue($instance->getSetting('test_instance_setting') == $string, 'Field instance settings were found.');
+    // Assert field settings.
+    $field = FieldConfig::loadByName($entity_type, $bundle, $field_name);
+    $this->assertTrue($field->getSetting('test_field_setting') == $string, 'Field settings were found.');
   }
 
   /**
@@ -281,25 +281,25 @@ function testFieldPrefix() {
    * Tests that default value is correctly validated and saved.
    */
   function testDefaultValue() {
-    // Create a test field and instance.
+    // Create a test field storage and field.
     $field_name = 'test';
     entity_create('field_storage_config', array(
       'name' => $field_name,
       'entity_type' => 'node',
       'type' => 'test_field'
     ))->save();
-    $instance = entity_create('field_instance_config', array(
+    $field = entity_create('field_config', array(
       'field_name' => $field_name,
       'entity_type' => 'node',
       'bundle' => $this->type,
     ));
-    $instance->save();
+    $field->save();
 
     entity_get_form_display('node', $this->type, 'default')
       ->setComponent($field_name)
       ->save();
 
-    $admin_path = 'admin/structure/types/manage/' . $this->type . '/fields/' . $instance->id();
+    $admin_path = 'admin/structure/types/manage/' . $this->type . '/fields/' . $field->id();
     $element_id = "edit-default-value-input-$field_name-0-value";
     $element_name = "default_value_input[{$field_name}][0][value]";
     $this->drupalGet($admin_path);
@@ -314,8 +314,8 @@ function testDefaultValue() {
     $edit = array($element_name => '1');
     $this->drupalPostForm($admin_path, $edit, t('Save settings'));
     $this->assertText("Saved $field_name configuration", 'The form was successfully submitted.');
-    $instance = FieldInstanceConfig::loadByName('node', $this->type, $field_name);
-    $this->assertEqual($instance->default_value, array(array('value' => 1)), 'The default value was correctly saved.');
+    $field = FieldConfig::loadByName('node', $this->type, $field_name);
+    $this->assertEqual($field->default_value, array(array('value' => 1)), 'The default value was correctly saved.');
 
     // Check that the default value shows up in the form
     $this->drupalGet($admin_path);
@@ -325,18 +325,18 @@ function testDefaultValue() {
     $edit = array($element_name => '');
     $this->drupalPostForm(NULL, $edit, t('Save settings'));
     $this->assertText("Saved $field_name configuration", 'The form was successfully submitted.');
-    $instance = FieldInstanceConfig::loadByName('node', $this->type, $field_name);
-    $this->assertEqual($instance->default_value, NULL, 'The default value was correctly saved.');
+    $field = FieldConfig::loadByName('node', $this->type, $field_name);
+    $this->assertEqual($field->default_value, NULL, 'The default value was correctly saved.');
 
     // Check that the default widget is used when the field is hidden.
-    entity_get_form_display($instance->entity_type, $instance->bundle, 'default')
+    entity_get_form_display($field->entity_type, $field->bundle, 'default')
       ->removeComponent($field_name)->save();
     $this->drupalGet($admin_path);
     $this->assertFieldById($element_id, '', 'The default value widget was displayed when field is hidden.');
   }
 
   /**
-   * Tests that deletion removes fields and instances as expected.
+   * Tests that deletion removes field storages and fields as expected.
    */
   function testDeleteField() {
     // Create a new field.
@@ -352,7 +352,7 @@ function testDeleteField() {
     $type2 = $this->drupalCreateContentType(array('name' => $type_name2, 'type' => $type_name2));
     $type_name2 = $type2->type;
 
-    // Add an instance to the second node type.
+    // Add a field to the second node type.
     $bundle_path2 = 'admin/structure/types/manage/' . $type_name2;
     $edit2 = array(
       'fields[_add_existing_field][label]' => $this->field_label,
@@ -360,19 +360,19 @@ function testDeleteField() {
     );
     $this->fieldUIAddExistingField($bundle_path2, $edit2);
 
-    // Delete the first instance.
+    // Delete the first field.
     $this->fieldUIDeleteField($bundle_path1, "node.$this->type.$this->field_name", $this->field_label, $this->type);
 
-    // Check that the field instance was deleted.
-    $this->assertNull(FieldInstanceConfig::loadByName('node', $this->type, $this->field_name), 'Field instance was deleted.');
+    // Check that the field was deleted.
+    $this->assertNull(FieldConfig::loadByName('node', $this->type, $this->field_name), 'Field was deleted.');
     // Check that the field storage was not deleted
     $this->assertNotNull(FieldStorageConfig::loadByName('node', $this->field_name), 'Field storage was not deleted.');
 
-    // Delete the second instance.
+    // Delete the second field.
     $this->fieldUIDeleteField($bundle_path2, "node.$type_name2.$this->field_name", $this->field_label, $type_name2);
 
-    // Check that the field instance was deleted.
-    $this->assertNull(FieldInstanceConfig::loadByName('node', $type_name2, $this->field_name), 'Field instance was deleted.');
+    // Check that the field was deleted.
+    $this->assertNull(FieldConfig::loadByName('node', $type_name2, $this->field_name), 'Field was deleted.');
     // Check that the field storage was deleted too.
     $this->assertNull(FieldStorageConfig::loadByName('node', $this->field_name), 'Field storage was deleted.');
   }
@@ -418,7 +418,7 @@ function testLockedField() {
       'locked' => TRUE
     ));
     $field_storage->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => $this->type,
     ))->save();
@@ -450,31 +450,31 @@ function testHiddenFields() {
     $this->drupalGet($bundle_path);
     $this->assertFalse($this->xpath('//select[@id="edit-fields-add-new-field-type"]//option[@value="hidden_test_field"]'), "The 'add new field' select respects field types 'no_ui' property.");
 
-    // Create a field and an instance programmatically.
+    // Create a field storage and a field programmatically.
     $field_name = 'hidden_test_field';
     entity_create('field_storage_config', array(
       'name' => $field_name,
       'entity_type' => 'node',
       'type' => $field_name,
     ))->save();
-    $instance = array(
+    $field = array(
       'field_name' => $field_name,
       'bundle' => $this->type,
       'entity_type' => 'node',
       'label' => t('Hidden field'),
     );
-    entity_create('field_instance_config', $instance)->save();
+    entity_create('field_config', $field)->save();
     entity_get_form_display('node', $this->type, 'default')
       ->setComponent($field_name)
       ->save();
-    $this->assertTrue(entity_load('field_instance_config', 'node.' . $this->type . '.' . $field_name), format_string('An instance of the field %field was created programmatically.', array('%field' => $field_name)));
+    $this->assertTrue(entity_load('field_config', 'node.' . $this->type . '.' . $field_name), format_string('A field of the field storage %field was created programmatically.', array('%field' => $field_name)));
 
-    // Check that the newly added instance appears on the 'Manage Fields'
+    // Check that the newly added field appears on the 'Manage Fields'
     // screen.
     $this->drupalGet($bundle_path);
-    $this->assertFieldByXPath('//table[@id="field-overview"]//tr[@id="hidden-test-field"]//td[1]', $instance['label'], 'Field was created and appears in the overview page.');
+    $this->assertFieldByXPath('//table[@id="field-overview"]//tr[@id="hidden-test-field"]//td[1]', $field['label'], 'Field was created and appears in the overview page.');
 
-    // Check that the instance does not appear in the 're-use existing field' row
+    // Check that the field does not appear in the 're-use existing field' row
     // on other bundles.
     $bundle_path = 'admin/structure/types/manage/article/fields/';
     $this->drupalGet($bundle_path);
@@ -524,7 +524,7 @@ function testDuplicateFieldName() {
   }
 
   /**
-   * Tests that deletion removes fields and instances as expected for a term.
+   * Tests that deletion removes field storages and fields as expected for a term.
    */
   function testDeleteTaxonomyField() {
     // Create a new field.
@@ -538,8 +538,8 @@ function testDeleteTaxonomyField() {
     // Delete the field.
     $this->fieldUIDeleteField($bundle_path, "taxonomy_term.tags.$this->field_name", $this->field_label, 'Tags');
 
-    // Check that the field instance was deleted.
-    $this->assertNull(FieldInstanceConfig::loadByName('taxonomy_term', 'tags', $this->field_name), 'Field instance was deleted.');
+    // Check that the field was deleted.
+    $this->assertNull(FieldConfig::loadByName('taxonomy_term', 'tags', $this->field_name), 'Field was deleted.');
     // Check that the field storage was deleted too.
     $this->assertNull(FieldStorageConfig::loadByName('taxonomy_term', $this->field_name), 'Field storage was deleted.');
   }
@@ -555,7 +555,7 @@ function testHelpDescriptions() {
       'type' => 'image',
     ))->save();
 
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => 'field_image',
       'entity_type' => 'node',
       'label' => 'Image',
@@ -565,12 +565,12 @@ function testHelpDescriptions() {
     entity_get_form_display('node', 'article', 'default')->setComponent('field_image')->save();
 
     $edit = array(
-      'instance[description]' => '<strong>Test with an upload field.',
+      'field[description]' => '<strong>Test with an upload field.',
     );
     $this->drupalPostForm('admin/structure/types/manage/article/fields/node.article.field_image', $edit, t('Save settings'));
 
     $edit = array(
-      'instance[description]' => '<em>Test with a non upload field.',
+      'field[description]' => '<em>Test with a non upload field.',
     );
     $this->drupalPostForm('admin/structure/types/manage/article/fields/node.article.field_tags', $edit, t('Save settings'));
 
diff --git a/core/modules/file/config/schema/file.schema.yml b/core/modules/file/config/schema/file.schema.yml
index 08634dd..cd21f38 100644
--- a/core/modules/file/config/schema/file.schema.yml
+++ b/core/modules/file/config/schema/file.schema.yml
@@ -22,7 +22,7 @@ file.settings:
           type: path
           label: 'Directory'
 
-field.file.settings:
+field.file.storage_settings:
   type: base_entity_reference_field_settings
   label: 'File settings'
   mapping:
@@ -43,7 +43,7 @@ field.file.value:
     - type: string
       label: 'Value'
 
-base_file_field_instance_settings:
+base_file_field_field_settings:
   type: mapping
   mapping:
     handler:
@@ -59,8 +59,8 @@ base_file_field_instance_settings:
       type: string
       label: 'Maximum upload size'
 
-field.file.instance_settings:
-  type: base_file_field_instance_settings
+field.file.field_settings:
+  type: base_file_field_field_settings
   label: 'File settings'
   mapping:
     description_field:
diff --git a/core/modules/file/src/Plugin/Field/FieldType/FileItem.php b/core/modules/file/src/Plugin/Field/FieldType/FileItem.php
index 9f80a6f..509356b 100644
--- a/core/modules/file/src/Plugin/Field/FieldType/FileItem.php
+++ b/core/modules/file/src/Plugin/Field/FieldType/FileItem.php
@@ -30,25 +30,25 @@ class FileItem extends EntityReferenceItem {
   /**
    * {@inheritdoc}
    */
-  public static function defaultSettings() {
+  public static function defaultStorageSettings() {
     return array(
       'target_type' => 'file',
       'display_field' => FALSE,
       'display_default' => FALSE,
       'uri_scheme' => file_default_scheme(),
-    ) + parent::defaultSettings();
+    ) + parent::defaultStorageSettings();
   }
 
   /**
    * {@inheritdoc}
    */
-  public static function defaultInstanceSettings() {
+  public static function defaultFieldSettings() {
     return array(
       'file_extensions' => 'txt',
       'file_directory' => '',
       'max_filesize' => '',
       'description_field' => 0,
-    ) + parent::defaultInstanceSettings();
+    ) + parent::defaultFieldSettings();
   }
 
   /**
@@ -107,7 +107,7 @@ public static function propertyDefinitions(FieldStorageDefinitionInterface $fiel
   /**
    * {@inheritdoc}
    */
-  public function settingsForm(array &$form, FormStateInterface $form_state, $has_data) {
+  public function storageSettingsForm(array &$form, FormStateInterface $form_state, $has_data) {
     $element = array();
 
     $element['#attached']['library'][] = 'file/drupal.file';
@@ -149,7 +149,7 @@ public function settingsForm(array &$form, FormStateInterface $form_state, $has_
   /**
    * {@inheritdoc}
    */
-  public function instanceSettingsForm(array $form, FormStateInterface $form_state) {
+  public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
     $element = array();
     $settings = $this->getSettings();
 
diff --git a/core/modules/file/src/Tests/FileFieldDisplayTest.php b/core/modules/file/src/Tests/FileFieldDisplayTest.php
index 6a1798d..1b11125 100644
--- a/core/modules/file/src/Tests/FileFieldDisplayTest.php
+++ b/core/modules/file/src/Tests/FileFieldDisplayTest.php
@@ -22,16 +22,16 @@ class FileFieldDisplayTest extends FileFieldTestBase {
   function testNodeDisplay() {
     $field_name = strtolower($this->randomMachineName());
     $type_name = 'article';
-    $field_settings = array(
+    $field_storage_settings = array(
       'display_field' => '1',
       'display_default' => '1',
       'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
     );
-    $instance_settings = array(
+    $field_settings = array(
       'description_field' => '1',
     );
     $widget_settings = array();
-    $this->createFileField($field_name, 'node', $type_name, $field_settings, $instance_settings, $widget_settings);
+    $this->createFileField($field_name, 'node', $type_name, $field_storage_settings, $field_settings, $widget_settings);
 
     // Create a new node *without* the file field set, and check that the field
     // is not shown for each node display.
diff --git a/core/modules/file/src/Tests/FileFieldRSSContentTest.php b/core/modules/file/src/Tests/FileFieldRSSContentTest.php
index db265c2..5da2242 100644
--- a/core/modules/file/src/Tests/FileFieldRSSContentTest.php
+++ b/core/modules/file/src/Tests/FileFieldRSSContentTest.php
@@ -31,11 +31,11 @@ function testFileFieldRSSContent() {
       'display_field' => '1',
       'display_default' => '1',
     );
-    $instance_settings = array(
+    $field_settings = array(
       'description_field' => '1',
     );
     $widget_settings = array();
-    $this->createFileField($field_name, 'node', $type_name, $field_settings, $instance_settings, $widget_settings);
+    $this->createFileField($field_name, 'node', $type_name, $field_settings, $field_settings, $widget_settings);
 
     // RSS display must be added manually.
     $this->drupalGet("admin/structure/types/manage/$type_name/display");
diff --git a/core/modules/file/src/Tests/FileFieldTestBase.php b/core/modules/file/src/Tests/FileFieldTestBase.php
index fb9552a..388f6d8 100644
--- a/core/modules/file/src/Tests/FileFieldTestBase.php
+++ b/core/modules/file/src/Tests/FileFieldTestBase.php
@@ -8,7 +8,7 @@
 namespace Drupal\file\Tests;
 
 use Drupal\field\Entity\FieldStorageConfig;
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 use Drupal\file\FileInterface;
 use Drupal\simpletest\WebTestBase;
 
@@ -64,12 +64,12 @@ function getLastFileId() {
    *   The bundle that this field will be added to.
    * @param $storage_settings
    *   A list of field storage settings that will be added to the defaults.
-   * @param $instance_settings
+   * @param $field_settings
    *   A list of instance settings that will be added to the instance defaults.
    * @param $widget_settings
    *   A list of widget settings that will be added to the widget defaults.
    */
-  function createFileField($name, $entity_type, $bundle, $storage_settings = array(), $instance_settings = array(), $widget_settings = array()) {
+  function createFileField($name, $entity_type, $bundle, $storage_settings = array(), $field_settings = array(), $widget_settings = array()) {
     $field_storage = entity_create('field_storage_config', array(
       'entity_type' => $entity_type,
       'name' => $name,
@@ -79,7 +79,7 @@ function createFileField($name, $entity_type, $bundle, $storage_settings = array
     ));
     $field_storage->save();
 
-    $this->attachFileField($name, $entity_type, $bundle, $instance_settings, $widget_settings);
+    $this->attachFileField($name, $entity_type, $bundle, $field_settings, $widget_settings);
     return $field_storage;
   }
 
@@ -94,22 +94,19 @@ function createFileField($name, $entity_type, $bundle, $storage_settings = array
    *   The bundle this field will be added to.
    * @param $field_settings
    *   A list of field settings that will be added to the defaults.
-   * @param $instance_settings
-   *   A list of instance settings that will be added to the instance defaults.
    * @param $widget_settings
    *   A list of widget settings that will be added to the widget defaults.
    */
-  function attachFileField($name, $entity_type, $bundle, $instance_settings = array(), $widget_settings = array()) {
-    $instance = array(
+  function attachFileField($name, $entity_type, $bundle, $field_settings = array(), $widget_settings = array()) {
+    $field = array(
       'field_name' => $name,
       'label' => $name,
       'entity_type' => $entity_type,
       'bundle' => $bundle,
-      'required' => !empty($instance_settings['required']),
-      'settings' => array(),
+      'required' => !empty($field_settings['required']),
+      'settings' => $field_settings,
     );
-    $instance['settings'] = array_merge($instance['settings'], $instance_settings);
-    entity_create('field_instance_config', $instance)->save();
+    entity_create('field_config', $field)->save();
 
     entity_get_form_display($entity_type, $bundle, 'default')
       ->setComponent($name, array(
@@ -122,10 +119,10 @@ function attachFileField($name, $entity_type, $bundle, $instance_settings = arra
   /**
    * Updates an existing file field with new settings.
    */
-  function updateFileField($name, $type_name, $instance_settings = array(), $widget_settings = array()) {
-    $instance = FieldInstanceConfig::loadByName('node', $type_name, $name);
-    $instance->settings = array_merge($instance->settings, $instance_settings);
-    $instance->save();
+  function updateFileField($name, $type_name, $field_settings = array(), $widget_settings = array()) {
+    $field = FieldConfig::loadByName('node', $type_name, $name);
+    $field->settings = array_merge($field->settings, $field_settings);
+    $field->save();
 
     entity_get_form_display('node', $type_name, 'default')
       ->setComponent($name, array(
diff --git a/core/modules/file/src/Tests/FileFieldValidateTest.php b/core/modules/file/src/Tests/FileFieldValidateTest.php
index 182ffad..bc910e0 100644
--- a/core/modules/file/src/Tests/FileFieldValidateTest.php
+++ b/core/modules/file/src/Tests/FileFieldValidateTest.php
@@ -8,7 +8,7 @@
 namespace Drupal\file\Tests;
 
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 
 /**
  * Tests validation functions such as file type, max file size, max size per
@@ -26,8 +26,8 @@ class FileFieldValidateTest extends FileFieldTestBase {
   function testRequired() {
     $type_name = 'article';
     $field_name = strtolower($this->randomMachineName());
-    $field = $this->createFileField($field_name, 'node', $type_name, array(), array('required' => '1'));
-    $instance = FieldInstanceConfig::loadByName('node', $type_name, $field_name);
+    $storage = $this->createFileField($field_name, 'node', $type_name, array(), array('required' => '1'));
+    $field = FieldConfig::loadByName('node', $type_name, $field_name);
 
     $test_file = $this->getTestFile('text');
 
@@ -35,7 +35,7 @@ function testRequired() {
     $edit = array();
     $edit['title[0][value]'] = $this->randomMachineName();
     $this->drupalPostForm('node/add/' . $type_name, $edit, t('Save and publish'));
-    $this->assertRaw(t('!title field is required.', array('!title' => $instance->getLabel())), 'Node save failed when required file field was empty.');
+    $this->assertRaw(t('!title field is required.', array('!title' => $field->getLabel())), 'Node save failed when required file field was empty.');
 
     // Create a new node with the uploaded file.
     $nid = $this->uploadNodeFile($test_file, $field_name, $type_name);
@@ -48,14 +48,14 @@ function testRequired() {
     $this->assertFileEntryExists($node_file, 'File entry exists after uploading to the required field.');
 
     // Try again with a multiple value field.
-    $field->delete();
+    $storage->delete();
     $this->createFileField($field_name, 'node', $type_name, array('cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED), array('required' => '1'));
 
     // Try to post a new node without uploading a file in the multivalue field.
     $edit = array();
     $edit['title[0][value]'] = $this->randomMachineName();
     $this->drupalPostForm('node/add/' . $type_name, $edit, t('Save and publish'));
-    $this->assertRaw(t('!title field is required.', array('!title' => $instance->getLabel())), 'Node save failed when required multiple value file field was empty.');
+    $this->assertRaw(t('!title field is required.', array('!title' => $field->getLabel())), 'Node save failed when required multiple value file field was empty.');
 
     // Create a new node with the uploaded file into the multivalue field.
     $nid = $this->uploadNodeFile($test_file, $field_name, $type_name);
diff --git a/core/modules/file/src/Tests/FileFieldWidgetTest.php b/core/modules/file/src/Tests/FileFieldWidgetTest.php
index 9ae0940..7b1aa28 100644
--- a/core/modules/file/src/Tests/FileFieldWidgetTest.php
+++ b/core/modules/file/src/Tests/FileFieldWidgetTest.php
@@ -8,7 +8,7 @@
 namespace Drupal\file\Tests;
 
 use Drupal\comment\Entity\Comment;
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 
 /**
  * Tests the file field widget, single and multi-valued, with and without AJAX,
@@ -206,13 +206,13 @@ function testPrivateFileSetting() {
     $type_name = 'article';
     $field_name = strtolower($this->randomMachineName());
     $this->createFileField($field_name, 'node', $type_name);
-    $instance = FieldInstanceConfig::loadByName('node', $type_name, $field_name);
+    $field = FieldConfig::loadByName('node', $type_name, $field_name);
 
     $test_file = $this->getTestFile('text');
 
     // Change the field setting to make its files private, and upload a file.
     $edit = array('field[settings][uri_scheme]' => 'private');
-    $this->drupalPostForm("admin/structure/types/manage/$type_name/fields/$instance->id/storage", $edit, t('Save field settings'));
+    $this->drupalPostForm("admin/structure/types/manage/$type_name/fields/$field->id/storage", $edit, t('Save field settings'));
     $nid = $this->uploadNodeFile($test_file, $field_name, $type_name);
     $node = node_load($nid, TRUE);
     $node_file = file_load($node->{$field_name}->target_id);
@@ -224,12 +224,12 @@ function testPrivateFileSetting() {
 
     // Ensure we can't change 'uri_scheme' field settings while there are some
     // entities with uploaded files.
-    $this->drupalGet("admin/structure/types/manage/$type_name/fields/$instance->id/storage");
+    $this->drupalGet("admin/structure/types/manage/$type_name/fields/$field->id/storage");
     $this->assertFieldByXpath('//input[@id="edit-field-settings-uri-scheme-public" and @disabled="disabled"]', 'public', 'Upload destination setting disabled.');
 
     // Delete node and confirm that setting could be changed.
     $node->delete();
-    $this->drupalGet("admin/structure/types/manage/$type_name/fields/$instance->id/storage");
+    $this->drupalGet("admin/structure/types/manage/$type_name/fields/$field->id/storage");
     $this->assertFieldByXpath('//input[@id="edit-field-settings-uri-scheme-public" and not(@disabled)]', 'public', 'Upload destination setting enabled.');
   }
 
diff --git a/core/modules/file/src/Tests/FileItemTest.php b/core/modules/file/src/Tests/FileItemTest.php
index 82a2ceb..ba79ea1 100644
--- a/core/modules/file/src/Tests/FileItemTest.php
+++ b/core/modules/file/src/Tests/FileItemTest.php
@@ -45,7 +45,7 @@ protected function setUp() {
       'type' => 'file',
       'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => 'file_test',
       'bundle' => 'entity_test',
diff --git a/core/modules/forum/config/install/field.instance.taxonomy_term.forums.forum_container.yml b/core/modules/forum/config/install/field.field.taxonomy_term.forums.forum_container.yml
similarity index 100%
rename from core/modules/forum/config/install/field.instance.taxonomy_term.forums.forum_container.yml
rename to core/modules/forum/config/install/field.field.taxonomy_term.forums.forum_container.yml
diff --git a/core/modules/forum/forum.install b/core/modules/forum/forum.install
index 2ebc79f..6af734c 100644
--- a/core/modules/forum/forum.install
+++ b/core/modules/forum/forum.install
@@ -6,7 +6,7 @@
  */
 
 use Drupal\comment\Plugin\Field\FieldType\CommentItemInterface;
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\comment\CommentManagerInterface;
 
@@ -51,7 +51,7 @@ function forum_install() {
       $term->save();
 
       // Create the instance on the bundle.
-      entity_create('field_instance_config', array(
+      entity_create('field_config', array(
         'field_name' => 'taxonomy_forums',
         'entity_type' => 'node',
         'label' => 'Forums',
@@ -91,9 +91,9 @@ function forum_install() {
       Drupal::service('comment.manager')->addDefaultField('node', 'forum', 'comment_forum', CommentItemInterface::OPEN, 'comment_forum');
 
       // Add here because we don't have param in addDefaultField function.
-      $instance = FieldInstanceConfig::loadByName('node', 'forum', 'comment_forum');
-      $instance->settings['default_mode'] = CommentManagerInterface::COMMENT_MODE_FLAT;
-      $instance->save();
+      $field = FieldConfig::loadByName('node', 'forum', 'comment_forum');
+      $field->settings['default_mode'] = CommentManagerInterface::COMMENT_MODE_FLAT;
+      $field->save();
 
       // Hide label for comment field.
       entity_get_display('node', 'forum', 'default')
diff --git a/core/modules/hal/src/Tests/NormalizerTestBase.php b/core/modules/hal/src/Tests/NormalizerTestBase.php
index 4ef6037..48c2f02 100644
--- a/core/modules/hal/src/Tests/NormalizerTestBase.php
+++ b/core/modules/hal/src/Tests/NormalizerTestBase.php
@@ -86,7 +86,7 @@ protected function setUp() {
       'entity_type' => 'entity_test',
       'type' => 'text',
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => 'field_test_text',
       'bundle' => 'entity_test',
@@ -99,7 +99,7 @@ protected function setUp() {
       'entity_type' => 'entity_test',
       'type' => 'text',
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => 'field_test_translatable_text',
       'bundle' => 'entity_test',
@@ -115,7 +115,7 @@ protected function setUp() {
         'target_type' => 'entity_test',
       ),
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => 'field_test_entity_reference',
       'bundle' => 'entity_test',
diff --git a/core/modules/image/config/schema/image.schema.yml b/core/modules/image/config/schema/image.schema.yml
index 4f1fc79..84ebcdc 100644
--- a/core/modules/image/config/schema/image.schema.yml
+++ b/core/modules/image/config/schema/image.schema.yml
@@ -72,7 +72,7 @@ image.settings:
       type: boolean
       label: 'Suppress the itok query string for image derivatives'
 
-field.image.settings:
+field.image.storage_settings:
   type: field.file.settings
   label: 'Image settings'
   mapping:
@@ -80,8 +80,8 @@ field.image.settings:
       type: field_default_image
       label: 'Default value'
 
-field.image.instance_settings:
-  type: base_file_field_instance_settings
+field.image.field_settings:
+  type: base_file_field_field_settings
   label: 'Image settings'
   mapping:
     max_resolution:
diff --git a/core/modules/image/image.module b/core/modules/image/image.module
index a6ce171..42639e5 100644
--- a/core/modules/image/image.module
+++ b/core/modules/image/image.module
@@ -9,7 +9,7 @@
 use Drupal\Core\Routing\RouteMatchInterface;
 use Drupal\file\Entity\File;
 use Drupal\field\FieldStorageConfigInterface;
-use Drupal\field\FieldInstanceConfigInterface;
+use Drupal\field\FieldConfigInterface;
 
 /**
  * Image style constant for user presets in the database.
@@ -344,13 +344,13 @@ function image_filter_keyword($value, $current_pixels, $new_pixels) {
 function image_entity_presave(EntityInterface $entity) {
   $field_storage = FALSE;
   $entity_type_id = $entity->getEntityTypeId();
-  if ($entity_type_id == 'field_instance_config') {
+  if ($entity_type_id == 'field_config') {
     $field_storage = $entity->getFieldStorageDefinition();
-    $default_settings = \Drupal::service('plugin.manager.field.field_type')->getDefaultInstanceSettings('image');
+    $default_settings = \Drupal::service('plugin.manager.field.field_type')->getDefaultFieldSettings('image');
   }
   elseif ($entity_type_id == 'field_storage_config') {
     $field_storage = $entity;
-    $default_settings = \Drupal::service('plugin.manager.field.field_type')->getDefaultSettings('image');
+    $default_settings = \Drupal::service('plugin.manager.field.field_type')->getDefaultStorageSettings('image');
   }
   // Exit, if not saving an image field or image field instance entity.
   if (!$field_storage || $field_storage->type != 'image') {
@@ -421,9 +421,9 @@ function image_field_storage_config_update(FieldStorageConfigInterface $field_st
 }
 
 /**
- * Implements hook_ENTITY_TYPE_update() for 'field_instance_config'.
+ * Implements hook_ENTITY_TYPE_update() for 'field_config'.
  */
-function image_field_instance_config_update(FieldInstanceConfigInterface $field_instance) {
+function image_field_config_update(FieldConfigInterface $field_instance) {
   $field_storage = $field_instance->getFieldStorageDefinition();
   if ($field_storage->type != 'image') {
     // Only act on image fields.
@@ -475,9 +475,9 @@ function image_field_storage_config_delete(FieldStorageConfigInterface $field) {
 }
 
 /**
- * Implements hook_ENTITY_TYPE_delete() for 'field_instance_config'.
+ * Implements hook_ENTITY_TYPE_delete() for 'field_config'.
  */
-function image_field_instance_config_delete(FieldInstanceConfigInterface $field_instance) {
+function image_field_config_delete(FieldConfigInterface $field_instance) {
   $field_storage = $field_instance->getFieldStorageDefinition();
   if ($field_storage->type != 'image') {
     // Only act on image fields.
diff --git a/core/modules/image/src/Plugin/Field/FieldFormatter/ImageFormatterBase.php b/core/modules/image/src/Plugin/Field/FieldFormatter/ImageFormatterBase.php
index e99d8eb..62bef76 100644
--- a/core/modules/image/src/Plugin/Field/FieldFormatter/ImageFormatterBase.php
+++ b/core/modules/image/src/Plugin/Field/FieldFormatter/ImageFormatterBase.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\image\Plugin\Field\FieldFormatter;
 
-use Drupal\field\FieldInstanceConfigInterface;
+use Drupal\field\FieldConfigInterface;
 use Drupal\file\Plugin\Field\FieldFormatter\FileFormatterBase;
 
 /**
@@ -28,7 +28,7 @@ public function prepareView(array $entities_items) {
         $default_image = $this->getFieldSetting('default_image');
         // If we are dealing with a configurable field, look in both
         // instance-level and field-level settings.
-        if (empty($default_image['fid']) && $this->fieldDefinition instanceof FieldInstanceConfigInterface) {
+        if (empty($default_image['fid']) && $this->fieldDefinition instanceof FieldConfigInterface) {
           $default_image = $this->fieldDefinition->getFieldStorageDefinition()->getSetting('default_image');
         }
 
diff --git a/core/modules/image/src/Plugin/Field/FieldType/ImageItem.php b/core/modules/image/src/Plugin/Field/FieldType/ImageItem.php
index 0cbb89a..47018d8 100644
--- a/core/modules/image/src/Plugin/Field/FieldType/ImageItem.php
+++ b/core/modules/image/src/Plugin/Field/FieldType/ImageItem.php
@@ -45,7 +45,7 @@ class ImageItem extends FileItem {
   /**
    * {@inheritdoc}
    */
-  public static function defaultSettings() {
+  public static function defaultStorageSettings() {
     return array(
       'default_image' => array(
         'fid' => NULL,
@@ -54,13 +54,13 @@ public static function defaultSettings() {
         'width' => NULL,
         'height' => NULL,
       ),
-    ) + parent::defaultSettings();
+    ) + parent::defaultStorageSettings();
   }
 
   /**
    * {@inheritdoc}
    */
-  public static function defaultInstanceSettings() {
+  public static function defaultFieldSettings() {
     $settings = array(
       'file_extensions' => 'png gif jpg jpeg',
       'alt_field' => 0,
@@ -76,7 +76,7 @@ public static function defaultInstanceSettings() {
         'width' => NULL,
         'height' => NULL,
       ),
-    ) + parent::defaultInstanceSettings();
+    ) + parent::defaultFieldSettings();
 
     unset($settings['description_field']);
     return $settings;
@@ -153,7 +153,7 @@ public static function propertyDefinitions(FieldStorageDefinitionInterface $fiel
   /**
    * {@inheritdoc}
    */
-  public function settingsForm(array &$form, FormStateInterface $form_state, $has_data) {
+  public function storageSettingsForm(array &$form, FormStateInterface $form_state, $has_data) {
     $element = array();
 
     // We need the field-level 'default_image' setting, and $this->getSettings()
@@ -183,9 +183,9 @@ public function settingsForm(array &$form, FormStateInterface $form_state, $has_
   /**
    * {@inheritdoc}
    */
-  public function instanceSettingsForm(array $form, FormStateInterface $form_state) {
+  public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
     // Get base form from FileItem::instanceSettingsForm().
-    $element = parent::instanceSettingsForm($form, $form_state);
+    $element = parent::fieldSettingsForm($form, $form_state);
 
     $settings = $this->getSettings();
 
diff --git a/core/modules/image/src/Tests/ImageFieldDefaultImagesTest.php b/core/modules/image/src/Tests/ImageFieldDefaultImagesTest.php
index 38fc142..3d1f560 100644
--- a/core/modules/image/src/Tests/ImageFieldDefaultImagesTest.php
+++ b/core/modules/image/src/Tests/ImageFieldDefaultImagesTest.php
@@ -8,7 +8,7 @@
 namespace Drupal\image\Tests;
 
 /**
- * Tests setting up default images both to the field and field instance.
+ * Tests setting up default images both to the field and field field.
  *
  * @group image
  */
@@ -22,7 +22,7 @@ class ImageFieldDefaultImagesTest extends ImageFieldTestBase {
   public static $modules = array('field_ui');
 
   /**
-   * Tests CRUD for fields and fields instances with default images.
+   * Tests CRUD for fields and fields fields with default images.
    */
   public function testDefaultImages() {
     // Create files to use as the default images.
@@ -36,13 +36,13 @@ public function testDefaultImages() {
       $file->save();
     }
     $default_images = array();
-    foreach (array('field', 'instance', 'instance2', 'field_new', 'instance_new') as $image_target) {
+    foreach (array('field', 'field', 'field2', 'field_new', 'field_new') as $image_target) {
       $file = entity_create('file', (array) array_pop($files));
       $file->save();
       $default_images[$image_target] = $file;
     }
 
-    // Create an image field and add an instance to the article content type.
+    // Create an image field and add an field to the article content type.
     $field_name = strtolower($this->randomMachineName());
     $storage_settings['default_image'] = array(
       'fid' => $default_images['field']->id(),
@@ -51,8 +51,8 @@ public function testDefaultImages() {
       'width' => 0,
       'height' => 0,
     );
-    $instance_settings['default_image'] = array(
-      'fid' => $default_images['instance']->id(),
+    $field_settings['default_image'] = array(
+      'fid' => $default_images['field']->id(),
       'alt' => '',
       'title' => '',
       'width' => 0,
@@ -61,15 +61,15 @@ public function testDefaultImages() {
     $widget_settings = array(
       'preview_image_style' => 'medium',
     );
-    $instance = $this->createImageField($field_name, 'article', $storage_settings, $instance_settings, $widget_settings);
+    $field = $this->createImageField($field_name, 'article', $storage_settings, $field_settings, $widget_settings);
 
-    // The instance default image id should be 2.
-    $this->assertEqual($instance->getSetting('default_image')['fid'], $default_images['instance']->id());
+    // The field default image id should be 2.
+    $this->assertEqual($field->getSetting('default_image')['fid'], $default_images['field']->id());
 
-    // Also test \Drupal\field\Entity\FieldInstanceConfig::getSetting().
-    $this->assertEqual($instance->getSettings()['default_image']['fid'], $default_images['instance']->id());
+    // Also test \Drupal\field\Entity\FieldConfig::getSetting().
+    $this->assertEqual($field->getSettings()['default_image']['fid'], $default_images['field']->id());
 
-    $field_storage = $instance->getFieldStorageDefinition();
+    $field_storage = $field->getFieldStorageDefinition();
 
     // The field default image id should be 1.
     $this->assertEqual($field_storage->getSetting('default_image')['fid'], $default_images['field']->id());
@@ -77,15 +77,15 @@ public function testDefaultImages() {
     // Also test \Drupal\field\Entity\FieldStorageConfig::getSettings().
     $this->assertEqual($field_storage->getSettings()['default_image']['fid'], $default_images['field']->id());
 
-    // Add another instance with another default image to the page content type.
-    $instance2 = entity_create('field_instance_config', array(
+    // Add another field with another default image to the page content type.
+    $field2 = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'page',
-      'label' => $instance->label(),
-      'required' => $instance->required,
+      'label' => $field->label(),
+      'required' => $field->required,
       'settings' => array(
         'default_image' => array(
-          'fid' => $default_images['instance2']->id(),
+          'fid' => $default_images['field2']->id(),
           'alt' => '',
           'title' => '',
           'width' => 0,
@@ -93,9 +93,9 @@ public function testDefaultImages() {
         ),
       ),
     ));
-    $instance2->save();
+    $field2->save();
 
-    $widget_settings = entity_get_form_display('node', $instance->bundle, 'default')->getComponent($field_name);
+    $widget_settings = entity_get_form_display('node', $field->bundle, 'default')->getComponent($field_name);
     entity_get_form_display('node', 'page', 'default')
       ->setComponent($field_name, $widget_settings)
       ->save();
@@ -104,8 +104,8 @@ public function testDefaultImages() {
       ->save();
 
     // Confirm the defaults are present on the article field settings form.
-    $instance_id = $instance->id();
-    $this->drupalGet("admin/structure/types/manage/article/fields/$instance_id/storage");
+    $field_id = $field->id();
+    $this->drupalGet("admin/structure/types/manage/article/fields/$field_id/storage");
     $this->assertFieldByXpath(
       '//input[@name="field[settings][default_image][fid][fids]"]',
       $default_images['field']->id(),
@@ -115,18 +115,18 @@ public function testDefaultImages() {
       )
     );
     // Confirm the defaults are present on the article field edit form.
-    $this->drupalGet("admin/structure/types/manage/article/fields/$instance_id");
+    $this->drupalGet("admin/structure/types/manage/article/fields/$field_id");
     $this->assertFieldByXpath(
-      '//input[@name="instance[settings][default_image][fid][fids]"]',
-      $default_images['instance']->id(),
+      '//input[@name="field[settings][default_image][fid][fids]"]',
+      $default_images['field']->id(),
       format_string(
-        'Article image field instance default equals expected file ID of @fid.',
-        array('@fid' => $default_images['instance']->id())
+        'Article image field field default equals expected file ID of @fid.',
+        array('@fid' => $default_images['field']->id())
       )
     );
 
     // Confirm the defaults are present on the page field settings form.
-    $this->drupalGet("admin/structure/types/manage/page/fields/$instance_id/storage");
+    $this->drupalGet("admin/structure/types/manage/page/fields/$field_id/storage");
     $this->assertFieldByXpath(
       '//input[@name="field[settings][default_image][fid][fids]"]',
       $default_images['field']->id(),
@@ -136,14 +136,14 @@ public function testDefaultImages() {
       )
     );
     // Confirm the defaults are present on the page field edit form.
-    $instance2_id = $instance2->id();
-    $this->drupalGet("admin/structure/types/manage/page/fields/$instance2_id");
+    $field2_id = $field2->id();
+    $this->drupalGet("admin/structure/types/manage/page/fields/$field2_id");
     $this->assertFieldByXpath(
-      '//input[@name="instance[settings][default_image][fid][fids]"]',
-      $default_images['instance2']->id(),
+      '//input[@name="field[settings][default_image][fid][fids]"]',
+      $default_images['field2']->id(),
       format_string(
-        'Page image field instance default equals expected file ID of @fid.',
-        array('@fid' => $default_images['instance2']->id())
+        'Page image field field default equals expected file ID of @fid.',
+        array('@fid' => $default_images['field2']->id())
       )
     );
 
@@ -152,10 +152,10 @@ public function testDefaultImages() {
     $article_built = $this->drupalBuildEntityView($article);
     $this->assertEqual(
       $article_built[$field_name]['#items'][0]->target_id,
-      $default_images['instance']->id(),
+      $default_images['field']->id(),
       format_string(
         'A new article node without an image has the expected default image file ID of @fid.',
-        array('@fid' => $default_images['instance']->id())
+        array('@fid' => $default_images['field']->id())
       )
     );
 
@@ -164,10 +164,10 @@ public function testDefaultImages() {
     $page_built = $this->drupalBuildEntityView($page);
     $this->assertEqual(
       $page_built[$field_name]['#items'][0]->target_id,
-      $default_images['instance2']->id(),
+      $default_images['field2']->id(),
       format_string(
         'A new page node without an image has the expected default image file ID of @fid.',
-        array('@fid' => $default_images['instance2']->id())
+        array('@fid' => $default_images['field2']->id())
       )
     );
 
@@ -176,7 +176,7 @@ public function testDefaultImages() {
     $field_storage->save();
 
     // Confirm that the new default is used on the article field settings form.
-    $this->drupalGet("admin/structure/types/manage/article/fields/$instance_id/storage");
+    $this->drupalGet("admin/structure/types/manage/article/fields/$field_id/storage");
     $this->assertFieldByXpath(
       '//input[@name="field[settings][default_image][fid][fids]"]',
       $default_images['field_new']->id(),
@@ -186,39 +186,39 @@ public function testDefaultImages() {
       )
     );
 
-    // Reload the nodes and confirm the field instance defaults are used.
+    // Reload the nodes and confirm the field field defaults are used.
     $article_built = $this->drupalBuildEntityView($article = node_load($article->id(), TRUE));
     $page_built = $this->drupalBuildEntityView($page = node_load($page->id(), TRUE));
     $this->assertEqual(
       $article_built[$field_name]['#items'][0]->target_id,
-      $default_images['instance']->id(),
+      $default_images['field']->id(),
       format_string(
         'An existing article node without an image has the expected default image file ID of @fid.',
-        array('@fid' => $default_images['instance']->id())
+        array('@fid' => $default_images['field']->id())
       )
     );
     $this->assertEqual(
       $page_built[$field_name]['#items'][0]->target_id,
-      $default_images['instance2']->id(),
+      $default_images['field2']->id(),
       format_string(
         'An existing page node without an image has the expected default image file ID of @fid.',
-        array('@fid' => $default_images['instance2']->id())
+        array('@fid' => $default_images['field2']->id())
       )
     );
 
-    // Upload a new default for the article's field instance.
-    $instance->settings['default_image']['fid'] = $default_images['instance_new']->id();
-    $instance->save();
+    // Upload a new default for the article's field field.
+    $field->settings['default_image']['fid'] = $default_images['field_new']->id();
+    $field->save();
 
-    // Confirm the new field instance default is used on the article field
+    // Confirm the new field field default is used on the article field
     // admin form.
-    $this->drupalGet("admin/structure/types/manage/article/fields/$instance_id");
+    $this->drupalGet("admin/structure/types/manage/article/fields/$field_id");
     $this->assertFieldByXpath(
-      '//input[@name="instance[settings][default_image][fid][fids]"]',
-      $default_images['instance_new']->id(),
+      '//input[@name="field[settings][default_image][fid][fids]"]',
+      $default_images['field_new']->id(),
       format_string(
-        'Updated article image field instance default equals expected file ID of @fid.',
-        array('@fid' => $default_images['instance_new']->id())
+        'Updated article image field field default equals expected file ID of @fid.',
+        array('@fid' => $default_images['field_new']->id())
       )
     );
 
@@ -229,38 +229,38 @@ public function testDefaultImages() {
     // Confirm the article uses the new default.
     $this->assertEqual(
       $article_built[$field_name]['#items'][0]->target_id,
-      $default_images['instance_new']->id(),
+      $default_images['field_new']->id(),
       format_string(
         'An existing article node without an image has the expected default image file ID of @fid.',
-        array('@fid' => $default_images['instance_new']->id())
+        array('@fid' => $default_images['field_new']->id())
       )
     );
     // Confirm the page remains unchanged.
     $this->assertEqual(
       $page_built[$field_name]['#items'][0]->target_id,
-      $default_images['instance2']->id(),
+      $default_images['field2']->id(),
       format_string(
         'An existing page node without an image has the expected default image file ID of @fid.',
-        array('@fid' => $default_images['instance2']->id())
+        array('@fid' => $default_images['field2']->id())
       )
     );
 
-    // Remove the instance default from articles.
-    $instance->settings['default_image']['fid'] = 0;
-    $instance->save();
+    // Remove the field default from articles.
+    $field->settings['default_image']['fid'] = 0;
+    $field->save();
 
-    // Confirm the article field instance default has been removed.
-    $this->drupalGet("admin/structure/types/manage/article/fields/$instance_id");
+    // Confirm the article field field default has been removed.
+    $this->drupalGet("admin/structure/types/manage/article/fields/$field_id");
     $this->assertFieldByXpath(
-      '//input[@name="instance[settings][default_image][fid][fids]"]',
+      '//input[@name="field[settings][default_image][fid][fids]"]',
       '',
-      'Updated article image field instance default has been successfully removed.'
+      'Updated article image field field default has been successfully removed.'
     );
 
     // Reload the nodes.
     $article_built = $this->drupalBuildEntityView($article = node_load($article->id(), TRUE));
     $page_built = $this->drupalBuildEntityView($page = node_load($page->id(), TRUE));
-    // Confirm the article uses the new field (not instance) default.
+    // Confirm the article uses the new field (not field) default.
     $this->assertEqual(
       $article_built[$field_name]['#items'][0]->target_id,
       $default_images['field_new']->id(),
@@ -272,20 +272,20 @@ public function testDefaultImages() {
     // Confirm the page remains unchanged.
     $this->assertEqual(
       $page_built[$field_name]['#items'][0]->target_id,
-      $default_images['instance2']->id(),
+      $default_images['field2']->id(),
       format_string(
         'An existing page node without an image has the expected default image file ID of @fid.',
-        array('@fid' => $default_images['instance2']->id())
+        array('@fid' => $default_images['field2']->id())
       )
     );
 
     $non_image = $this->drupalGetTestFiles('text');
-    $this->drupalPostForm(NULL, array('files[instance_settings_default_image_fid]' => drupal_realpath($non_image[0]->uri)), t("Upload"));
+    $this->drupalPostForm(NULL, array('files[field_settings_default_image_fid]' => drupal_realpath($non_image[0]->uri)), t("Upload"));
     $this->assertText(t('The specified file text-0.txt could not be uploaded. Only files with the following extensions are allowed: png gif jpg jpeg.'), 'Non-image file cannot be used as default image.');
   }
 
   /**
-   * Tests image field and instance having an invalid default image.
+   * Tests image field and field having an invalid default image.
    */
   public function testInvalidDefaultImage() {
     $field_storage = entity_create('field_storage_config', array(
@@ -303,7 +303,7 @@ public function testInvalidDefaultImage() {
     // The non-existent default image should not be saved.
     $this->assertNull($settings['default_image']['fid']);
 
-    $field_instance = entity_create('field_instance_config',  array(
+    $field = entity_create('field_config',  array(
       'field_storage' => $field_storage,
       'bundle' => 'page',
       'label' => $this->randomMachineName(),
@@ -313,8 +313,8 @@ public function testInvalidDefaultImage() {
         )
       ),
     ));
-    $field_instance->save();
-    $settings = $field_instance->getSettings();
+    $field->save();
+    $settings = $field->getSettings();
     // The non-existent default image should not be saved.
     $this->assertNull($settings['default_image']['fid']);
   }
diff --git a/core/modules/image/src/Tests/ImageFieldDisplayTest.php b/core/modules/image/src/Tests/ImageFieldDisplayTest.php
index 24330bf..4c632c1 100644
--- a/core/modules/image/src/Tests/ImageFieldDisplayTest.php
+++ b/core/modules/image/src/Tests/ImageFieldDisplayTest.php
@@ -168,7 +168,7 @@ function testImageFieldSettings() {
     $test_image = current($this->drupalGetTestFiles('image'));
     list(, $test_image_extension) = explode('.', $test_image->filename);
     $field_name = strtolower($this->randomMachineName());
-    $instance_settings = array(
+    $field_settings = array(
       'alt_field' => 1,
       'file_extensions' => $test_image_extension,
       'max_filesize' => '50 KB',
@@ -180,7 +180,7 @@ function testImageFieldSettings() {
     $widget_settings = array(
       'preview_image_style' => 'medium',
     );
-    $instance = $this->createImageField($field_name, 'article', array(), $instance_settings, $widget_settings);
+    $field = $this->createImageField($field_name, 'article', array(), $field_settings, $widget_settings);
 
     $this->drupalGet('node/add/article');
     $this->assertText(t('50 KB limit.'), 'Image widget max file size is displayed on article form.');
@@ -230,7 +230,7 @@ function testImageFieldSettings() {
       $field_name . '[0][title]' => $this->randomMachineName($test_size),
     );
     $this->drupalPostForm('node/' . $nid . '/edit', $edit, t('Save and keep published'));
-    $schema = $instance->getFieldStorageDefinition()->getSchema();
+    $schema = $field->getFieldStorageDefinition()->getSchema();
     $this->assertRaw(t('Alternate text cannot be longer than %max characters but is currently %length characters long.', array(
       '%max' => $schema['columns']['alt']['length'],
       '%length' => $test_size,
diff --git a/core/modules/image/src/Tests/ImageFieldTestBase.php b/core/modules/image/src/Tests/ImageFieldTestBase.php
index 561737a..280876e 100644
--- a/core/modules/image/src/Tests/ImageFieldTestBase.php
+++ b/core/modules/image/src/Tests/ImageFieldTestBase.php
@@ -58,12 +58,12 @@ protected function setUp() {
    *   The node type that this field will be added to.
    * @param $storage_settings
    *   A list of field storage settings that will be added to the defaults.
-   * @param $instance_settings
+   * @param $field_settings
    *   A list of instance settings that will be added to the instance defaults.
    * @param $widget_settings
    *   A list of widget settings that will be added to the widget defaults.
    */
-  function createImageField($name, $type_name, $storage_settings = array(), $instance_settings = array(), $widget_settings = array()) {
+  function createImageField($name, $type_name, $storage_settings = array(), $field_settings = array(), $widget_settings = array()) {
     entity_create('field_storage_config', array(
       'name' => $name,
       'entity_type' => 'node',
@@ -72,16 +72,16 @@ function createImageField($name, $type_name, $storage_settings = array(), $insta
       'cardinality' => !empty($storage_settings['cardinality']) ? $storage_settings['cardinality'] : 1,
     ))->save();
 
-    $field_instance_config = entity_create('field_instance_config', array(
+    $field_config = entity_create('field_config', array(
       'field_name' => $name,
       'label' => $name,
       'entity_type' => 'node',
       'bundle' => $type_name,
-      'required' => !empty($instance_settings['required']),
-      'description' => !empty($instance_settings['description']) ? $instance_settings['description'] : '',
-      'settings' => $instance_settings,
+      'required' => !empty($field_settings['required']),
+      'description' => !empty($field_settings['description']) ? $field_settings['description'] : '',
+      'settings' => $field_settings,
     ));
-    $field_instance_config->save();
+    $field_config->save();
 
     entity_get_form_display('node', $type_name, 'default')
       ->setComponent($name, array(
@@ -94,7 +94,7 @@ function createImageField($name, $type_name, $storage_settings = array(), $insta
       ->setComponent($name)
       ->save();
 
-    return $field_instance_config;
+    return $field_config;
 
   }
 
diff --git a/core/modules/image/src/Tests/ImageFieldValidateTest.php b/core/modules/image/src/Tests/ImageFieldValidateTest.php
index fb7e9a4..415bc93 100644
--- a/core/modules/image/src/Tests/ImageFieldValidateTest.php
+++ b/core/modules/image/src/Tests/ImageFieldValidateTest.php
@@ -20,11 +20,11 @@ function testResolution() {
     $field_name = strtolower($this->randomMachineName());
     $min_resolution = 50;
     $max_resolution = 100;
-    $instance_settings = array(
+    $field_settings = array(
       'max_resolution' => $max_resolution . 'x' . $max_resolution,
       'min_resolution' => $min_resolution . 'x' . $min_resolution,
     );
-    $this->createImageField($field_name, 'article', array(), $instance_settings);
+    $this->createImageField($field_name, 'article', array(), $field_settings);
 
     // We want a test image that is too small, and a test image that is too
     // big, so cycle through test image files until we have what we need.
@@ -54,13 +54,13 @@ function testResolution() {
    */
   function testRequiredAttributes() {
     $field_name = strtolower($this->randomMachineName());
-    $instance_settings = array(
+    $field_settings = array(
       'alt_field' => 1,
       'alt_field_required' => 1,
       'title_field' => 1,
       'title_field_required' => 1,
     );
-    $this->createImageField($field_name, 'article', array(), $instance_settings);
+    $this->createImageField($field_name, 'article', array(), $field_settings);
     $images = $this->drupalGetTestFiles('image');
     // Let's just use the first image.
     $image = $images[0];
diff --git a/core/modules/image/src/Tests/ImageItemTest.php b/core/modules/image/src/Tests/ImageItemTest.php
index d758615..f71f68b 100644
--- a/core/modules/image/src/Tests/ImageItemTest.php
+++ b/core/modules/image/src/Tests/ImageItemTest.php
@@ -50,7 +50,7 @@ protected function setUp() {
       'type' => 'image',
       'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => 'image_test',
       'bundle' => 'entity_test',
diff --git a/core/modules/image/src/Tests/ImageThemeFunctionTest.php b/core/modules/image/src/Tests/ImageThemeFunctionTest.php
index 97c5a2b..15d9be0 100644
--- a/core/modules/image/src/Tests/ImageThemeFunctionTest.php
+++ b/core/modules/image/src/Tests/ImageThemeFunctionTest.php
@@ -45,7 +45,7 @@ protected function setUp() {
       'type' => 'image',
       'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => 'image_test',
       'bundle' => 'entity_test',
diff --git a/core/modules/link/src/Plugin/Field/FieldType/LinkItem.php b/core/modules/link/src/Plugin/Field/FieldType/LinkItem.php
index f8639bb..582851f 100644
--- a/core/modules/link/src/Plugin/Field/FieldType/LinkItem.php
+++ b/core/modules/link/src/Plugin/Field/FieldType/LinkItem.php
@@ -31,11 +31,11 @@ class LinkItem extends FieldItemBase implements LinkItemInterface {
   /**
    * {@inheritdoc}
    */
-  public static function defaultInstanceSettings() {
+  public static function defaultFieldSettings() {
     return array(
       'title' => DRUPAL_OPTIONAL,
       'link_type' => LinkItemInterface::LINK_GENERIC
-    ) + parent::defaultInstanceSettings();
+    ) + parent::defaultFieldSettings();
   }
 
   /**
@@ -105,7 +105,7 @@ public static function schema(FieldStorageDefinitionInterface $field_definition)
   /**
    * {@inheritdoc}
    */
-  public function instanceSettingsForm(array $form, FormStateInterface $form_state) {
+  public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
     $element = array();
 
     $element['link_type'] = array(
diff --git a/core/modules/link/src/Tests/LinkFieldTest.php b/core/modules/link/src/Tests/LinkFieldTest.php
index c7eb596..f2f3717 100644
--- a/core/modules/link/src/Tests/LinkFieldTest.php
+++ b/core/modules/link/src/Tests/LinkFieldTest.php
@@ -35,9 +35,9 @@ class LinkFieldTest extends WebTestBase {
   /**
    * The instance used in this test class.
    *
-   * @var \Drupal\field\Entity\FieldInstanceConfig
+   * @var \Drupal\field\Entity\FieldConfig
    */
-  protected $instance;
+  protected $field;
 
   /**
    * A user with permission to view and manage test entities.
@@ -69,7 +69,7 @@ function testURLValidation() {
       'type' => 'link',
     ));
     $this->fieldStorage->save();
-    $this->instance = entity_create('field_instance_config', array(
+    $this->field = entity_create('field_config', array(
       'field_storage' => $this->fieldStorage,
       'bundle' => 'entity_test',
       'settings' => array(
@@ -77,7 +77,7 @@ function testURLValidation() {
         'link_type' => LinkItemInterface::LINK_GENERIC,
       ),
     ));
-    $this->instance->save();
+    $this->field->save();
     entity_get_form_display('entity_test', 'entity_test', 'default')
       ->setComponent($field_name, array(
         'type' => 'link_default',
@@ -126,14 +126,14 @@ function testURLValidation() {
     $this->assertInvalidEntries($field_name, $invalid_external_entries + $invalid_internal_entries);
 
     // Test external URLs for 'link_type' = LinkItemInterface::LINK_EXTERNAL.
-    $this->instance->settings['link_type'] = LinkItemInterface::LINK_EXTERNAL;
-    $this->instance->save();
+    $this->field->settings['link_type'] = LinkItemInterface::LINK_EXTERNAL;
+    $this->field->save();
     $this->assertValidEntries($field_name, $valid_external_entries);
     $this->assertInvalidEntries($field_name, $valid_internal_entries + $invalid_external_entries);
 
     // Test external URLs for 'link_type' = LinkItemInterface::LINK_INTERNAL.
-    $this->instance->settings['link_type'] = LinkItemInterface::LINK_INTERNAL;
-    $this->instance->save();
+    $this->field->settings['link_type'] = LinkItemInterface::LINK_INTERNAL;
+    $this->field->save();
     $this->assertValidEntries($field_name, $valid_internal_entries);
     $this->assertInvalidEntries($field_name, $valid_external_entries + $invalid_internal_entries);
   }
@@ -193,7 +193,7 @@ function testLinkTitle() {
       'type' => 'link',
     ));
     $this->fieldStorage->save();
-    $this->instance = entity_create('field_instance_config', array(
+    $this->field = entity_create('field_config', array(
       'field_storage' => $this->fieldStorage,
       'bundle' => 'entity_test',
       'label' => 'Read more about this entity',
@@ -202,7 +202,7 @@ function testLinkTitle() {
         'link_type' => LinkItemInterface::LINK_GENERIC,
       ),
     ));
-    $this->instance->save();
+    $this->field->save();
     entity_get_form_display('entity_test', 'entity_test', 'default')
       ->setComponent($field_name, array(
         'type' => 'link_default',
@@ -222,8 +222,8 @@ function testLinkTitle() {
     // Verify that the link text field works according to the field setting.
     foreach (array(DRUPAL_DISABLED, DRUPAL_REQUIRED, DRUPAL_OPTIONAL) as $title_setting) {
       // Update the link title field setting.
-      $this->instance->settings['title'] = $title_setting;
-      $this->instance->save();
+      $this->field->settings['title'] = $title_setting;
+      $this->field->save();
 
       // Display creation form.
       $this->drupalGet('entity_test/add');
@@ -312,7 +312,7 @@ function testLinkFormatter() {
       'cardinality' => 2,
     ));
     $this->fieldStorage->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_storage' => $this->fieldStorage,
       'label' => 'Read more about this entity',
       'bundle' => 'entity_test',
@@ -454,7 +454,7 @@ function testLinkSeparateFormatter() {
       'cardinality' => 2,
     ));
     $this->fieldStorage->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_storage' => $this->fieldStorage,
       'bundle' => 'entity_test',
       'settings' => array(
diff --git a/core/modules/link/src/Tests/LinkItemTest.php b/core/modules/link/src/Tests/LinkItemTest.php
index d2e15d5..6022733 100644
--- a/core/modules/link/src/Tests/LinkItemTest.php
+++ b/core/modules/link/src/Tests/LinkItemTest.php
@@ -35,7 +35,7 @@ protected function setUp() {
       'entity_type' => 'entity_test',
       'type' => 'link',
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => 'field_test',
       'bundle' => 'entity_test',
diff --git a/core/modules/migrate/src/Plugin/migrate/destination/EntityFieldInstance.php b/core/modules/migrate/src/Plugin/migrate/destination/EntityFieldInstance.php
index c02fef5..77297e8 100644
--- a/core/modules/migrate/src/Plugin/migrate/destination/EntityFieldInstance.php
+++ b/core/modules/migrate/src/Plugin/migrate/destination/EntityFieldInstance.php
@@ -11,7 +11,7 @@
 
 /**
  * @MigrateDestination(
- *   id = "entity:field_instance_config"
+ *   id = "entity:field_config"
  * )
  */
 class EntityFieldInstance extends EntityConfigBase {
diff --git a/core/modules/migrate_drupal/config/install/migrate.migration.d6_comment_field_instance.yml b/core/modules/migrate_drupal/config/install/migrate.migration.d6_comment_field_instance.yml
index c24eaba..6ec06f7 100644
--- a/core/modules/migrate_drupal/config/install/migrate.migration.d6_comment_field_instance.yml
+++ b/core/modules/migrate_drupal/config/install/migrate.migration.d6_comment_field_instance.yml
@@ -27,7 +27,7 @@ process:
   'settings/form_location': comment_form_location
   'settings/preview': comment_preview
 destination:
-  plugin: entity:field_instance_config
+  plugin: entity:field_config
 migration_dependencies:
   required:
     - d6_comment_field
diff --git a/core/modules/migrate_drupal/config/install/migrate.migration.d6_field_instance.yml b/core/modules/migrate_drupal/config/install/migrate.migration.d6_field_instance.yml
index ce20ff5..1ef6a30 100644
--- a/core/modules/migrate_drupal/config/install/migrate.migration.d6_field_instance.yml
+++ b/core/modules/migrate_drupal/config/install/migrate.migration.d6_field_instance.yml
@@ -30,7 +30,7 @@ process:
   required: required
   status: active
   settings:
-    plugin: d6_field_instance_settings
+    plugin: d6_field_field_settings
     source:
       - widget_type
       - widget_settings
@@ -44,7 +44,7 @@ process:
       - widget_settings
 
 destination:
-  plugin: entity:field_instance_config
+  plugin: entity:field_config
 migration_dependencies:
   required:
     - d6_node_type
diff --git a/core/modules/migrate_drupal/config/install/migrate.migration.d6_upload_field_instance.yml b/core/modules/migrate_drupal/config/install/migrate.migration.d6_upload_field_instance.yml
index f46b49b..42fadb2 100644
--- a/core/modules/migrate_drupal/config/install/migrate.migration.d6_upload_field_instance.yml
+++ b/core/modules/migrate_drupal/config/install/migrate.migration.d6_upload_field_instance.yml
@@ -17,7 +17,7 @@ process:
   'settings/file_extensions': file_extensions
   'settings/max_filesize': max_filesize
 destination:
-  plugin: entity:field_instance_config
+  plugin: entity:field_config
 migration_dependencies:
   required:
     - d6_upload_field
diff --git a/core/modules/migrate_drupal/config/install/migrate.migration.d6_user_picture_field_instance.yml b/core/modules/migrate_drupal/config/install/migrate.migration.d6_user_picture_field_instance.yml
index ae4bfae..ef6c053 100644
--- a/core/modules/migrate_drupal/config/install/migrate.migration.d6_user_picture_field_instance.yml
+++ b/core/modules/migrate_drupal/config/install/migrate.migration.d6_user_picture_field_instance.yml
@@ -24,7 +24,7 @@ process:
   'settings/max_filesize': max_filesize
   'settings/max_resolution': max_resolution
 destination:
-  plugin: entity:field_instance_config
+  plugin: entity:field_config
 migration_dependencies:
   required:
     - d6_user_picture_field
diff --git a/core/modules/migrate_drupal/config/install/migrate.migration.d6_user_profile_field_instance.yml b/core/modules/migrate_drupal/config/install/migrate.migration.d6_user_profile_field_instance.yml
index eb44225..ebf139e 100644
--- a/core/modules/migrate_drupal/config/install/migrate.migration.d6_user_profile_field_instance.yml
+++ b/core/modules/migrate_drupal/config/install/migrate.migration.d6_user_profile_field_instance.yml
@@ -15,7 +15,7 @@ process:
   field_name: name
   required: required
 destination:
-  plugin: entity:field_instance_config
+  plugin: entity:field_config
 migration_dependencies:
   required:
     - d6_user_profile_field
diff --git a/core/modules/migrate_drupal/config/install/migrate.migration.d6_vocabulary_field_instance.yml b/core/modules/migrate_drupal/config/install/migrate.migration.d6_vocabulary_field_instance.yml
index 4d6c202..15d8186 100644
--- a/core/modules/migrate_drupal/config/install/migrate.migration.d6_vocabulary_field_instance.yml
+++ b/core/modules/migrate_drupal/config/install/migrate.migration.d6_vocabulary_field_instance.yml
@@ -15,7 +15,7 @@ process:
     migration: d6_taxonomy_vocabulary
     source: vid
 destination:
-  plugin: entity:field_instance_config
+  plugin: entity:field_config
 migration_dependencies:
   required:
     - d6_vocabulary_field
diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/FieldInstanceSettings.php b/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/FieldInstanceSettings.php
index 7f16cef..22ba334 100644
--- a/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/FieldInstanceSettings.php
+++ b/core/modules/migrate_drupal/src/Plugin/migrate/process/d6/FieldInstanceSettings.php
@@ -12,7 +12,7 @@
 
 /**
  * @MigrateProcessPlugin(
- *   id = "d6_field_instance_settings"
+ *   id = "d6_field_field_settings"
  * )
  */
 class FieldInstanceSettings extends ProcessPluginBase {
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateCckFieldRevisionTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateCckFieldRevisionTest.php
index 10a8b37..39917a2 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateCckFieldRevisionTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateCckFieldRevisionTest.php
@@ -33,7 +33,7 @@ protected function setUp() {
       'name' => 'field_test',
       'type' => 'text',
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => 'node',
       'field_name' => 'field_test',
       'bundle' => 'story',
@@ -44,7 +44,7 @@ protected function setUp() {
       'type' => 'integer',
       'cardinality' => -1,
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => 'node',
       'field_name' => 'field_test_two',
       'bundle' => 'story',
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateCckFieldValuesTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateCckFieldValuesTest.php
index 15d496e..159e7ac 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateCckFieldValuesTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateCckFieldValuesTest.php
@@ -34,7 +34,7 @@ protected function setUp() {
       'name' => 'field_test',
       'type' => 'text',
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => 'node',
       'field_name' => 'field_test',
       'bundle' => 'story',
@@ -45,7 +45,7 @@ protected function setUp() {
       'type' => 'integer',
       'cardinality' => -1,
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => 'node',
       'field_name' => 'field_test_two',
       'bundle' => 'story',
@@ -55,7 +55,7 @@ protected function setUp() {
       'name' => 'field_test_three',
       'type' => 'decimal',
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => 'node',
       'field_name' => 'field_test_three',
       'bundle' => 'story',
@@ -65,7 +65,7 @@ protected function setUp() {
       'name' => 'field_test_integer_selectlist',
       'type' => 'integer',
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => 'node',
       'field_name' => 'field_test_integer_selectlist',
       'bundle' => 'story',
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateCommentVariableDisplayBase.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateCommentVariableDisplayBase.php
index 9c967f5..58765c8 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateCommentVariableDisplayBase.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateCommentVariableDisplayBase.php
@@ -57,7 +57,7 @@ protected function setUp() {
     ))->save();
     foreach ($this->types as $type) {
       entity_create('node_type', array('type' => $type))->save();
-      entity_create('field_instance_config', array(
+      entity_create('field_config', array(
         'label' => 'Comments',
         'description' => '',
         'field_name' => 'comment',
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldInstanceTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldInstanceTest.php
index d154214..6e6f02e 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldInstanceTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldInstanceTest.php
@@ -83,14 +83,14 @@ protected function setUp() {
   public function testFieldInstanceSettings() {
     $entity = entity_create('node', array('type' => 'story'));
     // Test a text field.
-    $field = entity_load('field_instance_config', 'node.story.field_test');
+    $field = entity_load('field_config', 'node.story.field_test');
     $this->assertEqual($field->label(), 'Text Field');
     $expected = array('max_length' => 255, 'text_processing' => 1);
     $this->assertEqual($field->getSettings(), $expected);
     $this->assertEqual('text for default value', $entity->field_test->value);
 
     // Test a number field.
-    $field = entity_load('field_instance_config', 'node.story.field_test_two');
+    $field = entity_load('field_config', 'node.story.field_test_two');
     $this->assertEqual($field->label(), 'Integer Field');
     $expected = array(
       'min' => '10',
@@ -102,7 +102,7 @@ public function testFieldInstanceSettings() {
     );
     $this->assertEqual($field->getSettings(), $expected);
 
-    $field = entity_load('field_instance_config', 'node.story.field_test_four');
+    $field = entity_load('field_config', 'node.story.field_test_four');
     $this->assertEqual($field->label(), 'Float Field');
     $expected = array(
       'min' => 100,
@@ -113,12 +113,12 @@ public function testFieldInstanceSettings() {
     $this->assertEqual($field->getSettings(), $expected);
 
     // Test email field.
-    $field = entity_load('field_instance_config', 'node.story.field_test_email');
+    $field = entity_load('field_config', 'node.story.field_test_email');
     $this->assertEqual($field->label(), 'Email Field');
     $this->assertEqual('benjy@example.com', $entity->field_test_email->value, 'Field field_test_email default_value is correct.');
 
     // Test a filefield.
-    $field = entity_load('field_instance_config', 'node.story.field_test_filefield');
+    $field = entity_load('field_config', 'node.story.field_test_filefield');
     $this->assertEqual($field->label(), 'File Field');
     $expected = array(
       'file_extensions' => 'txt pdf doc',
@@ -137,7 +137,7 @@ public function testFieldInstanceSettings() {
     $this->assertFalse(array_diff_assoc($expected, $field->getSettings()));
 
     // Test a link field.
-    $field = entity_load('field_instance_config', 'node.story.field_test_link');
+    $field = entity_load('field_config', 'node.story.field_test_link');
     $this->assertEqual($field->label(), 'Link Field');
     $expected = array('title' => 2, 'link_type' => LinkItemInterface::LINK_GENERIC);
     $this->assertEqual($field->getSettings(), $expected);
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateNodeTypeTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateNodeTypeTest.php
index 4ec8f0e..e3718c1 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateNodeTypeTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateNodeTypeTest.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\migrate_drupal\Tests\d6;
 
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 use Drupal\migrate\MigrateExecutable;
 use Drupal\migrate_drupal\Tests\MigrateDrupalTestBase;
 
@@ -65,8 +65,8 @@ public function testNodeType() {
     $this->assertEqual(array('test_page'), $migration->getIdMap()->lookupDestinationID(array('test_page')));
 
     // Test we have a body field.
-    $instance = FieldInstanceConfig::loadByName('node', 'test_page', 'body');
-    $this->assertEqual($instance->getLabel(), 'This is the body field label', 'Body field was found.');
+    $field = FieldConfig::loadByName('node', 'test_page', 'body');
+    $this->assertEqual($field->getLabel(), 'This is the body field label', 'Body field was found.');
 
     // Test the test_story content type.
     $node_type_story = entity_load('node_type', 'test_story');
@@ -83,8 +83,8 @@ public function testNodeType() {
     $this->assertEqual(array('test_story'), $migration->getIdMap()->lookupDestinationID(array('test_story')));
 
     // Test we don't have a body field.
-    $instance = FieldInstanceConfig::loadByName('node', 'test_story', 'body');
-    $this->assertEqual($instance, NULL, 'No body field found');
+    $field = FieldConfig::loadByName('node', 'test_story', 'body');
+    $this->assertEqual($field, NULL, 'No body field found');
 
     // Test the test_event content type.
     $node_type_event = entity_load('node_type', 'test_event');
@@ -102,7 +102,7 @@ public function testNodeType() {
     $this->assertEqual(array('test_event'), $migration->getIdMap()->lookupDestinationID(array('test_event')));
 
     // Test we have a body field.
-    $instance = FieldInstanceConfig::loadByName('node', 'test_event', 'body');
-    $this->assertEqual($instance->getLabel(), 'Body', 'Body field was found.');
+    $field = FieldConfig::loadByName('node', 'test_event', 'body');
+    $this->assertEqual($field->getLabel(), 'Body', 'Body field was found.');
   }
 }
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateProfileValuesTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateProfileValuesTest.php
index 8184dce..fd33123 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateProfileValuesTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateProfileValuesTest.php
@@ -90,7 +90,7 @@ protected function setUp() {
 
     // Create the field instances.
     foreach (Drupal6UserProfileFields::getData('profile_fields') as $field) {
-      entity_create('field_instance_config', array(
+      entity_create('field_config', array(
         'label' => $field['title'],
         'description' => '',
         'field_name' => $field['name'],
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateTermNodeTestBase.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateTermNodeTestBase.php
index 64886f7..fb14c7d 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateTermNodeTestBase.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateTermNodeTestBase.php
@@ -45,7 +45,7 @@ protected function setUp() {
           ),
         ),
       ))->save();
-      entity_create('field_instance_config', array(
+      entity_create('field_config', array(
         'field_name' => $name,
         'entity_type' => 'node',
         'bundle' => 'story',
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateUploadBase.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateUploadBase.php
index 61b5501..d411a11 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateUploadBase.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateUploadBase.php
@@ -58,7 +58,7 @@ protected function setUp() {
         'display_field' => TRUE,
       ),
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => 'upload',
       'entity_type' => 'node',
       'bundle' => 'story',
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateUploadInstanceTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateUploadInstanceTest.php
index b807b21..89fea7d 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateUploadInstanceTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateUploadInstanceTest.php
@@ -64,18 +64,18 @@ protected function setUp() {
    * Tests the Drupal 6 upload settings to Drupal 8 field instance migration.
    */
   public function testUploadFieldInstance() {
-    $field = entity_load('field_instance_config', 'node.page.upload');
+    $field = entity_load('field_config', 'node.page.upload');
     $settings = $field->getSettings();
     $this->assertEqual($field->id(), 'node.page.upload');
     $this->assertEqual($settings['file_extensions'], 'jpg jpeg gif png txt doc xls pdf ppt pps odt ods odp');
     $this->assertEqual($settings['max_filesize'], '1MB');
     $this->assertEqual($settings['description_field'], TRUE);
 
-    $field = entity_load('field_instance_config', 'node.story.upload');
+    $field = entity_load('field_config', 'node.story.upload');
     $this->assertEqual($field->id(), 'node.story.upload');
 
     // Shouldn't exist.
-    $field = entity_load('field_instance_config', 'node.article.upload');
+    $field = entity_load('field_config', 'node.article.upload');
     $this->assertTrue(is_null($field));
 
     $this->assertEqual(array('node', 'page', 'upload'), entity_load('migration', 'd6_upload_field_instance')->getIdMap()->lookupDestinationID(array('page')));
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateUserPictureInstanceTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateUserPictureInstanceTest.php
index 39a769b..6fb4886 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateUserPictureInstanceTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateUserPictureInstanceTest.php
@@ -52,7 +52,7 @@ protected function setUp() {
    * Tests the Drupal 6 user picture to Drupal 8 picture field instance migration.
    */
   public function testUserPictureFieldInstance() {
-    $field = entity_load('field_instance_config', 'user.user.user_picture');
+    $field = entity_load('field_config', 'user.user.user_picture');
     $settings = $field->getSettings();
     $this->assertEqual($settings['file_extensions'], 'png gif jpg jpeg');
     $this->assertEqual($settings['file_directory'], 'pictures');
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateUserProfileEntityDisplayTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateUserProfileEntityDisplayTest.php
index 8666cfa..8e46411 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateUserProfileEntityDisplayTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateUserProfileEntityDisplayTest.php
@@ -75,7 +75,7 @@ protected function setUp() {
     ))->save();
     $field_data = Drupal6UserProfileFields::getData('profile_fields');
     foreach ($field_data as $field) {
-      entity_create('field_instance_config', array(
+      entity_create('field_config', array(
         'label' => $field['title'],
         'description' => '',
         'field_name' => $field['name'],
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateUserProfileEntityFormDisplayTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateUserProfileEntityFormDisplayTest.php
index 82503d6..415234c 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateUserProfileEntityFormDisplayTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateUserProfileEntityFormDisplayTest.php
@@ -70,7 +70,7 @@ protected function setUp() {
     ))->save();
     $field_data = Drupal6UserProfileFields::getData('profile_fields');
     foreach ($field_data as $field) {
-      entity_create('field_instance_config', array(
+      entity_create('field_config', array(
         'label' => $field['title'],
         'description' => '',
         'field_name' => $field['name'],
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateUserProfileFieldInstanceTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateUserProfileFieldInstanceTest.php
index 2093ed4..0a8ea57 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateUserProfileFieldInstanceTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateUserProfileFieldInstanceTest.php
@@ -49,44 +49,44 @@ protected function setUp() {
    */
   public function testUserProfileFields() {
     // Migrated a text field.
-    $field = entity_load('field_instance_config', 'user.user.profile_color');
+    $field = entity_load('field_config', 'user.user.profile_color');
     $this->assertEqual($field->label(), 'Favorite color');
     $this->assertEqual($field->getDescription(), 'List your favorite color');
 
     // Migrated a textarea.
-    $field = entity_load('field_instance_config', 'user.user.profile_biography');
+    $field = entity_load('field_config', 'user.user.profile_biography');
     $this->assertEqual($field->label(), 'Biography');
     $this->assertEqual($field->getDescription(), 'Tell people a little bit about yourself');
 
     // Migrated checkbox field.
-    $field = entity_load('field_instance_config', 'user.user.profile_sell_address');
+    $field = entity_load('field_config', 'user.user.profile_sell_address');
     $this->assertEqual($field->label(), 'Sell your email address?');
     $this->assertEqual($field->getDescription(), "If you check this box, we'll sell your address to spammers to help line the pockets of our shareholders. Thanks!");
 
     // Migrated selection field.
-    $field = entity_load('field_instance_config', 'user.user.profile_sold_to');
+    $field = entity_load('field_config', 'user.user.profile_sold_to');
     $this->assertEqual($field->label(), 'Sales Category');
     $this->assertEqual($field->getDescription(), "Select the sales categories to which this user's address was sold.");
 
     // Migrated list field.
-    $field = entity_load('field_instance_config', 'user.user.profile_bands');
+    $field = entity_load('field_config', 'user.user.profile_bands');
     $this->assertEqual($field->label(), 'Favorite bands');
     $this->assertEqual($field->getDescription(), "Enter your favorite bands. When you've saved your profile, you'll be able to find other people with the same favorites.");
 
 /*
     // Migrated URL field.
-    $field = entity_load('field_instance_config', 'user.user.profile_blog');
+    $field = entity_load('field_config', 'user.user.profile_blog');
     $this->assertEqual($field->label(), 'Your blog');
     $this->assertEqual($field->getDescription(), "Paste the full URL, including http://, of your personal blog.");
 */
 
     // Migrated date field.
-    $field = entity_load('field_instance_config', 'user.user.profile_birthdate');
+    $field = entity_load('field_config', 'user.user.profile_birthdate');
     $this->assertEqual($field->label(), 'Birthdate');
     $this->assertEqual($field->getDescription(), "Enter your birth date and we'll send you a coupon.");
 
     // Another migrated checkbox field, with a different source visibility setting.
-    $field = entity_load('field_instance_config', 'user.user.profile_love_migrations');
+    $field = entity_load('field_config', 'user.user.profile_love_migrations');
     $this->assertEqual($field->label(), 'I love migrations');
     $this->assertEqual($field->getDescription(), "If you check this box, you love migrations.");
   }
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateUserTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateUserTest.php
index 2c72e19..3d564f0 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateUserTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateUserTest.php
@@ -44,7 +44,7 @@ protected function setUp() {
       'type' => 'image',
       'translatable' => '0',
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'label' => 'User Picture',
       'description' => '',
       'field_name' => 'user_picture',
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateVocabularyEntityDisplayTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateVocabularyEntityDisplayTest.php
index 42fd565..3948694 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateVocabularyEntityDisplayTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateVocabularyEntityDisplayTest.php
@@ -38,7 +38,7 @@ protected function setUp() {
 
     foreach (array('page', 'article', 'story') as $type) {
       entity_create('node_type', array('type' => $type))->save();
-      entity_create('field_instance_config', array(
+      entity_create('field_config', array(
         'label' => 'Tags',
         'description' => '',
         'field_name' => 'tags',
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateVocabularyEntityFormDisplayTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateVocabularyEntityFormDisplayTest.php
index cd8263e..7fdd95f 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateVocabularyEntityFormDisplayTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateVocabularyEntityFormDisplayTest.php
@@ -38,7 +38,7 @@ protected function setUp() {
 
     foreach (array('page', 'article', 'story') as $type) {
       entity_create('node_type', array('type' => $type))->save();
-      entity_create('field_instance_config', array(
+      entity_create('field_config', array(
         'label' => 'Tags',
         'description' => '',
         'field_name' => 'tags',
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateVocabularyFieldInstanceTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateVocabularyFieldInstanceTest.php
index 6e54c09..1ee83bb 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateVocabularyFieldInstanceTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateVocabularyFieldInstanceTest.php
@@ -83,12 +83,12 @@ protected function setUp() {
   public function testVocabularyFieldInstance() {
     // Test that the field exists.
     $field_id = 'node.article.tags';
-    $field = entity_load('field_instance_config', $field_id);
+    $field = entity_load('field_config', $field_id);
     $this->assertEqual($field->id(), $field_id, 'Field instance exists on article bundle.');
 
     // Test the page bundle as well.
     $field_id = 'node.page.tags';
-    $field = entity_load('field_instance_config', $field_id);
+    $field = entity_load('field_config', $field_id);
     $this->assertEqual($field->id(), $field_id, 'Field instance exists on page bundle.');
 
     $this->assertEqual(array('node', 'article', 'tags'), entity_load('migration', 'd6_vocabulary_field_instance')->getIdMap()->lookupDestinationID(array(4, 'article')));
diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index d96052d..01ab87b 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -18,7 +18,7 @@
 use Drupal\Core\Database\Query\AlterableInterface;
 use Drupal\Core\Database\Query\SelectInterface;
 use Drupal\field\Entity\FieldStorageConfig;
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 use Drupal\node\Entity\Node;
 use Drupal\node\Entity\NodeType;
 use Drupal\node\NodeTypeInterface;
@@ -345,16 +345,15 @@ function node_type_load($name) {
  *
  * @param \Drupal\node\NodeTypeInterface $type
  *   A node type object.
- * @param $label
+ * @param string $label
  *   (optional) The label for the body instance.
  *
- * @return
- *   Body field instance.
+ * @return \Drupal\field\Entity\FieldConfig Body field.
  */
 function node_add_body_field(NodeTypeInterface $type, $label = 'Body') {
    // Add or remove the body field, as needed.
   $field_storage = FieldStorageConfig::loadByName('node', 'body');
-  $instance = FieldInstanceConfig::loadByName('node', $type->id(), 'body');
+  $field = FieldConfig::loadByName('node', $type->id(), 'body');
   if (empty($field_storage)) {
     $field_storage = entity_create('field_storage_config', array(
       'name' => 'body',
@@ -363,14 +362,14 @@ function node_add_body_field(NodeTypeInterface $type, $label = 'Body') {
     ));
     $field_storage->save();
   }
-  if (empty($instance)) {
-    $instance = entity_create('field_instance_config', array(
+  if (empty($field)) {
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => $type->id(),
       'label' => $label,
       'settings' => array('display_summary' => TRUE),
     ));
-    $instance->save();
+    $field->save();
 
     // Assign widget settings for the 'default' form mode.
     entity_get_form_display('node', $type->type, 'default')
@@ -400,7 +399,7 @@ function node_add_body_field(NodeTypeInterface $type, $label = 'Body') {
     }
   }
 
-  return $instance;
+  return $field;
 }
 
 /**
diff --git a/core/modules/node/src/Plugin/views/wizard/Node.php b/core/modules/node/src/Plugin/views/wizard/Node.php
index 93401db..9da3633 100644
--- a/core/modules/node/src/Plugin/views/wizard/Node.php
+++ b/core/modules/node/src/Plugin/views/wizard/Node.php
@@ -271,7 +271,7 @@ protected function buildFilters(&$form, FormStateInterface $form_state) {
       $taxonomy_fields = array_filter(\Drupal::entityManager()->getFieldDefinitions($this->entityTypeId, $bundle), function ($field_definition) {
         return $field_definition->getType() == 'taxonomy_term_reference';
       });
-      foreach ($taxonomy_fields as $field_name => $instance) {
+      foreach ($taxonomy_fields as $field_name => $field) {
         $widget = $display->getComponent($field_name);
         // We define "tag-like" taxonomy fields as ones that use the
         // "Autocomplete term widget (tagging)" widget.
diff --git a/core/modules/node/src/Tests/Config/NodeImportCreateTest.php b/core/modules/node/src/Tests/Config/NodeImportCreateTest.php
index bcff81c..ffcafcb 100644
--- a/core/modules/node/src/Tests/Config/NodeImportCreateTest.php
+++ b/core/modules/node/src/Tests/Config/NodeImportCreateTest.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\node\Tests\Config;
 
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 use Drupal\simpletest\DrupalUnitTestBase;
 
 /**
@@ -73,7 +73,7 @@ public function testImportCreate() {
     // Check that the content type was created.
     $node_type = entity_load('node_type', $node_type_id);
     $this->assertTrue($node_type, 'Import node type from staging was created.');
-    $this->assertFalse(FieldInstanceConfig::loadByName('node', $node_type_id, 'body'));
+    $this->assertFalse(FieldConfig::loadByName('node', $node_type_id, 'body'));
   }
 
 }
diff --git a/core/modules/node/src/Tests/MultiStepNodeFormBasicOptionsTest.php b/core/modules/node/src/Tests/MultiStepNodeFormBasicOptionsTest.php
index 33375fa..0391e5b 100644
--- a/core/modules/node/src/Tests/MultiStepNodeFormBasicOptionsTest.php
+++ b/core/modules/node/src/Tests/MultiStepNodeFormBasicOptionsTest.php
@@ -39,7 +39,7 @@ function testMultiStepNodeFormBasicOptions() {
     ))->save();
 
     // Attach an instance of the field to the page content type.
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => $this->field_name,
       'entity_type' => 'node',
       'bundle' => 'page',
diff --git a/core/modules/node/src/Tests/NodeAccessFieldTest.php b/core/modules/node/src/Tests/NodeAccessFieldTest.php
index feb50a8..d31391e 100644
--- a/core/modules/node/src/Tests/NodeAccessFieldTest.php
+++ b/core/modules/node/src/Tests/NodeAccessFieldTest.php
@@ -58,7 +58,7 @@ protected function setUp() {
       'entity_type' => 'node',
       'type' => 'text'
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => $this->field_name,
       'entity_type' => 'node',
       'bundle' => 'page',
diff --git a/core/modules/node/src/Tests/NodeAccessLanguageAwareCombinationTest.php b/core/modules/node/src/Tests/NodeAccessLanguageAwareCombinationTest.php
index ce664ab..c49a02f 100644
--- a/core/modules/node/src/Tests/NodeAccessLanguageAwareCombinationTest.php
+++ b/core/modules/node/src/Tests/NodeAccessLanguageAwareCombinationTest.php
@@ -65,7 +65,7 @@ protected function setUp() {
     ));
     $field_storage->save();
 
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'page',
       'widget' => array(
diff --git a/core/modules/node/src/Tests/NodeAccessLanguageAwareTest.php b/core/modules/node/src/Tests/NodeAccessLanguageAwareTest.php
index ed91a57..442adb1 100644
--- a/core/modules/node/src/Tests/NodeAccessLanguageAwareTest.php
+++ b/core/modules/node/src/Tests/NodeAccessLanguageAwareTest.php
@@ -56,7 +56,7 @@ protected function setUp() {
     ));
     $field_storage->save();
 
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'page',
       'widget' => array(
diff --git a/core/modules/node/src/Tests/NodeTypeRenameConfigImportTest.php b/core/modules/node/src/Tests/NodeTypeRenameConfigImportTest.php
index 7c904d2..84cba99 100644
--- a/core/modules/node/src/Tests/NodeTypeRenameConfigImportTest.php
+++ b/core/modules/node/src/Tests/NodeTypeRenameConfigImportTest.php
@@ -89,7 +89,7 @@ public function testConfigurationRename() {
       'entity.form_display.node.' . $active_type . '.default::entity.form_display.node.' . $staged_type . '.default',
       'entity.view_display.node.' . $active_type . '.default::entity.view_display.node.' . $staged_type . '.default',
       'entity.view_display.node.' . $active_type . '.teaser::entity.view_display.node.' . $staged_type . '.teaser',
-      'field.instance.node.' . $active_type . '.body::field.instance.node.' . $staged_type . '.body',
+      'field.field.node.' . $active_type . '.body::field.field.node.' . $staged_type . '.body',
     );
     $renames = $this->configImporter()->getUnprocessedConfiguration('rename');
     $this->assertIdentical($expected, $renames);
diff --git a/core/modules/node/src/Tests/NodeTypeTest.php b/core/modules/node/src/Tests/NodeTypeTest.php
index 8c2d128..3125928 100644
--- a/core/modules/node/src/Tests/NodeTypeTest.php
+++ b/core/modules/node/src/Tests/NodeTypeTest.php
@@ -6,7 +6,7 @@
  */
 
 namespace Drupal\node\Tests;
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 
 /**
  * Ensures that node type functions work correctly.
@@ -78,8 +78,8 @@ function testNodeTypeEditing() {
     $web_user = $this->drupalCreateUser(array('bypass node access', 'administer content types', 'administer node fields'));
     $this->drupalLogin($web_user);
 
-    $instance = FieldInstanceConfig::loadByName('node', 'page', 'body');
-    $this->assertEqual($instance->getLabel(), 'Body', 'Body field was found.');
+    $field = FieldConfig::loadByName('node', 'page', 'body');
+    $this->assertEqual($field->getLabel(), 'Body', 'Body field was found.');
 
     // Verify that title and body fields are displayed.
     $this->drupalGet('node/add/page');
diff --git a/core/modules/node/src/Tests/PagePreviewTest.php b/core/modules/node/src/Tests/PagePreviewTest.php
index 708fc1a..31a58c6 100644
--- a/core/modules/node/src/Tests/PagePreviewTest.php
+++ b/core/modules/node/src/Tests/PagePreviewTest.php
@@ -75,7 +75,7 @@ protected function setUp() {
       ),
       'cardinality' => '-1',
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => $this->field_name,
       'entity_type' => 'node',
       'bundle' => 'page',
diff --git a/core/modules/node/tests/modules/node_access_test/node_access_test.module b/core/modules/node/tests/modules/node_access_test/node_access_test.module
index 797cf25..47727e0 100644
--- a/core/modules/node/tests/modules/node_access_test/node_access_test.module
+++ b/core/modules/node/tests/modules/node_access_test/node_access_test.module
@@ -20,7 +20,7 @@
  */
 
 use Drupal\field\Entity\FieldStorageConfig;
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 use Drupal\node\NodeTypeInterface;
 use Drupal\node\NodeInterface;
 
@@ -140,13 +140,13 @@ function node_access_test_add_field(NodeTypeInterface $type) {
     'type' => 'integer',
   ));
   $field_storage->save();
-  $instance = FieldInstanceConfig::create(array(
+  $field = FieldConfig::create(array(
     'field_name' => 'private',
     'entity_type' => 'node',
     'bundle' => $type->id(),
     'label' => 'Private',
   ));
-  $instance->save();
+  $field->save();
 
   // Assign widget settings for the 'default' form mode.
   entity_get_form_display('node', $type->id(), 'default')
diff --git a/core/modules/options/config/schema/options.schema.yml b/core/modules/options/config/schema/options.schema.yml
index 7a639cb..8aca507 100644
--- a/core/modules/options/config/schema/options.schema.yml
+++ b/core/modules/options/config/schema/options.schema.yml
@@ -1,6 +1,6 @@
 # Schema for the configuration files of the Options module.
 
-field.list_integer.settings:
+field.list_integer.storage_settings:
   type: mapping
   label: 'List (integer) settings'
   mapping:
@@ -21,7 +21,7 @@ field.list_integer.settings:
       type: string
       label: 'Allowed values function'
 
-field.list_integer.instance_settings:
+field.list_integer.field_settings:
   label: 'List (integer)'
   type: mapping
   mapping: {  }
@@ -37,7 +37,7 @@ field.list_integer.value:
           type: integer
           label: 'Value'
 
-field.list_float.settings:
+field.list_float.storage_settings:
   type: mapping
   label: 'List (float) settings'
   mapping:
@@ -58,7 +58,7 @@ field.list_float.settings:
       type: string
       label: 'Allowed values function'
 
-field.list_float.instance_settings:
+field.list_float.field_settings:
   label: 'List (float)'
   type: mapping
   mapping: {  }
@@ -74,7 +74,7 @@ field.list_float.value:
           type: string
           label: 'Value'
 
-field.list_text.settings:
+field.list_text.storage_settings:
   type: mapping
   label: 'List (text) settings'
   mapping:
@@ -95,7 +95,7 @@ field.list_text.settings:
       type: string
       label: 'Allowed values function'
 
-field.list_text.instance_settings:
+field.list_text.field_settings:
   label: 'List (float)'
   type: mapping
   mapping: {  }
diff --git a/core/modules/options/src/Plugin/Field/FieldType/ListItemBase.php b/core/modules/options/src/Plugin/Field/FieldType/ListItemBase.php
index 26dd91c..85cddd2 100644
--- a/core/modules/options/src/Plugin/Field/FieldType/ListItemBase.php
+++ b/core/modules/options/src/Plugin/Field/FieldType/ListItemBase.php
@@ -21,11 +21,11 @@
   /**
    * {@inheritdoc}
    */
-  public static function defaultSettings() {
+  public static function defaultStorageSettings() {
     return array(
       'allowed_values' => array(),
       'allowed_values_function' => '',
-    ) + parent::defaultSettings();
+    ) + parent::defaultStorageSettings();
   }
 
   /**
@@ -73,7 +73,7 @@ public function isEmpty() {
   /**
    * {@inheritdoc}
    */
-  public function settingsForm(array &$form, FormStateInterface $form_state, $has_data) {
+  public function storageSettingsForm(array &$form, FormStateInterface $form_state, $has_data) {
     $allowed_values = $this->getSetting('allowed_values');
     $allowed_values_function = $this->getSetting('allowed_values_function');
 
@@ -241,7 +241,7 @@ protected function allowedValuesString($values) {
   /**
    * @inheritdoc.
    */
-  public static function settingsToConfigData(array $settings) {
+  public static function storageSettingsToConfigData(array $settings) {
     if (isset($settings['allowed_values'])) {
       $settings['allowed_values'] = static::structureAllowedValues($settings['allowed_values']);
     }
@@ -251,7 +251,7 @@ public static function settingsToConfigData(array $settings) {
   /**
    * @inheritdoc.
    */
-  public static function settingsFromConfigData(array $settings) {
+  public static function storageSettingsFromConfigData(array $settings) {
     if (isset($settings['allowed_values'])) {
       $settings['allowed_values'] = static::simplifyAllowedValues($settings['allowed_values']);
     }
diff --git a/core/modules/options/src/Tests/OptionsDynamicValuesTestBase.php b/core/modules/options/src/Tests/OptionsDynamicValuesTestBase.php
index a48837b..74978da 100644
--- a/core/modules/options/src/Tests/OptionsDynamicValuesTestBase.php
+++ b/core/modules/options/src/Tests/OptionsDynamicValuesTestBase.php
@@ -41,7 +41,7 @@ protected function setUp() {
         'allowed_values_function' => 'options_test_dynamic_values_callback',
       ),
     ))->save();
-    $this->instance = entity_create('field_instance_config', array(
+    $this->field = entity_create('field_config', array(
       'field_name' => $this->field_name,
       'entity_type' => 'entity_test_rev',
       'bundle' => 'entity_test_rev',
diff --git a/core/modules/options/src/Tests/OptionsFieldTest.php b/core/modules/options/src/Tests/OptionsFieldTest.php
index 8832326..89e428e 100644
--- a/core/modules/options/src/Tests/OptionsFieldTest.php
+++ b/core/modules/options/src/Tests/OptionsFieldTest.php
@@ -76,7 +76,7 @@ function testUpdateAllowedValues() {
     // Options are reset when a new field with the same name is created.
     $this->fieldStorage->delete();
     entity_create('field_storage_config', $this->fieldStorageDefinition)->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => $this->fieldName,
       'entity_type' => 'entity_test',
       'bundle' => 'entity_test',
diff --git a/core/modules/options/src/Tests/OptionsFieldUITest.php b/core/modules/options/src/Tests/OptionsFieldUITest.php
index ebbba4b..33f7d2e 100644
--- a/core/modules/options/src/Tests/OptionsFieldUITest.php
+++ b/core/modules/options/src/Tests/OptionsFieldUITest.php
@@ -252,7 +252,7 @@ protected function createOptionsField($type) {
       'entity_type' => 'node',
       'type' => $type,
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => $this->field_name,
       'entity_type' => 'node',
       'bundle' => $this->type,
diff --git a/core/modules/options/src/Tests/OptionsFieldUnitTestBase.php b/core/modules/options/src/Tests/OptionsFieldUnitTestBase.php
index 659928c..c101310 100644
--- a/core/modules/options/src/Tests/OptionsFieldUnitTestBase.php
+++ b/core/modules/options/src/Tests/OptionsFieldUnitTestBase.php
@@ -46,9 +46,9 @@
   /**
    * The list field instance used in the test.
    *
-   * @var \Drupal\field\Entity\FieldInstanceConfig
+   * @var \Drupal\field\Entity\FieldConfig
    */
-  protected $instance;
+  protected $field;
 
   /**
    * {@inheritdoc}
@@ -69,11 +69,11 @@ protected function setUp() {
     $this->fieldStorage = entity_create('field_storage_config', $this->fieldStorageDefinition);
     $this->fieldStorage->save();
 
-    $this->instance = entity_create('field_instance_config', array(
+    $this->field = entity_create('field_config', array(
       'field_storage' => $this->fieldStorage,
       'bundle' => 'entity_test',
     ));
-    $this->instance->save();
+    $this->field->save();
 
     entity_get_form_display('entity_test', 'entity_test', 'default')
       ->setComponent($this->fieldName, array(
diff --git a/core/modules/options/src/Tests/OptionsWidgetsTest.php b/core/modules/options/src/Tests/OptionsWidgetsTest.php
index 4d25950..35ced84 100644
--- a/core/modules/options/src/Tests/OptionsWidgetsTest.php
+++ b/core/modules/options/src/Tests/OptionsWidgetsTest.php
@@ -96,11 +96,11 @@ protected function setUp() {
    */
   function testRadioButtons() {
     // Create an instance of the 'single value' field.
-    $instance = entity_create('field_instance_config', array(
+    $field = entity_create('field_config', array(
       'field_storage' => $this->card_1,
       'bundle' => 'entity_test',
     ));
-    $instance->save();
+    $field->save();
     entity_get_form_display('entity_test', 'entity_test', 'default')
       ->setComponent($this->card_1->getName(), array(
         'type' => 'options_buttons',
@@ -142,8 +142,8 @@ function testRadioButtons() {
     // Check that required radios with one option is auto-selected.
     $this->card_1->settings['allowed_values'] = array(99 => 'Only allowed value');
     $this->card_1->save();
-    $instance->required = TRUE;
-    $instance->save();
+    $field->required = TRUE;
+    $field->save();
     $this->drupalGet('entity_test/manage/' . $entity->id());
     $this->assertFieldChecked('edit-card-1-99');
   }
@@ -153,11 +153,11 @@ function testRadioButtons() {
    */
   function testCheckBoxes() {
     // Create an instance of the 'multiple values' field.
-    $instance = entity_create('field_instance_config', array(
+    $field = entity_create('field_config', array(
       'field_storage' => $this->card_2,
       'bundle' => 'entity_test',
     ));
-    $instance->save();
+    $field->save();
     entity_get_form_display('entity_test', 'entity_test', 'default')
       ->setComponent($this->card_2->getName(), array(
         'type' => 'options_buttons',
@@ -231,8 +231,8 @@ function testCheckBoxes() {
     // Required checkbox with one option is auto-selected.
     $this->card_2->settings['allowed_values'] = array(99 => 'Only allowed value');
     $this->card_2->save();
-    $instance->required = TRUE;
-    $instance->save();
+    $field->required = TRUE;
+    $field->save();
     $this->drupalGet('entity_test/manage/' . $entity->id());
     $this->assertFieldChecked('edit-card-2-99');
   }
@@ -242,12 +242,12 @@ function testCheckBoxes() {
    */
   function testSelectListSingle() {
     // Create an instance of the 'single value' field.
-    $instance = entity_create('field_instance_config', array(
+    $field = entity_create('field_config', array(
       'field_storage' => $this->card_1,
       'bundle' => 'entity_test',
       'required' => TRUE,
     ));
-    $instance->save();
+    $field->save();
     entity_get_form_display('entity_test', 'entity_test', 'default')
       ->setComponent($this->card_1->getName(), array(
         'type' => 'options_select',
@@ -277,7 +277,7 @@ function testSelectListSingle() {
     // Submit form: select invalid 'none' option.
     $edit = array('card_1' => '_none');
     $this->drupalPostForm(NULL, $edit, t('Save'));
-    $this->assertRaw(t('!title field is required.', array('!title' => $instance->getName())), 'Cannot save a required field when selecting "none" from the select list.');
+    $this->assertRaw(t('!title field is required.', array('!title' => $field->getName())), 'Cannot save a required field when selecting "none" from the select list.');
 
     // Submit form: select first option.
     $edit = array('card_1' => 0);
@@ -293,8 +293,8 @@ function testSelectListSingle() {
     $this->assertNoOptionSelected('edit-card-1', 2);
 
     // Make the field non required.
-    $instance->required = FALSE;
-    $instance->save();
+    $field->required = FALSE;
+    $field->save();
 
     // Display form.
     $this->drupalGet('entity_test/manage/' . $entity->id());
@@ -342,11 +342,11 @@ function testSelectListSingle() {
    */
   function testSelectListMultiple() {
     // Create an instance of the 'multiple values' field.
-    $instance = entity_create('field_instance_config', array(
+    $field = entity_create('field_config', array(
       'field_storage' => $this->card_2,
       'bundle' => 'entity_test',
     ));
-    $instance->save();
+    $field->save();
     entity_get_form_display('entity_test', 'entity_test', 'default')
       ->setComponent($this->card_2->getName(), array(
         'type' => 'options_select',
@@ -415,8 +415,8 @@ function testSelectListMultiple() {
     $this->assertFieldValues($entity_init, 'card_2', array());
 
     // A required select list does not have an empty key.
-    $instance->required = TRUE;
-    $instance->save();
+    $field->required = TRUE;
+    $field->save();
     $this->drupalGet('entity_test/manage/' . $entity->id());
     $this->assertFalse($this->xpath('//select[@id=:id]//option[@value=""]', array(':id' => 'edit-card-2')), 'A required select list does not have an empty key.');
 
@@ -429,8 +429,8 @@ function testSelectListMultiple() {
     $this->card_2->settings['allowed_values'] = array();
     $this->card_2->settings['allowed_values_function'] = 'options_test_allowed_values_callback';
     $this->card_2->save();
-    $instance->required = FALSE;
-    $instance->save();
+    $field->required = FALSE;
+    $field->save();
 
     // Display form: with no field data, nothing is selected.
     $this->drupalGet('entity_test/manage/' . $entity->id());
diff --git a/core/modules/quickedit/src/Tests/EditorSelectionTest.php b/core/modules/quickedit/src/Tests/EditorSelectionTest.php
index 10bf38b..0ef18ab 100644
--- a/core/modules/quickedit/src/Tests/EditorSelectionTest.php
+++ b/core/modules/quickedit/src/Tests/EditorSelectionTest.php
@@ -55,7 +55,7 @@ protected function getSelectedEditor($entity_id, $field_name, $view_mode = 'defa
    */
   public function testText() {
     $field_name = 'field_text';
-    $this->createFieldWithInstance(
+    $this->createFieldWithStorage(
       $field_name, 'text', 1, 'Simple text field',
       // Instance settings.
       array('text_processing' => 0),
@@ -77,13 +77,13 @@ public function testText() {
     $this->assertEqual('plain_text', $this->getSelectedEditor($entity->id(), $field_name), "Without text processing, cardinality 1, the 'plain_text' editor is selected.");
 
     // Editor selection with text processing, cardinality 1.
-    $this->fields->field_text_instance->settings['text_processing'] = 1;
-    $this->fields->field_text_instance->save();
+    $this->fields->field_text_field->settings['text_processing'] = 1;
+    $this->fields->field_text_field->save();
     $this->assertEqual('form', $this->getSelectedEditor($entity->id(), $field_name), "With text processing, cardinality 1, the 'form' editor is selected.");
 
     // Editor selection without text processing, cardinality 1 (again).
-    $this->fields->field_text_instance->settings['text_processing'] = 0;
-    $this->fields->field_text_instance->save();
+    $this->fields->field_text_field->settings['text_processing'] = 0;
+    $this->fields->field_text_field->save();
     $this->assertEqual('plain_text', $this->getSelectedEditor($entity->id(), $field_name), "Without text processing again, cardinality 1, the 'plain_text' editor is selected.");
 
     // Editor selection without text processing, cardinality >1
@@ -92,8 +92,8 @@ public function testText() {
     $this->assertEqual('form', $this->getSelectedEditor($entity->id(), $field_name), "Without text processing, cardinality >1, the 'form' editor is selected.");
 
     // Editor selection with text processing, cardinality >1
-    $this->fields->field_text_instance->settings['text_processing'] = 1;
-    $this->fields->field_text_instance->save();
+    $this->fields->field_text_field->settings['text_processing'] = 1;
+    $this->fields->field_text_field->save();
     $this->assertEqual('form', $this->getSelectedEditor($entity->id(), $field_name), "With text processing, cardinality >1, the 'form' editor is selected.");
   }
 
@@ -109,7 +109,7 @@ public function testTextWysiwyg() {
     $this->editorSelector = new EditorSelector($this->editorManager, $this->container->get('plugin.manager.field.formatter'));
 
     $field_name = 'field_textarea';
-    $this->createFieldWithInstance(
+    $this->createFieldWithStorage(
       $field_name, 'text', 1, 'Long text field',
       // Instance settings.
       array('text_processing' => 1),
@@ -146,7 +146,7 @@ public function testTextWysiwyg() {
    */
   public function testNumber() {
     $field_name = 'field_nr';
-    $this->createFieldWithInstance(
+    $this->createFieldWithStorage(
       $field_name, 'integer', 1, 'Simple number field',
       // Instance settings.
       array(),
diff --git a/core/modules/quickedit/src/Tests/MetadataGeneratorTest.php b/core/modules/quickedit/src/Tests/MetadataGeneratorTest.php
index bf1df14..5bfcffe 100644
--- a/core/modules/quickedit/src/Tests/MetadataGeneratorTest.php
+++ b/core/modules/quickedit/src/Tests/MetadataGeneratorTest.php
@@ -68,7 +68,7 @@ protected function setUp() {
   public function testSimpleEntityType() {
     $field_1_name = 'field_text';
     $field_1_label = 'Simple text field';
-    $this->createFieldWithInstance(
+    $this->createFieldWithStorage(
       $field_1_name, 'text', 1, $field_1_label,
       // Instance settings.
       array('text_processing' => 0),
@@ -81,7 +81,7 @@ public function testSimpleEntityType() {
     );
     $field_2_name = 'field_nr';
     $field_2_label = 'Simple number field';
-    $this->createFieldWithInstance(
+    $this->createFieldWithStorage(
       $field_2_name, 'integer', 1, $field_2_label,
       // Instance settings.
       array(),
@@ -140,7 +140,7 @@ public function testEditorWithCustomMetadata() {
     // Create a rich text field.
     $field_name = 'field_rich';
     $field_label = 'Rich text field';
-    $this->createFieldWithInstance(
+    $this->createFieldWithStorage(
       $field_name, 'text', 1, $field_label,
       // Instance settings.
       array('text_processing' => 1),
diff --git a/core/modules/quickedit/src/Tests/QuickEditAutocompleteTermTest.php b/core/modules/quickedit/src/Tests/QuickEditAutocompleteTermTest.php
index 7e91724..4f4e4d8 100644
--- a/core/modules/quickedit/src/Tests/QuickEditAutocompleteTermTest.php
+++ b/core/modules/quickedit/src/Tests/QuickEditAutocompleteTermTest.php
@@ -89,7 +89,7 @@ protected function setUp() {
         ),
       ),
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => $this->field_name,
       'entity_type' => 'node',
       'label' => 'Tags',
diff --git a/core/modules/quickedit/src/Tests/QuickEditTestBase.php b/core/modules/quickedit/src/Tests/QuickEditTestBase.php
index 4f4ece7..417af86 100644
--- a/core/modules/quickedit/src/Tests/QuickEditTestBase.php
+++ b/core/modules/quickedit/src/Tests/QuickEditTestBase.php
@@ -28,7 +28,7 @@
    * - $this->fields->{$field_name}_field_storage
    * - $this->fields->{$field_name}_instance
    *
-   * @see \Drupal\quickedit\Tests\QuickEditTestBase::createFieldWithInstance()
+   * @see \Drupal\quickedit\Tests\QuickEditTestBase::createFieldWithStorage()
    *
    * @var \ArrayObject
    */
@@ -57,7 +57,7 @@ protected function setUp() {
    *   The field's cardinality.
    * @param string $label
    *   The field's label (used everywhere: widget label, formatter label).
-   * @param array $instance_settings
+   * @param array $field_settings
    * @param string $widget_type
    *   The widget type.
    * @param array $widget_settings
@@ -67,7 +67,7 @@ protected function setUp() {
    * @param array $formatter_settings
    *   The formatter settings.
    */
-  protected function createFieldWithInstance($field_name, $type, $cardinality, $label, $instance_settings, $widget_type, $widget_settings, $formatter_type, $formatter_settings) {
+  protected function createFieldWithStorage($field_name, $type, $cardinality, $label, $field_settings, $widget_type, $widget_settings, $formatter_type, $formatter_settings) {
     $field_storage = $field_name . '_field_storage';
     $this->fields->$field_storage = entity_create('field_storage_config', array(
       'name' => $field_name,
@@ -77,16 +77,16 @@ protected function createFieldWithInstance($field_name, $type, $cardinality, $la
     ));
     $this->fields->$field_storage->save();
 
-    $instance = $field_name . '_instance';
-    $this->fields->$instance = entity_create('field_instance_config', array(
+    $field = $field_name . '_field';
+    $this->fields->$field = entity_create('field_config', array(
       'field_storage' => $this->fields->$field_storage,
       'bundle' => 'entity_test',
       'label' => $label,
       'description' => $label,
       'weight' => mt_rand(0, 127),
-      'settings' => $instance_settings,
+      'settings' => $field_settings,
     ));
-    $this->fields->$instance->save();
+    $this->fields->$field->save();
 
     entity_get_form_display('entity_test', 'entity_test', 'default')
       ->setComponent($field_name, array(
diff --git a/core/modules/rdf/src/Tests/Field/EntityReferenceRdfaTest.php b/core/modules/rdf/src/Tests/Field/EntityReferenceRdfaTest.php
index 781ad69..7160bf0 100644
--- a/core/modules/rdf/src/Tests/Field/EntityReferenceRdfaTest.php
+++ b/core/modules/rdf/src/Tests/Field/EntityReferenceRdfaTest.php
@@ -53,7 +53,7 @@ protected function setUp() {
 
     $this->installEntitySchema('entity_test_rev');
 
-    entity_reference_create_instance($this->entityType, $this->bundle, $this->fieldName, 'Field test', $this->entityType);
+    entity_reference_create_field($this->entityType, $this->bundle, $this->fieldName, 'Field test', $this->entityType);
 
     // Add the mapping.
     $mapping = rdf_get_mapping('entity_test', 'entity_test');
diff --git a/core/modules/rdf/src/Tests/Field/FieldRdfaTestBase.php b/core/modules/rdf/src/Tests/Field/FieldRdfaTestBase.php
index 5332912..3ad3b27 100644
--- a/core/modules/rdf/src/Tests/Field/FieldRdfaTestBase.php
+++ b/core/modules/rdf/src/Tests/Field/FieldRdfaTestBase.php
@@ -116,7 +116,7 @@ protected function createTestField() {
       'entity_type' => 'entity_test',
       'type' => $this->fieldType,
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => $this->fieldName,
       'bundle' => 'entity_test',
diff --git a/core/modules/rdf/src/Tests/Field/TaxonomyTermReferenceRdfaTest.php b/core/modules/rdf/src/Tests/Field/TaxonomyTermReferenceRdfaTest.php
index ed4bbf5..301e660 100644
--- a/core/modules/rdf/src/Tests/Field/TaxonomyTermReferenceRdfaTest.php
+++ b/core/modules/rdf/src/Tests/Field/TaxonomyTermReferenceRdfaTest.php
@@ -68,7 +68,7 @@ protected function setUp() {
         ),
       ),
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => $this->fieldName,
       'bundle' => 'entity_test',
diff --git a/core/modules/rdf/src/Tests/TaxonomyTermFieldAttributesTest.php b/core/modules/rdf/src/Tests/TaxonomyTermFieldAttributesTest.php
index 3d55fef..d6dd046 100644
--- a/core/modules/rdf/src/Tests/TaxonomyTermFieldAttributesTest.php
+++ b/core/modules/rdf/src/Tests/TaxonomyTermFieldAttributesTest.php
@@ -163,7 +163,7 @@ protected function createTaxonomyTermReferenceField($field_name, $vocabulary) {
         ),
       ),
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => $field_name,
       'entity_type' => 'node',
       'bundle' => 'article',
diff --git a/core/modules/search/src/Tests/SearchCommentTest.php b/core/modules/search/src/Tests/SearchCommentTest.php
index c64d3ed..70d8c85 100644
--- a/core/modules/search/src/Tests/SearchCommentTest.php
+++ b/core/modules/search/src/Tests/SearchCommentTest.php
@@ -9,7 +9,7 @@
 
 use Drupal\comment\Plugin\Field\FieldType\CommentItemInterface;
 use Drupal\Component\Utility\String;
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 
 /**
  * Tests integration searching comments.
@@ -74,9 +74,9 @@ function testSearchResultsComment() {
     $comment_body = 'Test comment body';
 
     // Make preview optional.
-    $instance = FieldInstanceConfig::loadByName('node', 'article', 'comment');
-    $instance->settings['preview'] = DRUPAL_OPTIONAL;
-    $instance->save();
+    $field = FieldConfig::loadByName('node', 'article', 'comment');
+    $field->settings['preview'] = DRUPAL_OPTIONAL;
+    $field->save();
 
     // Allow anonymous users to search content.
     $edit = array(
@@ -146,9 +146,9 @@ function testSearchResultsCommentAccess() {
 
     // Create a node.
     // Make preview optional.
-    $instance = FieldInstanceConfig::loadByName('node', 'article', 'comment');
-    $instance->settings['preview'] = DRUPAL_OPTIONAL;
-    $instance->save();
+    $field = FieldConfig::loadByName('node', 'article', 'comment');
+    $field->settings['preview'] = DRUPAL_OPTIONAL;
+    $field->save();
     $this->node = $this->drupalCreateNode(array('type' => 'article'));
 
     // Post a comment using 'Full HTML' text format.
diff --git a/core/modules/serialization/src/Tests/EntityResolverTest.php b/core/modules/serialization/src/Tests/EntityResolverTest.php
index db65692..d3cd12c 100644
--- a/core/modules/serialization/src/Tests/EntityResolverTest.php
+++ b/core/modules/serialization/src/Tests/EntityResolverTest.php
@@ -41,7 +41,7 @@ protected function setUp() {
     ))->save();
 
     // Create the test field instance.
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => 'entity_test_mulrev',
       'field_name' => 'field_test_entity_reference',
       'bundle' => 'entity_test_mulrev',
diff --git a/core/modules/serialization/src/Tests/NormalizerTestBase.php b/core/modules/serialization/src/Tests/NormalizerTestBase.php
index 8d5bf5c..531c53d 100644
--- a/core/modules/serialization/src/Tests/NormalizerTestBase.php
+++ b/core/modules/serialization/src/Tests/NormalizerTestBase.php
@@ -34,7 +34,7 @@ protected function setUp() {
       'cardinality' => 1,
       'translatable' => FALSE,
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => 'entity_test_mulrev',
       'field_name' => 'field_test_text',
       'bundle' => 'entity_test_mulrev',
diff --git a/core/modules/simpletest/src/Tests/KernelTestBaseTest.php b/core/modules/simpletest/src/Tests/KernelTestBaseTest.php
index adf573e..fe342e6 100644
--- a/core/modules/simpletest/src/Tests/KernelTestBaseTest.php
+++ b/core/modules/simpletest/src/Tests/KernelTestBaseTest.php
@@ -256,7 +256,7 @@ function testEnableModulesFixedList() {
       'type' => 'test_field'
     ));
     $field_storage->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'entity_test',
     ))->save();
diff --git a/core/modules/system/src/Tests/Ajax/MultiFormTest.php b/core/modules/system/src/Tests/Ajax/MultiFormTest.php
index 1d6c505..6d14123 100644
--- a/core/modules/system/src/Tests/Ajax/MultiFormTest.php
+++ b/core/modules/system/src/Tests/Ajax/MultiFormTest.php
@@ -37,7 +37,7 @@ protected function setUp() {
       'type' => 'text',
       'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => $field_name,
       'entity_type' => 'node',
       'bundle' => 'page',
diff --git a/core/modules/system/src/Tests/Entity/EntityCacheTagsTestBase.php b/core/modules/system/src/Tests/Entity/EntityCacheTagsTestBase.php
index 94b27fc..5ad00f5 100644
--- a/core/modules/system/src/Tests/Entity/EntityCacheTagsTestBase.php
+++ b/core/modules/system/src/Tests/Entity/EntityCacheTagsTestBase.php
@@ -66,7 +66,7 @@ protected function setUp() {
     // this configurable field in later tests to ensure that modifications to
     // field (instance) configuration invalidate render cache entries.
     if ($this->entity->getEntityType()->isFieldable()) {
-      // Add field, so we can modify the Field and FieldInstance entities to
+      // Add field, so we can modify the Field and Field entities to
       // verify that changes to those indeed clear cache tags.
       entity_create('field_storage_config', array(
         'name' => 'configurable_field',
@@ -74,7 +74,7 @@ protected function setUp() {
         'type' => 'test_field',
         'settings' => array(),
       ))->save();
-      entity_create('field_instance_config', array(
+      entity_create('field_config', array(
         'entity_type' => $this->entity->getEntityTypeId(),
         'bundle' => $this->entity->bundle(),
         'field_name' => 'configurable_field',
@@ -193,7 +193,7 @@ protected function createReferenceTestEntities($referenced_entity) {
         'target_type' => $referenced_entity->getEntityTypeId(),
       ),
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => $field_name,
       'entity_type' => $entity_type,
       'bundle' => $bundle,
@@ -402,8 +402,8 @@ public function testReferencedEntity() {
       // Verify that after modifying a configurable field on the entity, there
       // is a cache miss.
       $this->pass("Test modification of referenced entity's configurable field.", 'Debug');
-      $field_name = $this->entity->getEntityTypeId() . '.configurable_field';
-      $field_storage = entity_load('field_storage_config', $field_name);
+      $field_storage_name = $this->entity->getEntityTypeId() . '.configurable_field';
+      $field_storage = entity_load('field_storage_config', $field_storage_name);
       $field_storage->save();
       $this->verifyPageCache($referencing_entity_path, 'MISS');
       $this->verifyPageCache($listing_path, 'MISS');
@@ -417,9 +417,9 @@ public function testReferencedEntity() {
       // Verify that after modifying a configurable field instance on the
       // entity, there is a cache miss.
       $this->pass("Test modification of referenced entity's configurable field instance.", 'Debug');
-      $field_instance_name = $this->entity->getEntityTypeId() . '.' . $this->entity->bundle() . '.configurable_field';
-      $field_instance = entity_load('field_instance_config', $field_instance_name);
-      $field_instance->save();
+      $field_name = $this->entity->getEntityTypeId() . '.' . $this->entity->bundle() . '.configurable_field';
+      $field = entity_load('field_config', $field_name);
+      $field->save();
       $this->verifyPageCache($referencing_entity_path, 'MISS');
       $this->verifyPageCache($listing_path, 'MISS');
       $this->verifyPageCache($non_referencing_entity_path, 'HIT');
diff --git a/core/modules/system/src/Tests/Entity/EntityFieldTest.php b/core/modules/system/src/Tests/Entity/EntityFieldTest.php
index c69d2cf..2c90615 100644
--- a/core/modules/system/src/Tests/Entity/EntityFieldTest.php
+++ b/core/modules/system/src/Tests/Entity/EntityFieldTest.php
@@ -17,7 +17,7 @@
 use Drupal\Core\TypedData\DataDefinitionInterface;
 use Drupal\Core\TypedData\Type\StringInterface;
 use Drupal\Core\TypedData\TypedDataInterface;
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 use Drupal\node\Entity\NodeType;
 
 /**
@@ -684,9 +684,9 @@ public function testComputedProperties() {
    */
   protected function assertComputedProperties($entity_type) {
     // Make the test text field processed.
-    $instance = FieldInstanceConfig::loadByName($entity_type, $entity_type, 'field_test_text');
-    $instance->settings['text_processing'] = 1;
-    $instance->save();
+    $field = FieldConfig::loadByName($entity_type, $entity_type, 'field_test_text');
+    $field->settings['text_processing'] = 1;
+    $field->save();
 
     $entity = $this->createTestEntity($entity_type);
     $entity->field_test_text->value = "The <strong>text</strong> text to filter.";
diff --git a/core/modules/system/src/Tests/Entity/EntityLanguageTestBase.php b/core/modules/system/src/Tests/Entity/EntityLanguageTestBase.php
index b73495e..922b0b9 100644
--- a/core/modules/system/src/Tests/Entity/EntityLanguageTestBase.php
+++ b/core/modules/system/src/Tests/Entity/EntityLanguageTestBase.php
@@ -8,7 +8,7 @@
 namespace Drupal\system\Tests\Entity;
 
 use Drupal\Core\Language\Language;
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 
 /**
  * Base class for language-aware entity tests.
@@ -37,13 +37,6 @@
   protected $field_name;
 
   /**
-   * Test field instances, keyed by entity type.
-   *
-   * @var array
-   */
-  protected $instance;
-
-  /**
    * The untranslatable test field name.
    *
    * @var string
@@ -75,7 +68,7 @@ protected function setUp() {
     // Create an untranslatable test field.
     $this->untranslatable_field_name = drupal_strtolower($this->randomMachineName() . '_field_name');
 
-    // Create field instances in all entity variations.
+    // Create field fields in all entity variations.
     foreach (entity_test_entity_types() as $entity_type) {
       entity_create('field_storage_config', array(
         'name' => $this->field_name,
@@ -83,13 +76,13 @@ protected function setUp() {
         'type' => 'text',
         'cardinality' => 4,
       ))->save();
-      entity_create('field_instance_config', array(
+      entity_create('field_config', array(
         'field_name' => $this->field_name,
         'entity_type' => $entity_type,
         'bundle' => $entity_type,
         'translatable' => TRUE,
       ))->save();
-      $this->instance[$entity_type] = entity_load('field_instance_config', $entity_type . '.' . $entity_type . '.' . $this->field_name);
+      $this->field[$entity_type] = entity_load('field_config', $entity_type . '.' . $entity_type . '.' . $this->field_name);
 
       entity_create('field_storage_config', array(
         'name' => $this->untranslatable_field_name,
@@ -97,7 +90,7 @@ protected function setUp() {
         'type' => 'text',
         'cardinality' => 4,
       ))->save();
-      entity_create('field_instance_config', array(
+      entity_create('field_config', array(
         'field_name' => $this->untranslatable_field_name,
         'entity_type' => $entity_type,
         'bundle' => $entity_type,
@@ -134,12 +127,12 @@ protected function setUp() {
   protected function toggleFieldTranslatability($entity_type, $bundle) {
     $fields = array($this->field_name, $this->untranslatable_field_name);
     foreach ($fields as $field_name) {
-      $instance = FieldInstanceConfig::loadByName($entity_type, $bundle, $field_name);
-      $translatable = !$instance->isTranslatable();
-      $instance->set('translatable', $translatable);
-      $instance->save();
-      $instance = FieldInstanceConfig::loadByName($entity_type, $bundle, $field_name);
-      $this->assertEqual($instance->isTranslatable(), $translatable, 'Field translatability changed.');
+      $field = FieldConfig::loadByName($entity_type, $bundle, $field_name);
+      $translatable = !$field->isTranslatable();
+      $field->set('translatable', $translatable);
+      $field->save();
+      $field = FieldConfig::loadByName($entity_type, $bundle, $field_name);
+      $this->assertEqual($field->isTranslatable(), $translatable, 'Field translatability changed.');
     }
     \Drupal::cache('entity')->deleteAll();
   }
diff --git a/core/modules/system/src/Tests/Entity/EntityQueryAggregateTest.php b/core/modules/system/src/Tests/Entity/EntityQueryAggregateTest.php
index 5d6da72..08665b9 100644
--- a/core/modules/system/src/Tests/Entity/EntityQueryAggregateTest.php
+++ b/core/modules/system/src/Tests/Entity/EntityQueryAggregateTest.php
@@ -57,7 +57,7 @@ protected function setUp() {
         'type' => 'integer',
         'cardinality' => 2,
       ))->save();
-      entity_create('field_instance_config', array(
+      entity_create('field_config', array(
         'field_name' => $field_name,
         'entity_type' => 'entity_test',
         'bundle' => 'entity_test',
diff --git a/core/modules/system/src/Tests/Entity/EntityQueryRelationshipTest.php b/core/modules/system/src/Tests/Entity/EntityQueryRelationshipTest.php
index 5ba0d74..222e925 100644
--- a/core/modules/system/src/Tests/Entity/EntityQueryRelationshipTest.php
+++ b/core/modules/system/src/Tests/Entity/EntityQueryRelationshipTest.php
@@ -83,7 +83,7 @@ protected function setUp() {
     entity_create('field_storage_config', $field)->save();
     entity_test_create_bundle('test_bundle');
     // Third, create the instance.
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => $this->fieldName,
       'bundle' => 'test_bundle',
diff --git a/core/modules/system/src/Tests/Entity/EntityQueryTest.php b/core/modules/system/src/Tests/Entity/EntityQueryTest.php
index 182ca05..5fb3cce 100644
--- a/core/modules/system/src/Tests/Entity/EntityQueryTest.php
+++ b/core/modules/system/src/Tests/Entity/EntityQueryTest.php
@@ -78,7 +78,7 @@ protected function setUp() {
       } while ($bundles && strtolower($bundles[0]) >= strtolower($bundle));
       entity_test_create_bundle($bundle);
       foreach ($field_storages as $field_storage) {
-        entity_create('field_instance_config', array(
+        entity_create('field_config', array(
           'field_storage' => $field_storage,
           'bundle' => $bundle,
         ))->save();
@@ -434,7 +434,7 @@ public function testCount() {
     ));
     $field_storage->save();
     $bundle = $this->randomMachineName();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => $bundle,
     ))->save();
diff --git a/core/modules/system/src/Tests/Entity/EntityTranslationTest.php b/core/modules/system/src/Tests/Entity/EntityTranslationTest.php
index 1cb7c82..ce5bda4 100644
--- a/core/modules/system/src/Tests/Entity/EntityTranslationTest.php
+++ b/core/modules/system/src/Tests/Entity/EntityTranslationTest.php
@@ -435,14 +435,14 @@ function testEntityTranslationAPI() {
 
     // Check that per-language defaults are properly populated.
     $entity = $this->reloadEntity($entity);
-    $instance_id = implode('.', array($entity->getEntityTypeId(), $entity->bundle(), $this->field_name));
-    $instance = $this->entityManager->getStorage('field_instance_config')->load($instance_id);
-    $instance->default_value_function = 'entity_test_field_default_value';
-    $instance->save();
+    $field_id = implode('.', array($entity->getEntityTypeId(), $entity->bundle(), $this->field_name));
+    $field = $this->entityManager->getStorage('field_config')->load($field_id);
+    $field->default_value_function = 'entity_test_field_default_value';
+    $field->save();
     $translation = $entity->addTranslation($langcode2);
-    $field = $translation->get($this->field_name);
-    $this->assertEqual($field->value, $this->field_name . '_' . $langcode2, 'Language-aware default values correctly populated.');
-    $this->assertEqual($field->getLangcode(), $langcode2, 'Field object has the expected langcode.');
+    $field_storage = $translation->get($this->field_name);
+    $this->assertEqual($field_storage->value, $this->field_name . '_' . $langcode2, 'Language-aware default values correctly populated.');
+    $this->assertEqual($field_storage->getLangcode(), $langcode2, 'Field object has the expected langcode.');
   }
 
   /**
diff --git a/core/modules/system/src/Tests/Entity/EntityViewBuilderTest.php b/core/modules/system/src/Tests/Entity/EntityViewBuilderTest.php
index 65355fe..7f72526 100644
--- a/core/modules/system/src/Tests/Entity/EntityViewBuilderTest.php
+++ b/core/modules/system/src/Tests/Entity/EntityViewBuilderTest.php
@@ -85,7 +85,7 @@ public function testEntityViewBuilderCacheWithReferences() {
     $request->setMethod('GET');
 
     // Create an entity reference field and an entity that will be referenced.
-    entity_reference_create_instance('entity_test', 'entity_test', 'reference_field', 'Reference', 'entity_test');
+    entity_reference_create_field('entity_test', 'entity_test', 'reference_field', 'Reference', 'entity_test');
     entity_get_display('entity_test', 'entity_test', 'full')->setComponent('reference_field')->save();
     $entity_test_reference = $this->createTestEntity('entity_test');
     $entity_test_reference->save();
diff --git a/core/modules/system/src/Tests/Entity/EntityWithUriCacheTagsTestBase.php b/core/modules/system/src/Tests/Entity/EntityWithUriCacheTagsTestBase.php
index 6f1d7a8..6b09baa 100644
--- a/core/modules/system/src/Tests/Entity/EntityWithUriCacheTagsTestBase.php
+++ b/core/modules/system/src/Tests/Entity/EntityWithUriCacheTagsTestBase.php
@@ -86,8 +86,8 @@ public function testEntityUri() {
       // Verify that after modifying a configurable field on the entity, there
       // is a cache miss.
       $this->pass("Test modification of entity's configurable field.", 'Debug');
-      $field_name = $this->entity->getEntityTypeId() . '.configurable_field';
-      $field_storage = entity_load('field_storage_config', $field_name);
+      $field_storage_name = $this->entity->getEntityTypeId() . '.configurable_field';
+      $field_storage = entity_load('field_storage_config', $field_storage_name);
       $field_storage->save();
       $this->verifyPageCache($entity_path, 'MISS');
 
@@ -97,9 +97,9 @@ public function testEntityUri() {
       // Verify that after modifying a configurable field instance on the
       // entity, there is a cache miss.
       $this->pass("Test modification of entity's configurable field instance.", 'Debug');
-      $field_instance_name = $this->entity->getEntityTypeId() . '.' . $this->entity->bundle() . '.configurable_field';
-      $field_instance = entity_load('field_instance_config', $field_instance_name);
-      $field_instance->save();
+      $field_name = $this->entity->getEntityTypeId() . '.' . $this->entity->bundle() . '.configurable_field';
+      $field = entity_load('field_config', $field_name);
+      $field->save();
       $this->verifyPageCache($entity_path, 'MISS');
 
       // Verify a cache hit.
diff --git a/core/modules/system/src/Tests/Entity/FieldSqlStorageTest.php b/core/modules/system/src/Tests/Entity/FieldSqlStorageTest.php
index 924164c..85dae23 100644
--- a/core/modules/system/src/Tests/Entity/FieldSqlStorageTest.php
+++ b/core/modules/system/src/Tests/Entity/FieldSqlStorageTest.php
@@ -51,9 +51,9 @@ class FieldSqlStorageTest extends EntityUnitTestBase {
   /**
    * A field instance to use in this test class.
    *
-   * @var \Drupal\field\Entity\FieldInstanceConfig
+   * @var \Drupal\field\Entity\FieldConfig
    */
-  protected $instance;
+  protected $field;
 
   /**
    * @var string
@@ -82,11 +82,11 @@ protected function setUp() {
       'cardinality' => $this->field_cardinality,
     ));
     $this->fieldStorage->save();
-    $this->instance = entity_create('field_instance_config', array(
+    $this->field = entity_create('field_config', array(
       'field_storage' => $this->fieldStorage,
       'bundle' => $entity_type
     ));
-    $this->instance->save();
+    $this->field->save();
 
     $this->table = ContentEntityDatabaseStorage::_fieldTableName($this->fieldStorage);
     $this->revision_table = ContentEntityDatabaseStorage::_fieldRevisionTableName($this->fieldStorage);
@@ -275,7 +275,7 @@ function testLongNames() {
         'entity_type' => $entity_type,
         'type' => 'test_field',
       ))->save();
-      entity_create('field_instance_config', array(
+      entity_create('field_config', array(
         'field_name' => $field_names[$i],
         'entity_type' => $entity_type,
         'bundle' => $bundle,
@@ -307,11 +307,11 @@ function testUpdateFieldSchemaWithData() {
       'settings' => array('precision' => 5, 'scale' => 2),
     ));
     $field_storage->save();
-    $instance = entity_create('field_instance_config', array(
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => $entity_type,
     ));
-    $instance->save();
+    $field->save();
     $entity = entity_create($entity_type, array(
       'id' => 0,
       'revision_id' => 0,
@@ -373,11 +373,11 @@ function testFieldUpdateIndexesWithData() {
       'type' => 'text',
     ));
     $field_storage->save();
-    $instance = entity_create('field_instance_config', array(
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => $entity_type,
     ));
-    $instance->save();
+    $field->save();
     $tables = array(ContentEntityDatabaseStorage::_fieldTableName($field_storage), ContentEntityDatabaseStorage::_fieldRevisionTableName($field_storage));
 
     // Verify the indexes we will create do not exist yet.
diff --git a/core/modules/system/src/Tests/Form/ArbitraryRebuildTest.php b/core/modules/system/src/Tests/Form/ArbitraryRebuildTest.php
index 7949f0b..e625f42 100644
--- a/core/modules/system/src/Tests/Form/ArbitraryRebuildTest.php
+++ b/core/modules/system/src/Tests/Form/ArbitraryRebuildTest.php
@@ -34,7 +34,7 @@ protected function setUp() {
       'cardinality' => -1,
       'translatable' => FALSE,
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => 'user',
       'field_name' => 'test_multiple',
       'bundle' => 'user',
diff --git a/core/modules/system/src/Tests/Form/RebuildTest.php b/core/modules/system/src/Tests/Form/RebuildTest.php
index dadf519..70755c3 100644
--- a/core/modules/system/src/Tests/Form/RebuildTest.php
+++ b/core/modules/system/src/Tests/Form/RebuildTest.php
@@ -71,7 +71,7 @@ function testPreserveFormActionAfterAJAX() {
       'type' => 'text',
       'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => $field_name,
       'entity_type' => 'node',
       'bundle' => 'page',
diff --git a/core/modules/system/tests/modules/entity_test/entity_test.install b/core/modules/system/tests/modules/entity_test/entity_test.install
index 4dfd09b..541191d 100644
--- a/core/modules/system/tests/modules/entity_test/entity_test.install
+++ b/core/modules/system/tests/modules/entity_test/entity_test.install
@@ -23,7 +23,7 @@ function entity_test_install() {
       'type' => 'text',
       'cardinality' => 1,
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => $entity_type,
       'field_name' => 'field_test_text',
       'bundle' => $entity_type,
diff --git a/core/modules/system/tests/modules/entity_test/entity_test.module b/core/modules/system/tests/modules/entity_test/entity_test.module
index c7db020..e0d0d1a 100644
--- a/core/modules/system/tests/modules/entity_test/entity_test.module
+++ b/core/modules/system/tests/modules/entity_test/entity_test.module
@@ -431,7 +431,7 @@ function entity_test_entity_test_mul_translation_delete(EntityInterface $transla
  *   An array of default values, in the same format as the $default_value
  *   property.
  *
- * @see \Drupal\field\Entity\FieldInstanceConfig::$default_value
+ * @see \Drupal\field\Entity\FieldConfig::$default_value
  */
 function entity_test_field_default_value(ContentEntityInterface $entity, FieldDefinitionInterface $definition) {
   return array(array('value' => $definition->getName() . '_' . $entity->language()->id));
diff --git a/core/modules/taxonomy/config/schema/taxonomy.schema.yml b/core/modules/taxonomy/config/schema/taxonomy.schema.yml
index 40004c3..04d8f5a 100644
--- a/core/modules/taxonomy/config/schema/taxonomy.schema.yml
+++ b/core/modules/taxonomy/config/schema/taxonomy.schema.yml
@@ -34,7 +34,7 @@ taxonomy.vocabulary.*:
       type: integer
       label: 'Weight'
 
-field.taxonomy_term_reference.settings:
+field.taxonomy_term_reference.storage_settings:
   type: base_entity_reference_field_settings
   label: 'Taxonomy term reference settings'
   mapping:
@@ -55,7 +55,7 @@ field.taxonomy_term_reference.settings:
               type: integer
               value: 'Parent'
 
-field.taxonomy_term_reference.instance_settings:
+field.taxonomy_term_reference.field_settings:
   type: mapping
   label: 'Taxonomy term reference settings'
   mapping:
diff --git a/core/modules/taxonomy/src/Plugin/Field/FieldType/TaxonomyTermReferenceItem.php b/core/modules/taxonomy/src/Plugin/Field/FieldType/TaxonomyTermReferenceItem.php
index c58a631..a22f54c 100644
--- a/core/modules/taxonomy/src/Plugin/Field/FieldType/TaxonomyTermReferenceItem.php
+++ b/core/modules/taxonomy/src/Plugin/Field/FieldType/TaxonomyTermReferenceItem.php
@@ -31,7 +31,7 @@ class TaxonomyTermReferenceItem extends EntityReferenceItem implements AllowedVa
   /**
    * {@inheritdoc}
    */
-  public static function defaultSettings() {
+  public static function defaultStorageSettings() {
     return array(
       'target_type' => 'taxonomy_term',
       'options_list_callback' => NULL,
@@ -41,7 +41,7 @@ public static function defaultSettings() {
           'parent' => 0,
         ),
       ),
-    ) + parent::defaultSettings();
+    ) + parent::defaultStorageSettings();
   }
 
   /**
@@ -120,7 +120,7 @@ public static function schema(FieldStorageDefinitionInterface $field_definition)
   /**
    * {@inheritdoc}
    */
-  public function settingsForm(array &$form, FormStateInterface $form_state, $has_data) {
+  public function storageSettingsForm(array &$form, FormStateInterface $form_state, $has_data) {
     $vocabularies = entity_load_multiple('taxonomy_vocabulary');
     $options = array();
     foreach ($vocabularies as $vocabulary) {
@@ -152,7 +152,7 @@ public function settingsForm(array &$form, FormStateInterface $form_state, $has_
   /**
    * {@inheritdoc}
    */
-  public function instanceSettingsForm(array $form, FormStateInterface $form_state) {
+  public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
     return array();
   }
 
diff --git a/core/modules/taxonomy/src/Tests/LegacyTest.php b/core/modules/taxonomy/src/Tests/LegacyTest.php
index 8a2ac68..faebc48 100644
--- a/core/modules/taxonomy/src/Tests/LegacyTest.php
+++ b/core/modules/taxonomy/src/Tests/LegacyTest.php
@@ -49,7 +49,7 @@ protected function setUp() {
         ),
       ),
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => 'node',
       'field_name' => $field_name,
       'bundle' => 'article',
diff --git a/core/modules/taxonomy/src/Tests/RssTest.php b/core/modules/taxonomy/src/Tests/RssTest.php
index 5410e7f..8ad0403 100644
--- a/core/modules/taxonomy/src/Tests/RssTest.php
+++ b/core/modules/taxonomy/src/Tests/RssTest.php
@@ -47,7 +47,7 @@ protected function setUp() {
       ),
     ));
     $this->fieldStorage->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_storage' => $this->fieldStorage,
       'bundle' => 'article',
     ))->save();
diff --git a/core/modules/taxonomy/src/Tests/TaxonomyImageTest.php b/core/modules/taxonomy/src/Tests/TaxonomyImageTest.php
index c70ae8e..217bfd2 100644
--- a/core/modules/taxonomy/src/Tests/TaxonomyImageTest.php
+++ b/core/modules/taxonomy/src/Tests/TaxonomyImageTest.php
@@ -46,7 +46,7 @@ protected function setUp() {
         'uri_scheme' => 'private',
       ),
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => $name,
       'entity_type' => $entity_type,
       'bundle' => $this->vocabulary->id(),
diff --git a/core/modules/taxonomy/src/Tests/TaxonomyTermReferenceItemTest.php b/core/modules/taxonomy/src/Tests/TaxonomyTermReferenceItemTest.php
index 3db2290..87ee50f 100644
--- a/core/modules/taxonomy/src/Tests/TaxonomyTermReferenceItemTest.php
+++ b/core/modules/taxonomy/src/Tests/TaxonomyTermReferenceItemTest.php
@@ -59,7 +59,7 @@ protected function setUp() {
         ),
       ),
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => 'field_test_taxonomy',
       'bundle' => 'entity_test',
diff --git a/core/modules/taxonomy/src/Tests/TermFieldMultipleVocabularyTest.php b/core/modules/taxonomy/src/Tests/TermFieldMultipleVocabularyTest.php
index 4588587..c18c59c 100644
--- a/core/modules/taxonomy/src/Tests/TermFieldMultipleVocabularyTest.php
+++ b/core/modules/taxonomy/src/Tests/TermFieldMultipleVocabularyTest.php
@@ -55,7 +55,7 @@ protected function setUp() {
         ),
       )
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => $this->field_name,
       'entity_type' => 'entity_test',
       'bundle' => 'entity_test',
diff --git a/core/modules/taxonomy/src/Tests/TermFieldTest.php b/core/modules/taxonomy/src/Tests/TermFieldTest.php
index fa0f007..1a668f6 100644
--- a/core/modules/taxonomy/src/Tests/TermFieldTest.php
+++ b/core/modules/taxonomy/src/Tests/TermFieldTest.php
@@ -30,7 +30,6 @@ class TermFieldTest extends TaxonomyTestBase {
    */
   public static $modules = array('entity_test', 'field_ui');
 
-  protected $instance;
   protected $vocabulary;
 
   protected function setUp() {
@@ -61,7 +60,7 @@ protected function setUp() {
       )
     ));
     $this->field_storage->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_storage' => $this->field_storage,
       'bundle' => 'entity_test',
     ))->save();
@@ -134,7 +133,7 @@ function testTaxonomyTermFieldWidgets() {
   /**
    * No php error message on the field setting page for autocomplete widget.
    */
-  function testTaxonomyTermFieldInstanceSettingsAutocompleteWidget() {
+  function testTaxonomyTermFieldSettingsAutocompleteWidget() {
     entity_get_form_display('entity_test', 'entity_test', 'default')
       ->setComponent($this->field_name, array(
         'type' => 'taxonomy_autocomplete',
diff --git a/core/modules/taxonomy/src/Tests/TermIndexTest.php b/core/modules/taxonomy/src/Tests/TermIndexTest.php
index d1ec1b4..38afd05 100644
--- a/core/modules/taxonomy/src/Tests/TermIndexTest.php
+++ b/core/modules/taxonomy/src/Tests/TermIndexTest.php
@@ -42,7 +42,7 @@ protected function setUp() {
         ),
       ),
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => $this->field_name_1,
       'bundle' => 'article',
       'entity_type' => 'node',
@@ -73,7 +73,7 @@ protected function setUp() {
         ),
       ),
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => $this->field_name_2,
       'bundle' => 'article',
       'entity_type' => 'node',
diff --git a/core/modules/taxonomy/src/Tests/TermTest.php b/core/modules/taxonomy/src/Tests/TermTest.php
index b2e9757..8cb21d4 100644
--- a/core/modules/taxonomy/src/Tests/TermTest.php
+++ b/core/modules/taxonomy/src/Tests/TermTest.php
@@ -42,12 +42,12 @@ protected function setUp() {
       ),
     ))->save();
 
-    $this->instance = entity_create('field_instance_config', array(
+    $this->field = entity_create('field_config', array(
       'field_name' => $field_name,
       'bundle' => 'article',
       'entity_type' => 'node',
     ));
-    $this->instance->save();
+    $this->field->save();
     entity_get_form_display('node', 'article', 'default')
       ->setComponent($field_name, array(
         'type' => 'options_select',
@@ -162,7 +162,7 @@ function testTaxonomyNode() {
     $edit = array();
     $edit['title[0][value]'] = $this->randomMachineName();
     $edit['body[0][value]'] = $this->randomMachineName();
-    $edit[$this->instance->getName() . '[]'] = $term1->id();
+    $edit[$this->field->getName() . '[]'] = $term1->id();
     $this->drupalPostForm('node/add/article', $edit, t('Save'));
 
     // Check that the term is displayed when the node is viewed.
@@ -176,7 +176,7 @@ function testTaxonomyNode() {
     $this->assertText($term1->getName(), 'Term is displayed after saving the node with no changes.');
 
     // Edit the node with a different term.
-    $edit[$this->instance->getName() . '[]'] = $term2->id();
+    $edit[$this->field->getName() . '[]'] = $term2->id();
     $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save'));
 
     $this->drupalGet('node/' . $node->id());
@@ -194,9 +194,9 @@ function testTaxonomyNode() {
    */
   function testNodeTermCreationAndDeletion() {
     // Enable tags in the vocabulary.
-    $instance = $this->instance;
-    entity_get_form_display($instance->entity_type, $instance->bundle, 'default')
-      ->setComponent($instance->getName(), array(
+    $field = $this->field;
+    entity_get_form_display($field->entity_type, $field->bundle, 'default')
+      ->setComponent($field->getName(), array(
         'type' => 'taxonomy_autocomplete',
         'settings' => array(
           'placeholder' => 'Start typing here.',
@@ -215,7 +215,7 @@ function testNodeTermCreationAndDeletion() {
     $edit['body[0][value]'] = $this->randomMachineName();
     // Insert the terms in a comma separated list. Vocabulary 1 is a
     // free-tagging field created by the default profile.
-    $edit[$instance->getName()] = Tags::implode($terms);
+    $edit[$field->getName()] = Tags::implode($terms);
 
     // Verify the placeholder is there.
     $this->drupalGet('node/add/article');
@@ -577,9 +577,9 @@ function testTaxonomyGetTermByName() {
    */
   function testReSavingTags() {
     // Enable tags in the vocabulary.
-    $instance = $this->instance;
-    entity_get_form_display($instance->entity_type, $instance->bundle, 'default')
-      ->setComponent($instance->getName(), array(
+    $field = $this->field;
+    entity_get_form_display($field->entity_type, $field->bundle, 'default')
+      ->setComponent($field->getName(), array(
         'type' => 'taxonomy_autocomplete',
       ))
       ->save();
@@ -589,7 +589,7 @@ function testReSavingTags() {
     $edit = array();
     $edit['title[0][value]'] = $this->randomMachineName(8);
     $edit['body[0][value]'] = $this->randomMachineName(16);
-    $edit[$this->instance->getName()] = $term->getName();
+    $edit[$this->field->getName()] = $term->getName();
     $this->drupalPostForm('node/add/article', $edit, t('Save'));
 
     // Check that the term is displayed when editing and saving the node with no
diff --git a/core/modules/taxonomy/src/Tests/TokenReplaceTest.php b/core/modules/taxonomy/src/Tests/TokenReplaceTest.php
index 27d02ca..5c8c0f9 100644
--- a/core/modules/taxonomy/src/Tests/TokenReplaceTest.php
+++ b/core/modules/taxonomy/src/Tests/TokenReplaceTest.php
@@ -40,7 +40,7 @@ protected function setUp() {
       ),
     ))->save();
 
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => $this->field_name,
       'bundle' => 'article',
       'entity_type' => 'node',
diff --git a/core/modules/taxonomy/src/Tests/Views/TaxonomyFieldFilterTest.php b/core/modules/taxonomy/src/Tests/Views/TaxonomyFieldFilterTest.php
index c1d7065..604149b 100644
--- a/core/modules/taxonomy/src/Tests/Views/TaxonomyFieldFilterTest.php
+++ b/core/modules/taxonomy/src/Tests/Views/TaxonomyFieldFilterTest.php
@@ -76,7 +76,7 @@ function setUp() {
     ));
     $field->translatable = TRUE;
     $field->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => 'field_foo',
       'entity_type' => 'taxonomy_term',
       'label' => 'Foo',
diff --git a/core/modules/taxonomy/src/Tests/Views/TaxonomyTestBase.php b/core/modules/taxonomy/src/Tests/Views/TaxonomyTestBase.php
index 2950fe5..ca508ce 100644
--- a/core/modules/taxonomy/src/Tests/Views/TaxonomyTestBase.php
+++ b/core/modules/taxonomy/src/Tests/Views/TaxonomyTestBase.php
@@ -93,7 +93,7 @@ protected function mockStandardInstall() {
         ),
       ),
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => $this->field_name,
       'entity_type' => 'node',
       'label' => 'Tags',
diff --git a/core/modules/taxonomy/src/Tests/VocabularyCrudTest.php b/core/modules/taxonomy/src/Tests/VocabularyCrudTest.php
index 03201ab..44741b2 100644
--- a/core/modules/taxonomy/src/Tests/VocabularyCrudTest.php
+++ b/core/modules/taxonomy/src/Tests/VocabularyCrudTest.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\taxonomy\Tests;
 
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 
 /**
  * Tests loading, saving and deleting vocabularies.
@@ -146,7 +146,7 @@ function testTaxonomyVocabularyChangeMachineName() {
       'entity_type' => 'taxonomy_term',
       'type' => 'test_field',
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => 'field_test',
       'entity_type' => 'taxonomy_term',
       'bundle' => $this->vocabulary->id(),
@@ -164,14 +164,14 @@ function testTaxonomyVocabularyChangeMachineName() {
     $this->assertTrue(isset($info[$new_name]), 'The new bundle name appears in entity_get_bundles().');
 
     // Check that the field instance is still attached to the vocabulary.
-    $this->assertTrue(FieldInstanceConfig::loadByName('taxonomy_term', $new_name, 'field_test'), 'The bundle name was updated correctly.');
+    $this->assertTrue(FieldConfig::loadByName('taxonomy_term', $new_name, 'field_test'), 'The bundle name was updated correctly.');
   }
 
   /**
    * Test uninstall and reinstall of the taxonomy module.
    */
   function testUninstallReinstall() {
-    // Fields and field instances attached to taxonomy term bundles should be
+    // Field storages and fields attached to taxonomy term bundles should be
     // removed when the module is uninstalled.
     $field_name = drupal_strtolower($this->randomMachineName() . '_field_name');
     $storage_definition = array(
@@ -181,25 +181,25 @@ function testUninstallReinstall() {
       'cardinality' => 4
     );
     entity_create('field_storage_config', $storage_definition)->save();
-    $instance_definition = array(
+    $field_definition = array(
       'field_name' => $field_name,
       'entity_type' => 'taxonomy_term',
       'bundle' => $this->vocabulary->id(),
       'label' => $this->randomMachineName() . '_label',
     );
-    entity_create('field_instance_config', $instance_definition)->save();
+    entity_create('field_config', $field_definition)->save();
 
     require_once DRUPAL_ROOT . '/core/includes/install.inc';
     $this->container->get('module_handler')->uninstall(array('taxonomy'));
     \Drupal::moduleHandler()->install(array('taxonomy'));
 
-    // Now create a vocabulary with the same name. All field instances
+    // Now create a vocabulary with the same name. All fields
     // connected to this vocabulary name should have been removed when the
     // module was uninstalled. Creating a new field with the same name and
     // an instance of this field on the same bundle name should be successful.
     $this->vocabulary->enforceIsNew();
     $this->vocabulary->save();
     entity_create('field_storage_config', $storage_definition)->save();
-    entity_create('field_instance_config', $instance_definition)->save();
+    entity_create('field_config', $field_definition)->save();
   }
 }
diff --git a/core/modules/taxonomy/taxonomy.module b/core/modules/taxonomy/taxonomy.module
index d58064d..1306161 100644
--- a/core/modules/taxonomy/taxonomy.module
+++ b/core/modules/taxonomy/taxonomy.module
@@ -126,7 +126,7 @@ function taxonomy_term_uri($term) {
 }
 
 /**
- * Return nodes attached to a term across all field instances.
+ * Return nodes attached to a term across all fields.
  *
  * This function requires taxonomy module to be maintaining its own tables,
  * and will return an empty array if it is not. If using other field storage
diff --git a/core/modules/telephone/src/Tests/TelephoneFieldTest.php b/core/modules/telephone/src/Tests/TelephoneFieldTest.php
index f686517..d95f951 100644
--- a/core/modules/telephone/src/Tests/TelephoneFieldTest.php
+++ b/core/modules/telephone/src/Tests/TelephoneFieldTest.php
@@ -27,7 +27,7 @@ class TelephoneFieldTest extends WebTestBase {
     'telephone'
   );
 
-  protected $instance;
+  protected $field;
   protected $web_user;
 
   protected function setUp() {
@@ -51,7 +51,7 @@ function testTelephoneField() {
       'entity_type' => 'node',
       'type' => 'telephone',
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => 'field_telephone',
       'label' => 'Telephone Number',
       'entity_type' => 'node',
diff --git a/core/modules/telephone/src/Tests/TelephoneItemTest.php b/core/modules/telephone/src/Tests/TelephoneItemTest.php
index 8b25689..a1ce82c 100644
--- a/core/modules/telephone/src/Tests/TelephoneItemTest.php
+++ b/core/modules/telephone/src/Tests/TelephoneItemTest.php
@@ -34,7 +34,7 @@ protected function setUp() {
       'entity_type' => 'entity_test',
       'type' => 'telephone',
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => 'entity_test',
       'field_name' => 'field_test',
       'bundle' => 'entity_test',
diff --git a/core/modules/text/config/schema/text.schema.yml b/core/modules/text/config/schema/text.schema.yml
index dc54670..cc125e2 100644
--- a/core/modules/text/config/schema/text.schema.yml
+++ b/core/modules/text/config/schema/text.schema.yml
@@ -8,7 +8,7 @@ text.settings:
       type: integer
       label: 'Default summary length'
 
-field.text.settings:
+field.text.storage_settings:
   type: mapping
   label: 'Text settings'
   mapping:
@@ -16,7 +16,7 @@ field.text.settings:
       type: integer
       label: 'Maximum length'
 
-field.text.instance_settings:
+field.text.field_settings:
   type: mapping
   label: 'Text settings'
   mapping:
@@ -38,13 +38,13 @@ field.text.value:
           type: string
           label: 'Text format'
 
-field.text_long.settings:
+field.text_long.storage_settings:
   type: sequence
   label: 'Settings'
   sequence:
     - type: string
 
-field.text_long.instance_settings:
+field.text_long.field_settings:
   type: mapping
   label: 'Long text settings'
   mapping:
@@ -66,13 +66,13 @@ field.text_long.value:
           type: string
           label: 'Text format'
 
-field.text_with_summary.settings:
+field.text_with_summary.storage_settings:
   type: sequence
   label: 'Default'
   sequence:
     - type: string
 
-field.text_with_summary.instance_settings:
+field.text_with_summary.field_settings:
   type: mapping
   label: 'Text area with a summary'
   mapping:
diff --git a/core/modules/text/src/Plugin/Field/FieldType/TextItem.php b/core/modules/text/src/Plugin/Field/FieldType/TextItem.php
index 3b7285d..73b1f29 100644
--- a/core/modules/text/src/Plugin/Field/FieldType/TextItem.php
+++ b/core/modules/text/src/Plugin/Field/FieldType/TextItem.php
@@ -26,10 +26,10 @@ class TextItem extends TextItemBase {
   /**
    * {@inheritdoc}
    */
-  public static function defaultSettings() {
+  public static function defaultStorageSettings() {
     return array(
       'max_length' => 255,
-    ) + parent::defaultSettings();
+    ) + parent::defaultStorageSettings();
   }
 
   /**
@@ -79,7 +79,7 @@ public function getConstraints() {
   /**
    * {@inheritdoc}
    */
-  public function settingsForm(array &$form, FormStateInterface $form_state, $has_data) {
+  public function storageSettingsForm(array &$form, FormStateInterface $form_state, $has_data) {
     $element = array();
 
     $element['max_length'] = array(
@@ -98,7 +98,7 @@ public function settingsForm(array &$form, FormStateInterface $form_state, $has_
   /**
    * {@inheritdoc}
    */
-  public function instanceSettingsForm(array $form, FormStateInterface $form_state) {
+  public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
     $element = array();
 
     $element['text_processing'] = array(
diff --git a/core/modules/text/src/Plugin/Field/FieldType/TextItemBase.php b/core/modules/text/src/Plugin/Field/FieldType/TextItemBase.php
index ca1769d..80e36c4 100644
--- a/core/modules/text/src/Plugin/Field/FieldType/TextItemBase.php
+++ b/core/modules/text/src/Plugin/Field/FieldType/TextItemBase.php
@@ -19,8 +19,8 @@
   /**
    * {@inheritdoc}
    */
-  public static function defaultInstanceSettings() {
-    $settings = parent::defaultInstanceSettings();
+  public static function defaultFieldSettings() {
+    $settings = parent::defaultFieldSettings();
     $settings['text_processing'] = 0;
     return $settings;
   }
diff --git a/core/modules/text/src/Plugin/Field/FieldType/TextLongItem.php b/core/modules/text/src/Plugin/Field/FieldType/TextLongItem.php
index 1c74a41..3308ae2 100644
--- a/core/modules/text/src/Plugin/Field/FieldType/TextLongItem.php
+++ b/core/modules/text/src/Plugin/Field/FieldType/TextLongItem.php
@@ -49,7 +49,7 @@ public static function schema(FieldStorageDefinitionInterface $field_definition)
   /**
    * {@inheritdoc}
    */
-  public function instanceSettingsForm(array $form, FormStateInterface $form_state) {
+  public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
     $element = array();
 
     $element['text_processing'] = array(
diff --git a/core/modules/text/src/Plugin/Field/FieldType/TextWithSummaryItem.php b/core/modules/text/src/Plugin/Field/FieldType/TextWithSummaryItem.php
index 7ffcd64..9b0fffe 100644
--- a/core/modules/text/src/Plugin/Field/FieldType/TextWithSummaryItem.php
+++ b/core/modules/text/src/Plugin/Field/FieldType/TextWithSummaryItem.php
@@ -27,11 +27,11 @@ class TextWithSummaryItem extends TextItemBase {
   /**
    * {@inheritdoc}
    */
-  public static function defaultInstanceSettings() {
+  public static function defaultFieldSettings() {
     return array(
       'text_processing' => 1,
       'display_summary' => 0,
-    ) + parent::defaultInstanceSettings();
+    ) + parent::defaultFieldSettings();
   }
 
   /**
@@ -92,7 +92,7 @@ public function isEmpty() {
   /**
    * {@inheritdoc}
    */
-  public function instanceSettingsForm(array $form, FormStateInterface $form_state) {
+  public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
     $element = array();
     $settings = $this->getSettings();
 
diff --git a/core/modules/text/src/Tests/Formatter/TextFormatterTest.php b/core/modules/text/src/Tests/Formatter/TextFormatterTest.php
index 8b6cf67..d0382d4 100644
--- a/core/modules/text/src/Tests/Formatter/TextFormatterTest.php
+++ b/core/modules/text/src/Tests/Formatter/TextFormatterTest.php
@@ -61,7 +61,7 @@ protected function setUp() {
       'type' => 'text',
       'settings' => array(),
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => $this->entityType,
       'bundle' => $this->bundle,
       'field_name' => 'processed_text',
@@ -76,7 +76,7 @@ protected function setUp() {
       'type' => 'text',
       'settings' => array(),
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'entity_type' => $this->entityType,
       'bundle' => $this->bundle,
       'field_name' => 'unprocessed_text',
diff --git a/core/modules/text/src/Tests/Formatter/TextPlainUnitTest.php b/core/modules/text/src/Tests/Formatter/TextPlainUnitTest.php
index f6f9150..bdea07d 100644
--- a/core/modules/text/src/Tests/Formatter/TextPlainUnitTest.php
+++ b/core/modules/text/src/Tests/Formatter/TextPlainUnitTest.php
@@ -53,14 +53,14 @@ class TextPlainUnitTest extends DrupalUnitTestBase {
   /**
    * @var array
    */
+  protected $storage_settings;
+
+  /**
+   * @var array
+   */
   protected $field_settings;
 
   /**
-   * @var array
-   */
-  protected $instance_settings;
-
-  /**
    * @var string
    */
   protected $formatter_type;
@@ -76,9 +76,9 @@ class TextPlainUnitTest extends DrupalUnitTestBase {
   protected $fieldStorage;
 
   /**
-   * @var \Drupal\field\Entity\FieldInstanceConfig
+   * @var \Drupal\field\Entity\FieldConfig
    */
-  protected $instance;
+  protected $field;
 
   /**
    * @var string
@@ -111,8 +111,8 @@ protected function setUp() {
 
     $this->field_name = drupal_strtolower($this->randomMachineName());
     $this->field_type = 'text_long';
-    $this->field_settings = array();
-    $this->instance_settings = array(
+    $this->storage_settings = array();
+    $this->storage_settings = array(
       'text_processing' => FALSE,
     );
 
@@ -123,17 +123,17 @@ protected function setUp() {
       'name' => $this->field_name,
       'entity_type' => $this->entity_type,
       'type' => $this->field_type,
-      'settings' => $this->field_settings,
+      'settings' => $this->storage_settings,
     ));
     $this->fieldStorage->save();
 
-    $this->instance = entity_create('field_instance_config', array(
+    $this->field = entity_create('field_config', array(
       'field_storage' => $this->fieldStorage,
       'bundle' => $this->bundle,
       'label' => $this->randomMachineName(),
-      'settings' => $this->instance_settings,
+      'settings' => $this->storage_settings,
     ));
-    $this->instance->save();
+    $this->field->save();
 
     $this->view_mode = 'default';
     $this->display = entity_get_display($this->entity_type, $this->bundle, $this->view_mode)
diff --git a/core/modules/text/src/Tests/TextFieldTest.php b/core/modules/text/src/Tests/TextFieldTest.php
index 330d9f8..dae13cc 100644
--- a/core/modules/text/src/Tests/TextFieldTest.php
+++ b/core/modules/text/src/Tests/TextFieldTest.php
@@ -53,7 +53,7 @@ function testTextFieldValidation() {
       )
     ));
     $field_storage->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'entity_test',
     ))->save();
@@ -92,7 +92,7 @@ function _testTextfieldWidgets($field_type, $widget_type) {
       'type' => $field_type
     ));
     $field_storage->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'entity_test',
       'label' => $this->randomMachineName() . '_label',
@@ -158,7 +158,7 @@ function _testTextfieldWidgetsFormatted($field_type, $widget_type) {
       'type' => $field_type
     ));
     $field_storage->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_storage' => $field_storage,
       'bundle' => 'entity_test',
       'label' => $this->randomMachineName() . '_label',
diff --git a/core/modules/text/src/Tests/TextWithSummaryItemTest.php b/core/modules/text/src/Tests/TextWithSummaryItemTest.php
index 4a04d63..c792947 100644
--- a/core/modules/text/src/Tests/TextWithSummaryItemTest.php
+++ b/core/modules/text/src/Tests/TextWithSummaryItemTest.php
@@ -35,9 +35,9 @@ class TextWithSummaryItemTest extends FieldUnitTestBase {
   /**
    * Field instance.
    *
-   * @var \Drupal\field\Entity\FieldInstanceConfig
+   * @var \Drupal\field\Entity\FieldConfig
    */
-  protected $instance;
+  protected $field;
 
 
   protected function setUp() {
@@ -78,8 +78,8 @@ public function testCrudAndUpdate() {
     $this->assertNull($entity->summary_field->format);
 
     // Enable text processing.
-    $this->instance->settings['text_processing'] = 1;
-    $this->instance->save();
+    $this->field->settings['text_processing'] = 1;
+    $this->field->save();
 
     // Re-load the entity.
     $entity = entity_load($entity_type, $entity->id(), TRUE);
@@ -112,14 +112,14 @@ protected function createField($entity_type) {
       )
     ));
     $this->fieldStorage->save();
-    $this->instance = entity_create('field_instance_config', array(
+    $this->field = entity_create('field_config', array(
       'field_storage' => $this->fieldStorage,
       'bundle' => $entity_type,
       'settings' => array(
         'text_processing' => 0,
       )
     ));
-    $this->instance->save();
+    $this->field->save();
   }
 
 }
diff --git a/core/modules/user/src/Tests/UserCreateTest.php b/core/modules/user/src/Tests/UserCreateTest.php
index 4af2b40..d311b03 100644
--- a/core/modules/user/src/Tests/UserCreateTest.php
+++ b/core/modules/user/src/Tests/UserCreateTest.php
@@ -49,7 +49,7 @@ protected function testUserAdd() {
       ),
     ))->save();
 
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => $field_name,
       'entity_type' => 'user',
       'label' => 'Picture',
diff --git a/core/modules/user/src/Tests/UserEntityReferenceTest.php b/core/modules/user/src/Tests/UserEntityReferenceTest.php
index b0ab29d..025aedf 100644
--- a/core/modules/user/src/Tests/UserEntityReferenceTest.php
+++ b/core/modules/user/src/Tests/UserEntityReferenceTest.php
@@ -6,7 +6,7 @@
 
 namespace Drupal\user\Tests;
 
-use Drupal\field\Entity\FieldInstanceConfig;
+use Drupal\field\Entity\FieldConfig;
 use Drupal\system\Tests\Entity\EntityUnitTestBase;
 
 /**
@@ -51,14 +51,14 @@ protected function setUp() {
     ));
     $this->role2->save();
 
-    entity_reference_create_instance('user', 'user', 'user_reference', 'User reference', 'user');
+    entity_reference_create_field('user', 'user', 'user_reference', 'User reference', 'user');
   }
 
   /**
    * Tests user selection by roles.
    */
   function testUserSelectionByRole() {
-    $field_definition = FieldInstanceConfig::loadByName('user', 'user', 'user_reference');
+    $field_definition = FieldConfig::loadByName('user', 'user', 'user_reference');
     $field_definition->settings['handler_settings']['filter']['role'] = array(
       $this->role1->id() => $this->role1->id(),
       $this->role2->id() => 0,
diff --git a/core/modules/user/src/Tests/UserRegistrationTest.php b/core/modules/user/src/Tests/UserRegistrationTest.php
index cc025c8..b909868 100644
--- a/core/modules/user/src/Tests/UserRegistrationTest.php
+++ b/core/modules/user/src/Tests/UserRegistrationTest.php
@@ -199,13 +199,13 @@ function testRegistrationWithUserFields() {
       'cardinality' => 1,
     ));
     $field_storage->save();
-    $instance = entity_create('field_instance_config', array(
+    $field = entity_create('field_config', array(
       'field_storage' => $field_storage,
       'label' => 'Some user field',
       'bundle' => 'user',
       'required' => TRUE,
     ));
-    $instance->save();
+    $field->save();
     entity_get_form_display('user', 'user', 'default')
       ->setComponent('test_user_field', array('type' => 'test_field_widget'))
       ->save();
@@ -214,7 +214,7 @@ function testRegistrationWithUserFields() {
 
     // Check that the field does not appear on the registration form.
     $this->drupalGet('user/register');
-    $this->assertNoText($instance->label(), 'The field does not appear on user registration form');
+    $this->assertNoText($field->label(), 'The field does not appear on user registration form');
 
     // Have the field appear on the registration form.
     entity_get_form_display('user', 'user', 'register')
@@ -222,7 +222,7 @@ function testRegistrationWithUserFields() {
       ->save();
 
     $this->drupalGet('user/register');
-    $this->assertText($instance->label(), 'The field appears on user registration form');
+    $this->assertText($field->label(), 'The field appears on user registration form');
 
     // Check that validation errors are correctly reported.
     $edit = array();
@@ -231,11 +231,11 @@ function testRegistrationWithUserFields() {
     // Missing input in required field.
     $edit['test_user_field[0][value]'] = '';
     $this->drupalPostForm(NULL, $edit, t('Create new account'));
-    $this->assertRaw(t('@name field is required.', array('@name' => $instance->label())), 'Field validation error was correctly reported.');
+    $this->assertRaw(t('@name field is required.', array('@name' => $field->label())), 'Field validation error was correctly reported.');
     // Invalid input.
     $edit['test_user_field[0][value]'] = '-1';
     $this->drupalPostForm(NULL, $edit, t('Create new account'));
-    $this->assertRaw(t('%name does not accept the value -1.', array('%name' => $instance->label())), 'Field validation error was correctly reported.');
+    $this->assertRaw(t('%name does not accept the value -1.', array('%name' => $field->label())), 'Field validation error was correctly reported.');
 
     // Submit with valid data.
     $value = rand(1, 255);
diff --git a/core/modules/views/src/Tests/DefaultViewsTest.php b/core/modules/views/src/Tests/DefaultViewsTest.php
index c0feff5..fd1728a 100644
--- a/core/modules/views/src/Tests/DefaultViewsTest.php
+++ b/core/modules/views/src/Tests/DefaultViewsTest.php
@@ -70,7 +70,7 @@ protected function setUp() {
         ),
       )
     ))->save();
-    entity_create('field_instance_config', array(
+    entity_create('field_config', array(
       'field_name' => $this->field_name,
       'entity_type' => 'node',
       'bundle' => 'page',
diff --git a/core/modules/views/src/Tests/Wizard/TaggedWithTest.php b/core/modules/views/src/Tests/Wizard/TaggedWithTest.php
index 4e5a29a..687a527 100644
--- a/core/modules/views/src/Tests/Wizard/TaggedWithTest.php
+++ b/core/modules/views/src/Tests/Wizard/TaggedWithTest.php
@@ -29,10 +29,10 @@ class TaggedWithTest extends WizardTestBase {
 
   protected $tag_vocabulary;
 
+  protected $tag_field_storage;
+
   protected $tag_field;
 
-  protected $tag_instance;
-
   protected function setUp() {
     parent::setUp();
 
@@ -68,11 +68,11 @@ protected function setUp() {
 
     // Create an instance of the tag field on one of the content types, and
     // configure it to display an autocomplete widget.
-    $this->tag_instance = array(
+    $this->tag_field = array(
       'field_storage' => $this->tag_field_storage,
       'bundle' => $this->node_type_with_tags->type,
     );
-    entity_create('field_instance_config', $this->tag_instance)->save();
+    entity_create('field_config', $this->tag_field)->save();
 
     entity_get_form_display('node', $this->node_type_with_tags->type, 'default')
       ->setComponent('field_views_testing_tags', array(
@@ -181,9 +181,9 @@ function testTaggedWithByNodeType() {
 
     // If we add an instance of the tagging field to the second node type, the
     // "tagged with" form element should not appear for it too.
-    $instance = $this->tag_instance;
-    $instance['bundle'] = $this->node_type_without_tags->type;
-    entity_create('field_instance_config', $instance)->save();
+    $field = $this->tag_field;
+    $field['bundle'] = $this->node_type_without_tags->type;
+    entity_create('field_config', $field)->save();
     entity_get_form_display('node', $this->node_type_without_tags->type, 'default')
       ->setComponent('field_views_testing_tags', array(
         'type' => 'taxonomy_autocomplete',
diff --git a/core/modules/views/views.module b/core/modules/views/views.module
index 459ff0a..8e5ff47 100644
--- a/core/modules/views/views.module
+++ b/core/modules/views/views.module
@@ -22,7 +22,7 @@
 use Drupal\Component\Plugin\Exception\PluginException;
 use Drupal\views\Entity\View;
 use Drupal\views\Views;
-use Drupal\field\FieldInstanceConfigInterface;
+use Drupal\field\FieldConfigInterface;
 
 /**
  * Implements hook_help().
@@ -496,25 +496,25 @@ function views_language_list($field = 'name', $flags = LanguageInterface::STATE_
 }
 
 /**
- * Implements hook_ENTITY_TYPE_create() for 'field_instance_config'.
+ * Implements hook_ENTITY_TYPE_create() for 'field_config'.
  */
-function views_field_instance_config_create(FieldInstanceConfigInterface $field_instance) {
+function views_field_config_create(FieldConfigInterface $field_instance) {
   // @todo: Is this necessary? Use cache tags to only delete Views' cache data?
   \Drupal::cache('discovery')->deleteAll();
 }
 
 /**
- * Implements hook_ENTITY_TYPE_update() for 'field_instance_config'.
+ * Implements hook_ENTITY_TYPE_update() for 'field_config'.
  */
-function views_field_instance_config_update(FieldInstanceConfigInterface $field_instance) {
+function views_field_config_update(FieldConfigInterface $field_instance) {
   Cache::deleteTags(array('extension' => 'views'));
   \Drupal::cache('render')->deleteAll();
 }
 
 /**
- * Implements hook_ENTITY_TYPE_delete() for 'field_instance_config'.
+ * Implements hook_ENTITY_TYPE_delete() for 'field_config'.
  */
-function views_field_instance_config_delete(FieldInstanceConfigInterface $field_instance) {
+function views_field_config_delete(FieldConfigInterface $field_instance) {
   Cache::deleteTags(array('extension' => 'views'));
   \Drupal::cache('render')->deleteAll();
 }
diff --git a/core/profiles/standard/config/install/entity.form_display.node.article.default.yml b/core/profiles/standard/config/install/entity.form_display.node.article.default.yml
index 359aa18..cf16fc4 100644
--- a/core/profiles/standard/config/install/entity.form_display.node.article.default.yml
+++ b/core/profiles/standard/config/install/entity.form_display.node.article.default.yml
@@ -39,10 +39,10 @@ hidden: {  }
 status: true
 dependencies:
   entity:
-    - field.instance.node.article.body
-    - field.instance.node.article.comment
-    - field.instance.node.article.field_image
-    - field.instance.node.article.field_tags
+    - field.field.node.article.body
+    - field.field.node.article.comment
+    - field.field.node.article.field_image
+    - field.field.node.article.field_tags
     - node.type.article
   module:
     - comment
diff --git a/core/profiles/standard/config/install/entity.view_display.node.article.default.yml b/core/profiles/standard/config/install/entity.view_display.node.article.default.yml
index 1599151..a0da43b 100644
--- a/core/profiles/standard/config/install/entity.view_display.node.article.default.yml
+++ b/core/profiles/standard/config/install/entity.view_display.node.article.default.yml
@@ -26,9 +26,9 @@ content:
     third_party_settings: {  }
 dependencies:
   entity:
-    - field.instance.node.article.body
-    - field.instance.node.article.field_image
-    - field.instance.node.article.field_tags
+    - field.field.node.article.body
+    - field.field.node.article.field_image
+    - field.field.node.article.field_tags
     - node.type.article
   module:
     - comment
diff --git a/core/profiles/standard/config/install/entity.view_display.node.article.teaser.yml b/core/profiles/standard/config/install/entity.view_display.node.article.teaser.yml
index d22ab13..22dcce7 100644
--- a/core/profiles/standard/config/install/entity.view_display.node.article.teaser.yml
+++ b/core/profiles/standard/config/install/entity.view_display.node.article.teaser.yml
@@ -28,9 +28,9 @@ content:
 dependencies:
   entity:
     - entity.view_mode.node.teaser
-    - field.instance.node.article.body
-    - field.instance.node.article.field_image
-    - field.instance.node.article.field_tags
+    - field.field.node.article.body
+    - field.field.node.article.field_image
+    - field.field.node.article.field_tags
     - node.type.article
   module:
     - image
diff --git a/core/profiles/standard/config/install/field.instance.node.article.field_image.yml b/core/profiles/standard/config/install/field.field.node.article.field_image.yml
similarity index 100%
rename from core/profiles/standard/config/install/field.instance.node.article.field_image.yml
rename to core/profiles/standard/config/install/field.field.node.article.field_image.yml
diff --git a/core/profiles/standard/config/install/field.instance.node.article.field_tags.yml b/core/profiles/standard/config/install/field.field.node.article.field_tags.yml
similarity index 100%
rename from core/profiles/standard/config/install/field.instance.node.article.field_tags.yml
rename to core/profiles/standard/config/install/field.field.node.article.field_tags.yml
diff --git a/core/profiles/standard/config/install/field.instance.user.user.user_picture.yml b/core/profiles/standard/config/install/field.field.user.user.user_picture.yml
similarity index 100%
rename from core/profiles/standard/config/install/field.instance.user.user.user_picture.yml
rename to core/profiles/standard/config/install/field.field.user.user.user_picture.yml
diff --git a/core/tests/Drupal/Tests/Core/Config/StorageComparerTest.php b/core/tests/Drupal/Tests/Core/Config/StorageComparerTest.php
index ca33a5f..2263126 100644
--- a/core/tests/Drupal/Tests/Core/Config/StorageComparerTest.php
+++ b/core/tests/Drupal/Tests/Core/Config/StorageComparerTest.php
@@ -63,7 +63,7 @@ protected function getConfigData() {
         'uuid' => $uuid->generate(),
       ),
       // Config entity which requires another config entity.
-      'field.instance.node.article.body' => array(
+      'field.field.node.article.body' => array(
         'id' => 'node.article.body',
         'uuid' => $uuid->generate(),
         'dependencies' => array(
@@ -141,7 +141,7 @@ public function testCreateChangelistNoChange() {
   public function testCreateChangelistCreate() {
     $target_data = $source_data = $this->getConfigData();
     unset($target_data['field.storage.node.body']);
-    unset($target_data['field.instance.node.article.body']);
+    unset($target_data['field.field.node.article.body']);
     unset($target_data['views.view.test_view']);
 
     $this->sourceStorage->expects($this->once())
@@ -170,7 +170,7 @@ public function testCreateChangelistCreate() {
     $expected = array(
       'field.storage.node.body',
       'views.view.test_view',
-      'field.instance.node.article.body',
+      'field.field.node.article.body',
     );
     $this->assertEquals($expected, $this->storageComparer->getChangelist('create'));
     $this->assertEmpty($this->storageComparer->getChangelist('delete'));
@@ -183,7 +183,7 @@ public function testCreateChangelistCreate() {
   public function testCreateChangelistDelete() {
     $target_data = $source_data = $this->getConfigData();
     unset($source_data['field.storage.node.body']);
-    unset($source_data['field.instance.node.article.body']);
+    unset($source_data['field.field.node.article.body']);
     unset($source_data['views.view.test_view']);
 
     $this->sourceStorage->expects($this->once())
@@ -210,7 +210,7 @@ public function testCreateChangelistDelete() {
 
     $this->storageComparer->createChangelist();
     $expected = array(
-      'field.instance.node.article.body',
+      'field.field.node.article.body',
       'views.view.test_view',
       'field.storage.node.body',
     );
@@ -225,7 +225,7 @@ public function testCreateChangelistDelete() {
   public function testCreateChangelistUpdate() {
     $target_data = $source_data = $this->getConfigData();
     $source_data['system.site']['title'] = 'Drupal New!';
-    $source_data['field.instance.node.article.body']['new_config_key'] = 'new data';
+    $source_data['field.field.node.article.body']['new_config_key'] = 'new data';
     $source_data['field.storage.node.body']['new_config_key'] = 'new data';
 
     $this->sourceStorage->expects($this->once())
@@ -254,7 +254,7 @@ public function testCreateChangelistUpdate() {
     $expected = array(
       'field.storage.node.body',
       'system.site',
-      'field.instance.node.article.body',
+      'field.field.node.article.body',
     );
     $this->assertEquals($expected, $this->storageComparer->getChangelist('update'));
     $this->assertEmpty($this->storageComparer->getChangelist('create'));
diff --git a/core/tests/Drupal/Tests/Core/Entity/BaseFieldDefinitionTest.php b/core/tests/Drupal/Tests/Core/Entity/BaseFieldDefinitionTest.php
index 4387790..84f7422 100644
--- a/core/tests/Drupal/Tests/Core/Entity/BaseFieldDefinitionTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/BaseFieldDefinitionTest.php
@@ -44,10 +44,10 @@ protected function setUp() {
     $this->fieldType = $this->randomMachineName();
     $this->fieldTypeDefinition = array(
       'id' => $this->fieldType,
-      'settings' => array(
+      'storage_settings' => array(
         'some_setting' => 'value 1'
       ),
-      'instance_settings' => array(
+      'field_settings' => array(
         'some_instance_setting' => 'value 2',
       ),
     );
@@ -60,13 +60,13 @@ protected function setUp() {
       ->with($this->fieldType)
       ->will($this->returnValue($this->fieldTypeDefinition));
     $field_type_manager->expects($this->any())
-      ->method('getDefaultSettings')
+      ->method('getDefaultStorageSettings')
       ->with($this->fieldType)
-      ->will($this->returnValue($this->fieldTypeDefinition['settings']));
+      ->will($this->returnValue($this->fieldTypeDefinition['storage_settings']));
     $field_type_manager->expects($this->any())
-      ->method('getDefaultInstanceSettings')
+      ->method('getDefaultFieldSettings')
       ->with($this->fieldType)
-      ->will($this->returnValue($this->fieldTypeDefinition['instance_settings']));
+      ->will($this->returnValue($this->fieldTypeDefinition['field_settings']));
 
     $container = new ContainerBuilder();
     $container->set('plugin.manager.field.field_type', $field_type_manager);
@@ -120,7 +120,7 @@ public function testFieldSettings() {
     $value = $this->randomMachineName();
     $definition->setSetting($setting, $value);
     $this->assertEquals($value, $definition->getSetting($setting));
-    $default_settings = $this->fieldTypeDefinition['settings'] + $this->fieldTypeDefinition['instance_settings'];
+    $default_settings = $this->fieldTypeDefinition['settings'] + $this->fieldTypeDefinition['field_settings'];
     $this->assertEquals(array($setting => $value) + $default_settings, $definition->getSettings());
   }
 
@@ -129,7 +129,7 @@ public function testFieldSettings() {
    */
   public function testDefaultFieldSettings() {
     $definition = BaseFieldDefinition::create($this->fieldType);
-    $expected_settings = $this->fieldTypeDefinition['settings'] + $this->fieldTypeDefinition['instance_settings'];
+    $expected_settings = $this->fieldTypeDefinition['settings'] + $this->fieldTypeDefinition['field_settings'];
     $this->assertEquals($expected_settings, $definition->getSettings());
     foreach ($expected_settings as $setting => $value) {
       $this->assertEquals($value, $definition->getSetting($setting));
diff --git a/core/tests/Drupal/Tests/Core/Entity/ContentEntityBaseUnitTest.php b/core/tests/Drupal/Tests/Core/Entity/ContentEntityBaseUnitTest.php
index 39f8d76..69fd7c0 100644
--- a/core/tests/Drupal/Tests/Core/Entity/ContentEntityBaseUnitTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/ContentEntityBaseUnitTest.php
@@ -156,10 +156,10 @@ protected function setUp() {
       ->disableOriginalConstructor()
       ->getMock();
     $this->fieldTypePluginManager->expects($this->any())
-      ->method('getDefaultSettings')
+      ->method('getDefaultStorageSettings')
       ->will($this->returnValue(array()));
     $this->fieldTypePluginManager->expects($this->any())
-      ->method('getDefaultInstanceSettings')
+      ->method('getDefaultFieldSettings')
       ->will($this->returnValue(array()));
 
     $container = new ContainerBuilder();
diff --git a/core/tests/Drupal/Tests/Core/Entity/ContentEntityDatabaseStorageTest.php b/core/tests/Drupal/Tests/Core/Entity/ContentEntityDatabaseStorageTest.php
index fde0d84..f975256 100644
--- a/core/tests/Drupal/Tests/Core/Entity/ContentEntityDatabaseStorageTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/ContentEntityDatabaseStorageTest.php
@@ -967,10 +967,10 @@ public function testFieldSqlSchemaForEntityWithStringIdentifier() {
       ->will($this->returnValue(TRUE));
 
     $field_type_manager->expects($this->exactly(2))
-      ->method('getDefaultSettings')
+      ->method('getDefaultStorageSettings')
       ->will($this->returnValue(array()));
     $field_type_manager->expects($this->exactly(2))
-      ->method('getDefaultInstanceSettings')
+      ->method('getDefaultFieldSettings')
       ->will($this->returnValue(array()));
 
     $this->fieldDefinitions['id'] = BaseFieldDefinition::create('string')
