diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..5080fa9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+sites
+sites/*
\ No newline at end of file
diff --git a/core/modules/comment/lib/Drupal/comment/Tests/CommentLinksTest.php b/core/modules/comment/lib/Drupal/comment/Tests/CommentLinksTest.php
index 5585650..df68cb8 100644
--- a/core/modules/comment/lib/Drupal/comment/Tests/CommentLinksTest.php
+++ b/core/modules/comment/lib/Drupal/comment/Tests/CommentLinksTest.php
@@ -168,7 +168,8 @@ function setEnvironment(array $info) {
     variable_set('comment_anonymous_' . $this->node->type, $info['contact']);
     if ($this->node->comment != $info['comments']) {
       $this->node->comment = $info['comments'];
-      node_save($this->node);
+      $node = $this->node;
+      $node->save();
     }
 
     // Change user settings.
diff --git a/core/modules/comment/lib/Drupal/comment/Tests/CommentRssTest.php b/core/modules/comment/lib/Drupal/comment/Tests/CommentRssTest.php
index 86d256a..c7b9581 100644
--- a/core/modules/comment/lib/Drupal/comment/Tests/CommentRssTest.php
+++ b/core/modules/comment/lib/Drupal/comment/Tests/CommentRssTest.php
@@ -40,7 +40,8 @@ function testCommentRss() {
 
     // Hide comments from RSS feed and check presence.
     $this->node->comment = COMMENT_NODE_HIDDEN;
-    node_save($this->node);
+    $node = $this->node;
+    $node->save();
     $this->drupalGet('rss.xml');
     $this->assertNoRaw($raw, 'Hidden comments is not a part of RSS feed.');
   }
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeRevisionPermissionsTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeRevisionPermissionsTest.php
index dfdccdf..6086440 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeRevisionPermissionsTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeRevisionPermissionsTest.php
@@ -51,7 +51,8 @@ function setUp() {
         $revision = clone $nodes[$type];
         $revision->setNewRevision();
         $revision->log = $this->randomName(32);
-        node_save($revision);
+        $node = node_load($revision->nid);
+        $node->save();
         $this->node_revisions[$type][] = $revision;
       }
     }
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeRevisionsTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeRevisionsTest.php
index 46244b8..a19ae03 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeRevisionsTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeRevisionsTest.php
@@ -138,7 +138,7 @@ function testRevisions() {
     // Save this as a non-default revision.
     $new_node_revision->setNewRevision();
     $new_node_revision->isDefaultRevision = FALSE;
-    node_save($new_node_revision);
+    $new_node_revision->save();
 
     $this->drupalGet("node/$node->nid");
     $this->assertNoText($new_body, 'Revision body text is not present on default version of node.');
diff --git a/core/modules/node/node.api.php b/core/modules/node/node.api.php
index 78a3139..b2bff9a 100644
--- a/core/modules/node/node.api.php
+++ b/core/modules/node/node.api.php
@@ -39,7 +39,7 @@
  * - Instantiating a new node:
  *   - hook_node_create() (all)
  *   - hook_entity_create() (all)
- * - Creating a new node (calling node_save() on a new node):
+ * - Creating a new node (calling $node->save() on a new node):
  *   - field_attach_presave()
  *   - hook_node_presave() (all)
  *   - hook_entity_presave() (all)
@@ -50,7 +50,7 @@
  *   - hook_entity_insert() (all)
  *   - hook_node_access_records() (all)
  *   - hook_node_access_records_alter() (all)
- * - Updating an existing node (calling node_save() on an existing node):
+ * - Updating an existing node (calling $node->save() on an existing node):
  *   - field_attach_presave()
  *   - hook_node_presave() (all)
  *   - hook_entity_presave() (all)
@@ -518,7 +518,7 @@ function hook_node_revision_delete(\Drupal\Core\Entity\EntityInterface $node) {
 /**
  * Respond to creation of a new node.
  *
- * This hook is invoked from node_save() after the database query that will
+ * This hook is invoked from $node->save() after the database query that will
  * insert the node into the node table is scheduled for execution, after the
  * type-specific hook_insert() is invoked, and after field_attach_insert() is
  * called.
@@ -526,10 +526,10 @@ function hook_node_revision_delete(\Drupal\Core\Entity\EntityInterface $node) {
  * Note that when this hook is invoked, the changes have not yet been written to
  * the database, because a database transaction is still in progress. The
  * transaction is not finalized until the save operation is entirely completed
- * and node_save() goes out of scope. You should not rely on data in the
+ * and $node->save() goes out of scope. You should not rely on data in the
  * database at this time as it is not updated yet. You should also note that any
  * write/update database queries executed from this hook are also not committed
- * immediately. Check node_save() and db_transaction() for more info.
+ * immediately. Check $node->save() and db_transaction() for more info.
  *
  * @param \Drupal\Core\Entity\EntityInterface $node
  *   The node that is being created.
@@ -718,7 +718,7 @@ function hook_node_search_result(\Drupal\Core\Entity\EntityInterface $node, $lan
 /**
  * Act on a node being inserted or updated.
  *
- * This hook is invoked from node_save() before the node is saved to the
+ * This hook is invoked from $node->save() before the node is saved to the
  * database.
  *
  * @param \Drupal\Core\Entity\EntityInterface $node
@@ -738,7 +738,7 @@ function hook_node_presave(\Drupal\Core\Entity\EntityInterface $node) {
 /**
  * Respond to updates to a node.
  *
- * This hook is invoked from node_save() after the database query that will
+ * This hook is invoked from $node->save() after the database query that will
  * update node in the node table is scheduled for execution, after the
  * type-specific hook_update() is invoked, and after field_attach_update() is
  * called.
@@ -746,10 +746,10 @@ function hook_node_presave(\Drupal\Core\Entity\EntityInterface $node) {
  * Note that when this hook is invoked, the changes have not yet been written to
  * the database, because a database transaction is still in progress. The
  * transaction is not finalized until the save operation is entirely completed
- * and node_save() goes out of scope. You should not rely on data in the
+ * and $node->save() goes out of scope. You should not rely on data in the
  * database at this time as it is not updated yet. You should also note that any
  * write/update database queries executed from this hook are also not committed
- * immediately. Check node_save() and db_transaction() for more info.
+ * immediately. Check $node->save() and db_transaction() for more info.
  *
  * @param \Drupal\Core\Entity\EntityInterface $node
  *   The node that is being updated.
@@ -1200,7 +1200,7 @@ function hook_form(\Drupal\Core\Entity\EntityInterface $node, &$form_state) {
  * This hook is invoked only on the module that defines the node's content type
  * (use hook_node_insert() to act on all node insertions).
  *
- * This hook is invoked from node_save() after the node is inserted into the
+ * This hook is invoked from $node->save() after the node is inserted into the
  * node table in the database, before field_attach_insert() is called, and
  * before hook_node_insert() is invoked.
  *
@@ -1259,7 +1259,7 @@ function hook_load($nodes) {
  * This hook is invoked only on the module that defines the node's content type
  * (use hook_node_update() to act on all node updates).
  *
- * This hook is invoked from node_save() after the node is updated in the
+ * This hook is invoked from $node->save() after the node is updated in the
  * node table in the database, before field_attach_update() is called, and
  * before hook_node_update() is invoked.
  *
diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index 5c934df..236afb1 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -984,17 +984,6 @@ function node_submit(EntityInterface $node) {
 }
 
 /**
- * Saves changes to a node or adds a new node.
- *
- * @param \Drupal\Core\Entity\EntityInterface $node
- *   The $node entity to be saved. If $node->nid is
- *   omitted (or $node->is_new is TRUE), a new node will be added.
- */
-function node_save(EntityInterface $node) {
-  $node->save();
-}
-
-/**
  * Deletes a node.
  *
  * @param $nid
diff --git a/core/modules/node/tests/modules/node_test/node_test.module b/core/modules/node/tests/modules/node_test/node_test.module
index f3fd04b..d726df5 100644
--- a/core/modules/node/tests/modules/node_test/node_test.module
+++ b/core/modules/node/tests/modules/node_test/node_test.module
@@ -177,6 +177,6 @@ function node_test_node_insert(EntityInterface $node) {
   // Set the node title to the node ID and save.
   if ($node->title == 'new') {
     $node->title = 'Node '. $node->nid;
-    node_save($node);
+    $node->save();
   }
 }
diff --git a/core/modules/system/tests/modules/menu_test/menu_test.module b/core/modules/system/tests/modules/menu_test/menu_test.module
index 695c216..0df7465 100644
--- a/core/modules/system/tests/modules/menu_test/menu_test.module
+++ b/core/modules/system/tests/modules/menu_test/menu_test.module
@@ -14,7 +14,7 @@ function menu_test_menu() {
   // The name of the menu changes during the course of the test. Using a $_GET.
   $items['menu_name_test'] = array(
     'title' => 'Test menu_name router item',
-    'page callback' => 'node_save',
+    'page callback' => 'menu_test_callback',
     'menu_name' => menu_test_menu_name(),
   );
   // This item is of type MENU_CALLBACK with no parents to test title.
diff --git a/core/modules/taxonomy/taxonomy.module b/core/modules/taxonomy/taxonomy.module
index 2557008..4c3df47 100644
--- a/core/modules/taxonomy/taxonomy.module
+++ b/core/modules/taxonomy/taxonomy.module
@@ -1176,7 +1176,7 @@ function taxonomy_build_node_index($node) {
   // only data for current, published nodes.
   $status = NULL;
   if (config('taxonomy.settings')->get('maintain_index_table')) {
-    // If a node property is not set in the node object when node_save() is
+    // If a node property is not set in the node object when $node->save() is
     // called, the old value from $node->original is used.
     if (!empty($node->original)) {
       $status = (int)(!empty($node->status) || (!isset($node->status) && !empty($node->original->status)));
@@ -1195,7 +1195,7 @@ function taxonomy_build_node_index($node) {
       $field_name = $instance['field_name'];
       $field = field_info_field($field_name);
       if ($field['module'] == 'taxonomy' && $field['storage']['type'] == 'field_sql_storage') {
-        // If a field value is not set in the node object when node_save() is
+        // If a field value is not set in the node object when $node->save() is
         // called, the old value from $node->original is used.
         if (isset($node->{$field_name})) {
           $items = $node->{$field_name};
diff --git a/core/scripts/generate-d6-content.sh b/core/scripts/generate-d6-content.sh
index fc4c68f..7a7e112 100644
--- a/core/scripts/generate-d6-content.sh
+++ b/core/scripts/generate-d6-content.sh
@@ -131,7 +131,7 @@
   else {
     $node->taxonomy = $node_terms;
   }
-  node_save($node);
+  $node->save();
   path_set_alias("node/$node->nid", "content/$node->created");
   if ($node->revision) {
     $user = user_load($uid + 3);
@@ -140,7 +140,7 @@
     $node->body = str_repeat("node revision body ($node->type) - $i", 100);
     $node->log = "added $i revision";
     $node->taxonomy = $node_terms;
-    node_save($node);
+    $node->save();
   }
 }
 
@@ -171,7 +171,7 @@
   for ($c = 0; $c < $nbchoices; $c++) {
     $node->choice[] = array('chtext' => "Choice $c for poll $i");
   }
-  node_save($node);
+  $node->save();
   path_set_alias("node/$node->nid", "content/poll/$i");
   path_set_alias("node/$node->nid/results", "content/poll/$i/results");
 
@@ -202,5 +202,5 @@
 $node->promote = 0;
 $node->created = 1263769200;
 $node->log = "added $i node";
-node_save($node);
+$node->save();
 path_set_alias("node/$node->nid", "content/1263769200");
diff --git a/core/scripts/generate-d7-content.sh b/core/scripts/generate-d7-content.sh
index c171271..bb81e5a 100644
--- a/core/scripts/generate-d7-content.sh
+++ b/core/scripts/generate-d7-content.sh
@@ -204,7 +204,7 @@
     $node->{$field_name}[LANGUAGE_NONE][] = array('tid' => $tid);
   }
   $node->path = array('alias' => "content/$node->created");
-  node_save($node);
+  $node->save();
   if ($node->revision) {
     $user = user_load($uid + 3);
     ++$revision_id;
@@ -220,7 +220,7 @@
       $field_name = $term_vocabs[$tid];
       $node->{$field_name}[LANGUAGE_NONE][] = array('tid' => $tid);
     }
-    node_save($node);
+    $node->save();
   }
 }
 
@@ -247,7 +247,7 @@
   for ($c = 0; $c < $nbchoices; $c++) {
     $node->choice[] = array('chtext' => "Choice $c for poll $i", 'chvotes' => 0, 'weight' => 0);
   }
-  node_save($node);
+  $node->save();
   $path = array(
     'alias' => "content/poll/$i/results",
     'source' => "node/$node->nid/results",
@@ -289,7 +289,7 @@
 $node->created = 1263769200;
 $node->log = "added a broken node";
 $node->path = array('alias' => "content/1263769200");
-node_save($node);
+$node->save();
 db_update('node')
   ->fields(array(
     'type' => $node_type,
