diff --git a/core/modules/field/src/Entity/FieldConfig.php b/core/modules/field/src/Entity/FieldConfig.php
index f25af7b..e56aa06 100644
--- a/core/modules/field/src/Entity/FieldConfig.php
+++ b/core/modules/field/src/Entity/FieldConfig.php
@@ -223,7 +223,7 @@ public function __construct(array $values, $entity_type = 'field_config') {
    * {@inheritdoc}
    */
   public function id() {
-    return $this->entity_type . '.' . $this->name;
+    return $this->getTargetEntityTypeId() . '.' . $this->getName();
   }
 
   /**
@@ -296,34 +296,34 @@ protected function preSaveNew(EntityStorageInterface $storage) {
     // Field name cannot be longer than FieldConfig::NAME_MAX_LENGTH characters.
     // We use Unicode::strlen() because the DB layer assumes that column widths
     // are given in characters rather than bytes.
-    if (Unicode::strlen($this->name) > static::NAME_MAX_LENGTH) {
+    if (Unicode::strlen($this->getName()) > static::NAME_MAX_LENGTH) {
       throw new FieldException(String::format(
         'Attempt to create a field with an ID longer than @max characters: %name', array(
           '@max' => static::NAME_MAX_LENGTH,
-          '%name' => $this->name,
+          '%name' => $this->getName(),
         )
       ));
     }
 
     // Disallow reserved field names.
-    $disallowed_field_names = array_keys($entity_manager->getBaseFieldDefinitions($this->entity_type));
-    if (in_array($this->name, $disallowed_field_names)) {
-      throw new FieldException(String::format('Attempt to create field %name which is reserved by entity type %type.', array('%name' => $this->name, '%type' => $this->entity_type)));
+    $disallowed_field_names = array_keys($entity_manager->getBaseFieldDefinitions($this->getTargetEntityTypeId()));
+    if (in_array($this->getName(), $disallowed_field_names)) {
+      throw new FieldException(String::format('Attempt to create field %name which is reserved by entity type %type.', array('%name' => $this->getName(), '%type' => $this->getTargetEntityTypeId())));
     }
 
     // Check that the field type is known.
-    $field_type = $field_type_manager->getDefinition($this->type, FALSE);
+    $field_type = $field_type_manager->getDefinition($this->getType(), FALSE);
     if (!$field_type) {
-      throw new FieldException(String::format('Attempt to create a field of unknown type %type.', array('%type' => $this->type)));
+      throw new FieldException(String::format('Attempt to create a field of unknown type %type.', array('%type' => $this->getType())));
     }
     $this->module = $field_type['provider'];
 
     // 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->getDefaultSettings($this->getType());
 
     // Notify the entity storage.
-    $entity_manager->getStorage($this->entity_type)->onFieldCreate($this);
+    $entity_manager->getStorage($this->getTargetEntityTypeId())->onFieldCreate($this);
   }
 
   /**
@@ -332,7 +332,7 @@ protected function preSaveNew(EntityStorageInterface $storage) {
   public function calculateDependencies() {
     parent::calculateDependencies();
     // Ensure the field is dependent on the providing module.
-    $this->addDependency('module', $this->module);
+    $this->addDependency('module', $this->getModule());
     // Ensure the field is dependent on the provider of the entity type.
     $entity_type = \Drupal::entityManager()->getDefinition($this->entity_type);
     $this->addDependency('module', $entity_type->getProvider());
@@ -351,16 +351,16 @@ protected function preSaveUpdated(EntityStorageInterface $storage) {
     $field_type_manager = \Drupal::service('plugin.manager.field.field_type');
 
     // Some updates are always disallowed.
-    if ($this->type != $this->original->type) {
+    if ($this->getType() != $this->original->getType()) {
       throw new FieldException("Cannot change an existing field's type.");
     }
-    if ($this->entity_type != $this->original->entity_type) {
+    if ($this->getTargetEntityTypeId() != $this->original->getTargetEntityTypeId()) {
       throw new FieldException("Cannot change an existing field's entity_type.");
     }
 
     // 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->getDefaultSettings($this->getType());
 
     // See if any module forbids the update by throwing an exception. This
     // invokes hook_field_config_update_forbid().
@@ -369,7 +369,7 @@ protected function preSaveUpdated(EntityStorageInterface $storage) {
     // Notify the storage. The controller can reject the definition
     // update as invalid by raising an exception, which stops execution before
     // the definition is written to config.
-    $entity_manager->getStorage($this->entity_type)->onFieldUpdate($this);
+    $entity_manager->getStorage($this->getTargetEntityTypeId())->onFieldUpdate($this);
   }
 
   /**
@@ -464,7 +464,7 @@ public function getSchema() {
 
       // Check that the schema does not include forbidden column names.
       if (array_intersect(array_keys($schema['columns']), static::getReservedColumns())) {
-        throw new FieldException(String::format('Illegal field type @field_type on @field_name.', array('@field_type' => $this->type, '@field_name' => $this->name)));
+        throw new FieldException(String::format('Illegal field type @field_type on @field_name.', array('@field_type' => $this->getType(), '@field_name' => $this->getName())));
       }
 
       // Merge custom indexes with those specified by the field type. Custom
@@ -502,10 +502,11 @@ public function getColumns() {
    * {@inheritdoc}
    */
   public function getBundles() {
-    if (empty($this->deleted)) {
+    $deleted = $this->isDeleted();
+    if (empty($deleted)) {
       $map = \Drupal::entityManager()->getFieldMap();
-      if (isset($map[$this->entity_type][$this->name]['bundles'])) {
-        return $map[$this->entity_type][$this->name]['bundles'];
+      if (isset($map[$this->getTargetEntityTypeId()][$this->name]['bundles'])) {
+        return $map[$this->getTargetEntityTypeId()][$this->name]['bundles'];
       }
     }
     return array();
@@ -521,6 +522,36 @@ public function getName() {
   /**
    * {@inheritdoc}
    */
+  public function setIndexes(array $indexes) {
+    $this->set('indexes', $indexes);
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setDeleted($deleted) {
+    $this->set('deleted', $deleted);
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function isDeleted() {
+    return $this->deleted;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getModule() {
+    return $this->module;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function getType() {
     return $this->type;
   }
@@ -535,7 +566,7 @@ public function getSettings() {
     //   $this.
     $field_type_manager = \Drupal::service('plugin.manager.field.field_type');
 
-    $settings = $field_type_manager->getDefaultSettings($this->type);
+    $settings = $field_type_manager->getDefaultSettings($this->getType());
     return $this->settings + $settings;
   }
 
@@ -561,6 +592,22 @@ public function getSetting($setting_name) {
   /**
    * {@inheritdoc}
    */
+  public function setSetting($setting_name, $value) {
+    $this->settings[$setting_name] = $value;
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setSettings($settings) {
+    $this->set('settings', $settings);
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function isTranslatable() {
     return $this->translatable;
   }
@@ -574,12 +621,7 @@ public function isRevisionable() {
   }
 
   /**
-   * Sets whether the field is translatable.
-   *
-   * @param bool $translatable
-   *   Whether the field is translatable.
-   *
-   * @return $this
+   * {@inheritdoc}
    */
   public function setTranslatable($translatable) {
     $this->translatable = $translatable;
@@ -617,6 +659,14 @@ public function getCardinality() {
   /**
    * {@inheritdoc}
    */
+  public function setCardinality($cardinality) {
+    $this->set('cardinality', $cardinality);
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function isRequired() {
     return FALSE;
   }
@@ -639,6 +689,14 @@ public function isLocked() {
   /**
    * {@inheritdoc}
    */
+  public function setLocked($locked) {
+    $this->set('locked', $locked);
+    return $this;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function getTargetEntityTypeId() {
     return $this->entity_type;
   }
@@ -686,13 +744,13 @@ public function entityCount($as_bool = FALSE) {
     // Entity Query throws an exception if there is no base table.
     if ($entity_type->getBaseTable()) {
       if ($this->deleted) {
-        $query = $factory->get($this->entity_type)
+        $query = $factory->get($this->getTargetEntityTypeId())
           ->condition('id:' . $this->uuid() . '.deleted', 1);
       }
       elseif ($this->getBundles()) {
         $storage_details = $this->getSchema();
         $columns = array_keys($storage_details['columns']);
-        $query = $factory->get($this->entity_type);
+        $query = $factory->get($this->getTargetEntityTypeId());
         $group = $query->orConditionGroup();
         foreach ($columns as $column) {
           $group->exists($this->name . '.' . $column);
diff --git a/core/modules/field/src/FieldConfigInterface.php b/core/modules/field/src/FieldConfigInterface.php
index c6575ec..e302531 100644
--- a/core/modules/field/src/FieldConfigInterface.php
+++ b/core/modules/field/src/FieldConfigInterface.php
@@ -31,4 +31,92 @@ public function getBundles();
    */
   public function isLocked();
 
+  /**
+   * Sets the locked flag.
+   *
+   * @param bool $locked
+   *   Sets value of locked flag
+   *
+   * @return $this
+   */
+  public function setLocked($locked);
+
+  /**
+   * Returns whether the field is deleted or not.
+   *
+   * @return bool
+   *   The deleted property.
+   */
+  public function isDeleted();
+
+  /**
+   * Sets the field config deleted property.
+   *
+   * @param bool $deleted
+   *   The field config deleted property.
+   *
+   * @return $this
+   */
+  public function setDeleted($deleted);
+
+/**
+   * Sets the maximum number of items allowed for the field.
+   *
+   * @param integer $cardinality
+   *   The cardinality value.
+   *
+   * @return $this
+   */
+  public function setCardinality($cardinality);
+
+  /**
+   * Sets the field config indexes.
+   *
+   * @param array $indexes
+   *   The field config indexes.
+   *
+   * @return $this
+   */
+  public function setIndexes(array $indexes);
+
+  /**
+   * Sets the value for a field setting by name.
+   *
+   * @param string $setting_name
+   *   The name of the setting.
+   * @param mixed $value
+   *   The value of the setting.
+   *
+   * @return $this
+   */
+  public function setSetting($setting_name, $value);
+
+/**
+   * Sets field settings by overwriting the settings array.
+   *
+   * @param string $settings
+   *   The array of field settings.
+   *
+   * @return $this
+   */
+  public function setSettings($settings);
+
+  /**
+   * Returns the name of the module providing the field type.
+   *
+   * @return string
+   *   The name of the module that provides the field type.
+   */
+  public function getModule();
+
+  /**
+   * Sets whether the field is translatable.
+   *
+   * @param bool $translatable
+   *   Whether the field is translatable.
+   *
+   * @return $this
+   */
+  public function setTranslatable($translatable);
+
 }
