diff --git a/core/modules/comment/comment.install b/core/modules/comment/comment.install
index b022efb..ba79656 100644
--- a/core/modules/comment/comment.install
+++ b/core/modules/comment/comment.install
@@ -10,7 +10,7 @@
  */
 function comment_uninstall() {
   // Delete comment_body field.
-  field_delete_field('comment_body');
+  field_info_field('comment_body')->delete();
 
   // Remove variables.
   variable_del('comment_block_count');
diff --git a/core/modules/comment/lib/Drupal/comment/Tests/CommentFieldsTest.php b/core/modules/comment/lib/Drupal/comment/Tests/CommentFieldsTest.php
index a29db8c..4a63b23 100644
--- a/core/modules/comment/lib/Drupal/comment/Tests/CommentFieldsTest.php
+++ b/core/modules/comment/lib/Drupal/comment/Tests/CommentFieldsTest.php
@@ -41,7 +41,7 @@ function testCommentDefaultFields() {
       $this->assertTrue(isset($instances['comment_node_' . $type_name]['comment_body']), format_string('The comment_body field is present for comments on type @type', array('@type' => $type_name)));
 
       // Delete the instance along the way.
-      field_delete_instance($instances['comment_node_' . $type_name]['comment_body']);
+      $instances['comment_node_' . $type_name]['comment_body']->delete();
     }
 
     // Check that the 'comment_body' field is deleted.
diff --git a/core/modules/field/field.api.php b/core/modules/field/field.api.php
index 095c28d..4731bbf 100644
--- a/core/modules/field/field.api.php
+++ b/core/modules/field/field.api.php
@@ -1644,7 +1644,7 @@ function hook_field_storage_create_field($field) {
 /**
  * Act on deletion of a field.
  *
- * This hook is invoked from field_delete_field() to ask the field storage
+ * This hook is invoked from deletion of field entity to ask the field storage
  * module to mark all information stored in the field for deletion.
  *
  * @param $field
@@ -1671,7 +1671,7 @@ function hook_field_storage_delete_field($field) {
 /**
  * Act on deletion of a field instance.
  *
- * This hook is invoked from field_delete_instance() to ask the field storage
+ * This hook is invoked from deletion of field instance to ask the field storage
  * module to mark all information stored for the field instance for deletion.
  *
  * @param $instance
@@ -1968,7 +1968,7 @@ function hook_field_update_field($field, $prior_field, $has_data) {
 /**
  * Act on a field being deleted.
  *
- * This hook is invoked just after a field is deleted by field_delete_field().
+ * This hook is invoked just after a field entity is deleted.
  *
  * @param $field
  *   The field just deleted.
@@ -1995,8 +1995,7 @@ function hook_field_update_instance($instance, $prior_instance) {
 /**
  * Act on a field instance being deleted.
  *
- * This hook is invoked from field_delete_instance() after the instance is
- * deleted.
+ * This hook is invoked after the instance is deleted.
  *
  * @param $instance
  *   The instance just deleted.
diff --git a/core/modules/field/field.attach.inc b/core/modules/field/field.attach.inc
index 87bd6bb..3d4a1ef 100644
--- a/core/modules/field/field.attach.inc
+++ b/core/modules/field/field.attach.inc
@@ -1567,7 +1567,7 @@ function field_entity_bundle_delete($entity_type, $bundle) {
   // entity types or bundles.
   $instances = field_read_instances(array('entity_type' => $entity_type, 'bundle' => $bundle), array('include_inactive' => 1));
   foreach ($instances as $instance) {
-    field_delete_instance($instance);
+    $instance->delete();
   }
 
   // Clear the cache.
diff --git a/core/modules/field/field.crud.inc b/core/modules/field/field.crud.inc
index 3138b00..d229bd3 100644
--- a/core/modules/field/field.crud.inc
+++ b/core/modules/field/field.crud.inc
@@ -55,6 +55,9 @@
  *
  * @throws Drupal\field\FieldException
  *
+ * @deprecated as of Drupal 8.0. Use
+ *   entity_create('field_entity', $field)->save().
+ *
  * See: @link field Field API data structures @endlink.
  */
 function field_create_field(array $field) {
@@ -83,6 +86,9 @@ function field_create_field(array $field) {
  *
  * @throws Drupal\field\FieldException
  *
+ * @deprecated as of Drupal 8.0. Use
+ *   $field->save().
+ *
  * @see field_create_field()
  */
 function field_update_field($field) {
@@ -214,6 +220,9 @@ function field_read_fields($conditions = array(), $include_additional = array())
  *
  * @param $field_name
  *   The field name to delete.
+ *
+ * @deprecated as of Drupal 8.0. Use
+ *   $field->delete().
  */
 function field_delete_field($field_name) {
   if ($field = field_info_field($field_name)) {
@@ -244,6 +253,9 @@ function field_delete_field($field_name) {
  *
  * @throws Drupal\field\FieldException
  *
+ * @deprecated as of Drupal 8.0. Use
+ *   entity_create('field_instance', $instance)->save().
+ *
  * See: @link field Field API data structures @endlink.
  */
 function field_create_instance(array $instance) {
@@ -268,6 +280,9 @@ function field_create_instance(array $instance) {
  *
  * @throws Drupal\field\FieldException
  *
+ * @deprecated as of Drupal 8.0. Use
+ *   $instance->save().
+ *
  * @see field_create_instance()
  */
 function field_update_instance($instance) {
@@ -426,6 +441,9 @@ function field_read_instances($conditions = array(), $include_additional = array
  *   If TRUE, the field will be deleted as well if its last instance is being
  *   deleted. If FALSE, it is the caller's responsibility to handle the case of
  *   fields left without instances. Defaults to TRUE.
+ *
+ * @deprecated as of Drupal 8.0. Use
+ *   $instance->delete($field_cleanup).
  */
 function field_delete_instance(FieldInstance $instance, $field_cleanup = TRUE) {
   $instance->delete($field_cleanup);
diff --git a/core/modules/field/field.module b/core/modules/field/field.module
index 1e31484..3e8cce6 100644
--- a/core/modules/field/field.module
+++ b/core/modules/field/field.module
@@ -73,8 +73,7 @@
  *   field_sql_storage.module, stores field data in the local SQL database.
  *
  * - @link field_purge Field API bulk data deletion @endlink: Cleans up after
- *   bulk deletion operations such as field_delete_field() and
- *   field_delete_instance().
+ *   bulk deletion operations such as deletion of field or field_instance.
  *
  * - @link field_language Field language API @endlink: Provides native
  *   multilingual support for the Field API.
diff --git a/core/modules/field/lib/Drupal/field/Tests/BulkDeleteTest.php b/core/modules/field/lib/Drupal/field/Tests/BulkDeleteTest.php
index 9b03174..55f39e3 100644
--- a/core/modules/field/lib/Drupal/field/Tests/BulkDeleteTest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/BulkDeleteTest.php
@@ -145,9 +145,8 @@ function setUp() {
    * the database and that the appropriate Field API functions can
    * operate on the deleted data and instance.
    *
-   * This tests how EntityFieldQuery interacts with
-   * field_delete_instance() and could be moved to FieldCrudTestCase,
-   * but depends on this class's setUp().
+   * This tests how EntityFieldQuery interacts with field instance deletion and
+   * could be moved to FieldCrudTestCase, but depends on this class's setUp().
    */
   function testDeleteFieldInstance() {
     $bundle = reset($this->bundles);
@@ -163,7 +162,7 @@ function testDeleteFieldInstance() {
 
     // Delete the instance.
     $instance = field_info_instance($this->entity_type, $field['field_name'], $bundle);
-    field_delete_instance($instance);
+    $instance->delete();
 
     // The instance still exists, deleted.
     $instances = field_read_instances(array('field_id' => $field['uuid'], 'deleted' => 1), array('include_deleted' => 1, 'include_inactive' => 1));
@@ -213,7 +212,7 @@ function testPurgeInstance() {
 
     // Delete the instance.
     $instance = field_info_instance($this->entity_type, $field['field_name'], $bundle);
-    field_delete_instance($instance);
+    $instance->delete();
 
     // No field hooks were called.
     $mem = field_test_memorize();
@@ -277,7 +276,7 @@ function testPurgeField() {
     // Delete the first instance.
     $bundle = reset($this->bundles);
     $instance = field_info_instance($this->entity_type, $field['field_name'], $bundle);
-    field_delete_instance($instance);
+    $instance->delete();
 
     // Assert that hook_field_delete() was not called yet.
     $mem = field_test_memorize();
@@ -308,7 +307,7 @@ function testPurgeField() {
     // Delete the second instance.
     $bundle = next($this->bundles);
     $instance = field_info_instance($this->entity_type, $field['field_name'], $bundle);
-    field_delete_instance($instance);
+    $instance->delete();
 
     // Assert that hook_field_delete() was not called yet.
     $mem = field_test_memorize();
diff --git a/core/modules/field/lib/Drupal/field/Tests/CrudTest.php b/core/modules/field/lib/Drupal/field/Tests/CrudTest.php
index a0afa3f..719d99f 100644
--- a/core/modules/field/lib/Drupal/field/Tests/CrudTest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/CrudTest.php
@@ -296,7 +296,7 @@ function testDeleteField() {
     // Test that the first field is not deleted, and then delete it.
     $field = field_read_field($this->field['field_name'], array('include_deleted' => TRUE));
     $this->assertTrue(!empty($field) && empty($field['deleted']), 'A new field is not marked for deletion.');
-    field_delete_field($this->field['field_name']);
+    field_info_field($this->field['field_name'])->delete();
 
     // Make sure that the field is marked as deleted when it is specifically
     // loaded.
diff --git a/core/modules/field/lib/Drupal/field/Tests/FieldInstanceCrudTest.php b/core/modules/field/lib/Drupal/field/Tests/FieldInstanceCrudTest.php
index 2455a31..10b8a43 100644
--- a/core/modules/field/lib/Drupal/field/Tests/FieldInstanceCrudTest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/FieldInstanceCrudTest.php
@@ -189,7 +189,7 @@ function testDeleteFieldInstance() {
     // Test that the first instance is not deleted, and then delete it.
     $instance = field_read_instance('test_entity', $this->instance_definition['field_name'], $this->instance_definition['bundle'], array('include_deleted' => TRUE));
     $this->assertTrue(!empty($instance) && empty($instance['deleted']), 'A new field instance is not marked for deletion.');
-    field_delete_instance($instance);
+    $instance->delete();
 
     // Make sure the instance is marked as deleted when the instance is
     // specifically loaded.
@@ -205,7 +205,7 @@ function testDeleteFieldInstance() {
     $this->assertTrue(!empty($another_instance) && empty($another_instance['deleted']), 'A non-deleted field instance is not marked for deletion.');
 
     // Make sure the field is deleted when its last instance is deleted.
-    field_delete_instance($another_instance);
+    $instance->delete();
     $deleted_fields = \Drupal::state()->get('field.field.deleted');
     $this->assertTrue(isset($deleted_fields[$another_instance['field_id']]), 'A deleted field is marked for deletion.');
     $field = field_read_field($another_instance['field_name']);
diff --git a/core/modules/field_ui/field_ui.admin.inc b/core/modules/field_ui/field_ui.admin.inc
index d73ffac..ceb6996 100644
--- a/core/modules/field_ui/field_ui.admin.inc
+++ b/core/modules/field_ui/field_ui.admin.inc
@@ -756,11 +756,11 @@ function field_ui_field_delete_form_submit($form, &$form_state) {
   $bundle_label = $bundles[$entity_type][$bundle]['label'];
 
   if (!empty($bundle) && $field && !$field['locked'] && $form_values['confirm']) {
-    field_delete_instance($instance);
-    drupal_set_message(t('The field %field has been deleted from the %type content type.', array('%field' => $instance['label'], '%type' => $bundle_label)));
+    $instance->delete();
+    drupal_set_message(t('The field %field has been deleted from the %type content type.', array('%field' => $instance->label(), '%type' => $bundle_label)));
   }
   else {
-    drupal_set_message(t('There was a problem removing the %field from the %type content type.', array('%field' => $instance['label'], '%type' => $bundle_label)), 'error');
+    drupal_set_message(t('There was a problem removing the %field from the %type content type.', array('%field' => $instance->label(), '%type' => $bundle_label)), 'error');
   }
 
   $admin_path = field_ui_bundle_admin_path($entity_type, $bundle);
diff --git a/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageDisplayTest.php b/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageDisplayTest.php
index 4ca882b..18d57fa 100644
--- a/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageDisplayTest.php
+++ b/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageDisplayTest.php
@@ -207,7 +207,7 @@ function testNoFieldsDisplayOverview() {
     $this->drupalCreateContentType(array('type' => 'no_fields', 'name' => 'No fields'));
 
     // Remove the 'body' field.
-    field_delete_instance(field_info_instance('node', 'body', 'no_fields'));
+    field_info_instance('node', 'body', 'no_fields')->delete();
 
     $this->drupalGet('admin/structure/types/manage/no_fields/display');
     $this->assertRaw(t('There are no fields yet added. You can add new fields on the <a href="@link">Manage fields</a> page.', array('@link' => url('admin/structure/types/manage/no_fields/fields'))));
diff --git a/core/modules/file/lib/Drupal/file/Tests/FileFieldDisplayTest.php b/core/modules/file/lib/Drupal/file/Tests/FileFieldDisplayTest.php
index 81e87d0..d50ecb6 100644
--- a/core/modules/file/lib/Drupal/file/Tests/FileFieldDisplayTest.php
+++ b/core/modules/file/lib/Drupal/file/Tests/FileFieldDisplayTest.php
@@ -35,8 +35,6 @@ function testNodeDisplay() {
     );
     $widget_settings = array();
     $this->createFileField($field_name, $type_name, $field_settings, $instance_settings, $widget_settings);
-    $field = field_info_field($field_name);
-    $instance = field_info_instance('node', $field_name, $type_name);
 
     // 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/lib/Drupal/file/Tests/FileFieldPathTest.php b/core/modules/file/lib/Drupal/file/Tests/FileFieldPathTest.php
index d963b89..0a6fdcd 100644
--- a/core/modules/file/lib/Drupal/file/Tests/FileFieldPathTest.php
+++ b/core/modules/file/lib/Drupal/file/Tests/FileFieldPathTest.php
@@ -25,7 +25,7 @@ public static function getInfo() {
   function testUploadPath() {
     $field_name = strtolower($this->randomName());
     $type_name = 'article';
-    $field = $this->createFileField($field_name, $type_name);
+    $this->createFileField($field_name, $type_name);
     $test_file = $this->getTestFile('text');
 
     // Create a new node.
@@ -37,7 +37,7 @@ function testUploadPath() {
     $this->assertPathMatch('public://' . $test_file->filename, $node_file->uri, t('The file %file was uploaded to the correct path.', array('%file' => $node_file->uri)));
 
     // Change the path to contain multiple subdirectories.
-    $field = $this->updateFileField($field_name, $type_name, array('file_directory' => 'foo/bar/baz'));
+    $this->updateFileField($field_name, $type_name, array('file_directory' => 'foo/bar/baz'));
 
     // Upload a new file into the subdirectories.
     $nid = $this->uploadNodeFile($test_file, $field_name, $type_name);
@@ -49,7 +49,7 @@ function testUploadPath() {
 
     // Check the path when used with tokens.
     // Change the path to contain multiple token directories.
-    $field = $this->updateFileField($field_name, $type_name, array('file_directory' => '[current-user:uid]/[current-user:name]'));
+    $this->updateFileField($field_name, $type_name, array('file_directory' => '[current-user:uid]/[current-user:name]'));
 
     // Upload a new file into the token subdirectories.
     $nid = $this->uploadNodeFile($test_file, $field_name, $type_name);
diff --git a/core/modules/file/lib/Drupal/file/Tests/FileFieldRSSContentTest.php b/core/modules/file/lib/Drupal/file/Tests/FileFieldRSSContentTest.php
index 1124e18..a66fd8d 100644
--- a/core/modules/file/lib/Drupal/file/Tests/FileFieldRSSContentTest.php
+++ b/core/modules/file/lib/Drupal/file/Tests/FileFieldRSSContentTest.php
@@ -42,8 +42,6 @@ function testFileFieldRSSContent() {
     );
     $widget_settings = array();
     $this->createFileField($field_name, $type_name, $field_settings, $instance_settings, $widget_settings);
-    $field = field_info_field($field_name);
-    $instance = field_info_instance('node', $field_name, $type_name);
 
     // RSS display must be added manually.
     $this->drupalGet("admin/structure/types/manage/$type_name/display");
diff --git a/core/modules/file/lib/Drupal/file/Tests/FileFieldRevisionTest.php b/core/modules/file/lib/Drupal/file/Tests/FileFieldRevisionTest.php
index 47d19d1..3f2003a 100644
--- a/core/modules/file/lib/Drupal/file/Tests/FileFieldRevisionTest.php
+++ b/core/modules/file/lib/Drupal/file/Tests/FileFieldRevisionTest.php
@@ -34,8 +34,6 @@ function testRevisions() {
     $type_name = 'article';
     $field_name = strtolower($this->randomName());
     $this->createFileField($field_name, $type_name);
-    $field = field_info_field($field_name);
-    $instance = field_info_instance('node', $field_name, $type_name);
 
     // Attach the same fields to users.
     $this->attachFileField($field_name, 'user', 'user');
diff --git a/core/modules/file/lib/Drupal/file/Tests/FileFieldTestBase.php b/core/modules/file/lib/Drupal/file/Tests/FileFieldTestBase.php
index c2d922d..94eaf39 100644
--- a/core/modules/file/lib/Drupal/file/Tests/FileFieldTestBase.php
+++ b/core/modules/file/lib/Drupal/file/Tests/FileFieldTestBase.php
@@ -72,9 +72,10 @@ function createFileField($name, $type_name, $field_settings = array(), $instance
       'cardinality' => !empty($field_settings['cardinality']) ? $field_settings['cardinality'] : 1,
     );
     $field['settings'] = array_merge($field['settings'], $field_settings);
-    field_create_field($field);
+    $field = field_create_field($field);
 
     $this->attachFileField($name, 'node', $type_name, $instance_settings, $widget_settings);
+    return $field;
   }
 
   /**
diff --git a/core/modules/file/lib/Drupal/file/Tests/FileFieldValidateTest.php b/core/modules/file/lib/Drupal/file/Tests/FileFieldValidateTest.php
index 7a40a1c..ce360c2 100644
--- a/core/modules/file/lib/Drupal/file/Tests/FileFieldValidateTest.php
+++ b/core/modules/file/lib/Drupal/file/Tests/FileFieldValidateTest.php
@@ -28,8 +28,7 @@ public static function getInfo() {
   function testRequired() {
     $type_name = 'article';
     $field_name = strtolower($this->randomName());
-    $this->createFileField($field_name, $type_name, array(), array('required' => '1'));
-    $field = field_info_field($field_name);
+    $field = $this->createFileField($field_name, $type_name, array(), array('required' => '1'));
     $instance = field_info_instance('node', $field_name, $type_name);
 
     $test_file = $this->getTestFile('text');
@@ -51,7 +50,7 @@ function testRequired() {
     $this->assertFileEntryExists($node_file, t('File entry exists after uploading to the required field.'));
 
     // Try again with a multiple value field.
-    field_delete_field($field_name);
+    $field->delete();
     $this->createFileField($field_name, $type_name, array('cardinality' => FIELD_CARDINALITY_UNLIMITED), array('required' => '1'));
 
     // Try to post a new node without uploading a file in the multivalue field.
@@ -65,9 +64,6 @@ function testRequired() {
     $node_file = file_load($node->{$field_name}[LANGUAGE_NOT_SPECIFIED][0]['fid']);
     $this->assertFileExists($node_file, t('File exists after uploading to the required multiple value field.'));
     $this->assertFileEntryExists($node_file, t('File entry exists after uploading to the required multipel value field.'));
-
-    // Remove our file field.
-    field_delete_field($field_name);
   }
 
   /**
@@ -77,8 +73,6 @@ function testFileMaxSize() {
     $type_name = 'article';
     $field_name = strtolower($this->randomName());
     $this->createFileField($field_name, $type_name, array(), array('required' => '1'));
-    $field = field_info_field($field_name);
-    $instance = field_info_instance('node', $field_name, $type_name);
 
     $small_file = $this->getTestFile('text', 131072); // 128KB.
     $large_file = $this->getTestFile('text', 1310720); // 1.2MB
@@ -93,7 +87,6 @@ function testFileMaxSize() {
     foreach ($sizes as $max_filesize => $file_limit) {
       // Set the max file upload size.
       $this->updateFileField($field_name, $type_name, array('max_filesize' => $max_filesize));
-      $instance = field_info_instance('node', $field_name, $type_name);
 
       // Create a new node with the small file, which should pass.
       $nid = $this->uploadNodeFile($small_file, $field_name, $type_name);
@@ -117,9 +110,6 @@ function testFileMaxSize() {
     $node_file = file_load($node->{$field_name}[LANGUAGE_NOT_SPECIFIED][0]['fid']);
     $this->assertFileExists($node_file, t('File exists after uploading a file (%filesize) with no max limit.', array('%filesize' => format_size($large_file->filesize))));
     $this->assertFileEntryExists($node_file, t('File entry exists after uploading a file (%filesize) with no max limit.', array('%filesize' => format_size($large_file->filesize))));
-
-    // Remove our file field.
-    field_delete_field($field_name);
   }
 
   /**
@@ -129,8 +119,6 @@ function testFileExtension() {
     $type_name = 'article';
     $field_name = strtolower($this->randomName());
     $this->createFileField($field_name, $type_name);
-    $field = field_info_field($field_name);
-    $instance = field_info_instance('node', $field_name, $type_name);
 
     $test_file = $this->getTestFile('image');
     list(, $test_file_extension) = explode('.', $test_file->filename);
@@ -162,8 +150,5 @@ function testFileExtension() {
     $node_file = file_load($node->{$field_name}[LANGUAGE_NOT_SPECIFIED][0]['fid']);
     $this->assertFileExists($node_file, t('File exists after uploading a file with extension checking.'));
     $this->assertFileEntryExists($node_file, t('File entry exists after uploading a file with extension checking.'));
-
-    // Remove our file field.
-    field_delete_field($field_name);
   }
 }
diff --git a/core/modules/file/lib/Drupal/file/Tests/FileFieldWidgetTest.php b/core/modules/file/lib/Drupal/file/Tests/FileFieldWidgetTest.php
index 352ce4b..0260ad6 100644
--- a/core/modules/file/lib/Drupal/file/Tests/FileFieldWidgetTest.php
+++ b/core/modules/file/lib/Drupal/file/Tests/FileFieldWidgetTest.php
@@ -34,8 +34,6 @@ function testSingleValuedWidget() {
     $type_name = 'article';
     $field_name = strtolower($this->randomName());
     $this->createFileField($field_name, $type_name);
-    $field = field_info_field($field_name);
-    $instance = field_info_instance('node', $field_name, $type_name);
 
     $test_file = $this->getTestFile('text');
 
@@ -99,14 +97,6 @@ function testMultiValuedWidget() {
     $this->createFileField($field_name, $type_name, array('cardinality' => 3));
     $this->createFileField($field_name2, $type_name, array('cardinality' => 3));
 
-    $field = field_info_field($field_name);
-    $instance = field_info_instance('node', $field_name, $type_name);
-
-    $field2 = field_info_field($field_name2);
-    $instance2 = field_info_instance('node', $field_name2, $type_name);
-
-    $test_file = $this->getTestFile('text');
-
     foreach (array('nojs', 'js') as $type) {
       // Visit the node creation form, and upload 3 files for each field. Since
       // the field has cardinality of 3, ensure the "Upload" button is displayed
@@ -213,8 +203,6 @@ function testPrivateFileSetting() {
     $type_name = 'article';
     $field_name = strtolower($this->randomName());
     $this->createFileField($field_name, $type_name);
-    $field = field_info_field($field_name);
-    $instance = field_info_instance('node', $field_name, $type_name);
 
     $test_file = $this->getTestFile('text');
 
diff --git a/core/modules/file/lib/Drupal/file/Tests/FileTokenReplaceTest.php b/core/modules/file/lib/Drupal/file/Tests/FileTokenReplaceTest.php
index 4d56b7b..d4a9958 100644
--- a/core/modules/file/lib/Drupal/file/Tests/FileTokenReplaceTest.php
+++ b/core/modules/file/lib/Drupal/file/Tests/FileTokenReplaceTest.php
@@ -33,8 +33,6 @@ function testFileTokenReplacement() {
     $type_name = 'article';
     $field_name = 'field_' . strtolower($this->randomName());
     $this->createFileField($field_name, $type_name);
-    $field = field_info_field($field_name);
-    $instance = field_info_instance('node', $field_name, $type_name);
 
     $test_file = $this->getTestFile('text');
     // Coping a file to test uploads with non-latin filenames.
diff --git a/core/modules/forum/forum.install b/core/modules/forum/forum.install
index 1bc6915..a534792 100644
--- a/core/modules/forum/forum.install
+++ b/core/modules/forum/forum.install
@@ -120,7 +120,7 @@ function forum_uninstall() {
 
   variable_del('node_options_forum');
 
-  field_delete_field('taxonomy_forums');
+  field_info_field('taxonomy_forums')->delete();
   // Purge field data now to allow taxonomy module to be uninstalled
   // if this is the only field remaining.
   field_purge_batch(10);
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php b/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php
index 3632867..cceee63 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php
@@ -169,7 +169,7 @@ function testFieldTranslationForm() {
     $this->assertRaw('Not translated');
 
     // Delete the only translatable field.
-    field_delete_field('field_test_et_ui_test');
+    field_info_field('field_test_et_ui_test')->delete();
 
     // Visit translation page.
     $this->drupalGet('node/' . $article->nid . '/translations');
diff --git a/core/modules/node/tests/modules/node_access_test_language/node_access_test_language.module b/core/modules/node/tests/modules/node_access_test_language/node_access_test_language.module
index 3d67454..3579719 100644
--- a/core/modules/node/tests/modules/node_access_test_language/node_access_test_language.module
+++ b/core/modules/node/tests/modules/node_access_test_language/node_access_test_language.module
@@ -75,5 +75,5 @@ function node_access_test_language_enable() {
  * Implements hook_disable().
  */
 function node_access_test_language_disable() {
-  field_delete_instance(field_read_instance('node', 'field_private', 'page'));
+  field_read_instance('node', 'field_private', 'page')->delete();
 }
diff --git a/core/modules/options/lib/Drupal/options/Tests/OptionsFieldTest.php b/core/modules/options/lib/Drupal/options/Tests/OptionsFieldTest.php
index 11ab663..fc7b8f8 100644
--- a/core/modules/options/lib/Drupal/options/Tests/OptionsFieldTest.php
+++ b/core/modules/options/lib/Drupal/options/Tests/OptionsFieldTest.php
@@ -77,7 +77,7 @@ function testUpdateAllowedValues() {
     $entity->save();
     $this->field['settings']['allowed_values'] = array(2 => 'Two');
     try {
-      field_update_field($this->field);
+      $this->field->save();
       $this->fail(t('Cannot update a list field to not include keys with existing data.'));
     }
     catch (FieldException $e) {
@@ -89,7 +89,7 @@ function testUpdateAllowedValues() {
 
     // Removed options do not appear.
     $this->field['settings']['allowed_values'] = array(2 => 'Two');
-    field_update_field($this->field);
+    $this->field->save();
     $entity = entity_create('entity_test', array());
     $form = entity_get_form($entity);
     $this->assertTrue(empty($form[$this->field_name][$langcode][1]), 'Option 1 does not exist');
@@ -98,7 +98,7 @@ function testUpdateAllowedValues() {
 
     // Completely new options appear.
     $this->field['settings']['allowed_values'] = array(10 => 'Update', 20 => 'Twenty');
-    field_update_field($this->field);
+    $this->field->save();
     $form = entity_get_form($entity);
     $this->assertTrue(empty($form[$this->field_name][$langcode][1]), 'Option 1 does not exist');
     $this->assertTrue(empty($form[$this->field_name][$langcode][2]), 'Option 2 does not exist');
@@ -107,8 +107,7 @@ function testUpdateAllowedValues() {
     $this->assertTrue(!empty($form[$this->field_name][$langcode][20]), 'Option 20 exists');
 
     // Options are reset when a new field with the same name is created.
-    field_delete_field($this->field_name);
-    unset($this->field['id']);
+    $this->field->delete();
     field_create_field($this->field_definition);
     $this->instance = array(
       'field_name' => $this->field_name,
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/VocabularyStorageController.php b/core/modules/taxonomy/lib/Drupal/taxonomy/VocabularyStorageController.php
index dcda5e8..80401e1 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/VocabularyStorageController.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/VocabularyStorageController.php
@@ -36,7 +36,7 @@ protected function postSave(EntityInterface $entity, $update) {
             }
           }
           if ($update_field) {
-            field_update_field($field);
+            $field->save();
           }
         }
       }
@@ -82,11 +82,11 @@ protected function postDelete($entities) {
       }
       if ($modified_field) {
         if (empty($taxonomy_field['settings']['allowed_values'])) {
-          field_delete_field($field_name);
+          $taxonomy_field->delete();
         }
         else {
           // Update the field definition with the new allowed values.
-          field_update_field($taxonomy_field);
+          $taxonomy_field->save();
         }
       }
     }
