diff --git a/core/modules/comment/src/Tests/Views/DefaultViewRecentCommentsTest.php b/core/modules/comment/src/Tests/Views/DefaultViewRecentCommentsTest.php
index cd7031e..acd1398 100644
--- a/core/modules/comment/src/Tests/Views/DefaultViewRecentCommentsTest.php
+++ b/core/modules/comment/src/Tests/Views/DefaultViewRecentCommentsTest.php
@@ -68,10 +68,10 @@ protected function setUp() {
 
     // Add a node of the new content type.
     $node_data = array(
-      'type' => $content_type->type,
+      'type' => $content_type->id(),
     );
 
-    $this->container->get('comment.manager')->addDefaultField('node', $content_type->type);
+    $this->container->get('comment.manager')->addDefaultField('node', $content_type->id());
     $this->node = $this->drupalCreateNode($node_data);
 
     // Force a flush of the in-memory storage.
diff --git a/core/modules/config/src/Tests/ConfigExportImportUITest.php b/core/modules/config/src/Tests/ConfigExportImportUITest.php
index 0c35736..072b23d 100644
--- a/core/modules/config/src/Tests/ConfigExportImportUITest.php
+++ b/core/modules/config/src/Tests/ConfigExportImportUITest.php
@@ -74,18 +74,18 @@ public function testExportImport() {
     $this->fieldStorage->save();
     entity_create('field_config', array(
       'field_storage' => $this->fieldStorage,
-      'bundle' => $this->content_type->type,
+      'bundle' => $this->content_type->id(),
     ))->save();
-    entity_get_form_display('node', $this->content_type->type, 'default')
+    entity_get_form_display('node', $this->content_type->id(), 'default')
       ->setComponent($this->fieldName, array(
         'type' => 'text_textfield',
       ))
       ->save();
-    entity_get_display('node', $this->content_type->type, 'full')
+    entity_get_display('node', $this->content_type->id(), 'full')
       ->setComponent($this->fieldName)
       ->save();
 
-    $this->drupalGet('node/add/' . $this->content_type->type);
+    $this->drupalGet('node/add/' . $this->content_type->id());
     $this->assertFieldByName("{$this->fieldName}[0][value]", '', 'Widget is displayed');
 
     // Export the configuration.
@@ -110,7 +110,7 @@ public function testExportImport() {
         $field_storage->delete();
       }
     }
-    $this->drupalGet('node/add/' . $this->content_type->type);
+    $this->drupalGet('node/add/' . $this->content_type->id());
     $this->assertNoFieldByName("{$this->fieldName}[0][value]", '', 'Widget is not displayed');
 
     // Import the configuration.
diff --git a/core/modules/entity_reference/src/Tests/EntityReferenceAdminTest.php b/core/modules/entity_reference/src/Tests/EntityReferenceAdminTest.php
index 4d62378..e8da567 100644
--- a/core/modules/entity_reference/src/Tests/EntityReferenceAdminTest.php
+++ b/core/modules/entity_reference/src/Tests/EntityReferenceAdminTest.php
@@ -37,7 +37,7 @@ protected function setUp() {
     // Create a content type, with underscores.
     $type_name = strtolower($this->randomMachineName(8)) . '_test';
     $type = $this->drupalCreateContentType(array('name' => $type_name, 'type' => $type_name));
-    $this->type = $type->type;
+    $this->type = $type->id();
   }
 
   /**
diff --git a/core/modules/entity_reference/src/Tests/EntityReferenceAutoCreateTest.php b/core/modules/entity_reference/src/Tests/EntityReferenceAutoCreateTest.php
index ac3ebf8..5d8ad97 100644
--- a/core/modules/entity_reference/src/Tests/EntityReferenceAutoCreateTest.php
+++ b/core/modules/entity_reference/src/Tests/EntityReferenceAutoCreateTest.php
@@ -25,10 +25,10 @@ protected function setUp() {
 
     // Create "referencing" and "referenced" node types.
     $referencing = $this->drupalCreateContentType();
-    $this->referencing_type = $referencing->type;
+    $this->referencing_type = $referencing->id();
 
     $referenced = $this->drupalCreateContentType();
-    $this->referenced_type = $referenced->type;
+    $this->referenced_type = $referenced->id();
 
     entity_create('field_storage_config', array(
       'field_name' => 'test_field',
@@ -46,13 +46,13 @@ protected function setUp() {
       'label' => 'Entity reference field',
       'field_name' => 'test_field',
       'entity_type' => 'node',
-      'bundle' => $referencing->type,
+      'bundle' => $referencing->id(),
       'settings' => array(
         'handler' => 'default',
         'handler_settings' => array(
           // Reference a single vocabulary.
           'target_bundles' => array(
-            $referenced->type,
+            $referenced->id(),
           ),
           // Enable auto-create.
           'auto_create' => TRUE,
@@ -60,10 +60,10 @@ protected function setUp() {
       ),
     ))->save();
 
-    entity_get_display('node', $referencing->type, 'default')
+    entity_get_display('node', $referencing->id(), 'default')
       ->setComponent('test_field')
       ->save();
-    entity_get_form_display('node', $referencing->type, 'default')
+    entity_get_form_display('node', $referencing->id(), 'default')
       ->setComponent('test_field', array(
         'type' => 'entity_reference_autocomplete',
       ))
diff --git a/core/modules/entity_reference/src/Tests/EntityReferenceFieldTranslatedReferenceViewTest.php b/core/modules/entity_reference/src/Tests/EntityReferenceFieldTranslatedReferenceViewTest.php
index 2c31c1e..6d55b83 100644
--- a/core/modules/entity_reference/src/Tests/EntityReferenceFieldTranslatedReferenceViewTest.php
+++ b/core/modules/entity_reference/src/Tests/EntityReferenceFieldTranslatedReferenceViewTest.php
@@ -194,7 +194,7 @@ protected function setUpEntityReferenceField() {
 
     entity_create('field_config', array(
       'field_name' => $this->referenceFieldName,
-      'bundle' => $this->referrerType->type,
+      'bundle' => $this->referrerType->id(),
       'entity_type' => $this->testEntityTypeName,
     ))
     ->save();
diff --git a/core/modules/entity_reference/src/Tests/Views/SelectionTest.php b/core/modules/entity_reference/src/Tests/Views/SelectionTest.php
index e71737c..15bce9c 100644
--- a/core/modules/entity_reference/src/Tests/Views/SelectionTest.php
+++ b/core/modules/entity_reference/src/Tests/Views/SelectionTest.php
@@ -23,7 +23,7 @@ class SelectionTest extends WebTestBase {
    */
   public function testSelectionHandler() {
     // Create nodes.
-    $type = $this->drupalCreateContentType()->type;
+    $type = $this->drupalCreateContentType()->id;
     $node1 = $this->drupalCreateNode(array('type' => $type));
     $node2 = $this->drupalCreateNode(array('type' => $type));
     $node3 = $this->drupalCreateNode();
diff --git a/core/modules/field/src/Tests/FieldAccessTest.php b/core/modules/field/src/Tests/FieldAccessTest.php
index b4f0b5a..4b067a8 100644
--- a/core/modules/field/src/Tests/FieldAccessTest.php
+++ b/core/modules/field/src/Tests/FieldAccessTest.php
@@ -43,7 +43,7 @@ protected function setUp() {
 
     // Create content type.
     $content_type_info = $this->drupalCreateContentType();
-    $content_type = $content_type_info->type;
+    $content_type = $content_type_info->id();
 
     $field_storage = array(
       'field_name' => 'test_view_field',
diff --git a/core/modules/field_ui/src/Tests/EntityDisplayTest.php b/core/modules/field_ui/src/Tests/EntityDisplayTest.php
index 82003d8..65241e3 100644
--- a/core/modules/field_ui/src/Tests/EntityDisplayTest.php
+++ b/core/modules/field_ui/src/Tests/EntityDisplayTest.php
@@ -270,7 +270,7 @@ public function testBaseFieldComponent() {
    */
   public function testRenameDeleteBundle() {
     // Create a node bundle, display and form display object.
-    $type = entity_create('node_type', array('type' => 'article'));
+    $type = entity_create('node_type', array('id' => 'article'));
     $type->save();
     node_add_body_field($type);
     entity_get_display('node', 'article', 'default')->save();
@@ -278,7 +278,7 @@ public function testRenameDeleteBundle() {
 
     // Rename the article bundle and assert the entity display is renamed.
     $type->old_type = 'article';
-    $type->type = 'article_rename';
+    $type->setId('article_rename');
     $type->save();
     $old_display = entity_load('entity_view_display', 'node.article.default');
     $this->assertFalse((bool) $old_display);
diff --git a/core/modules/field_ui/src/Tests/FieldUiTestBase.php b/core/modules/field_ui/src/Tests/FieldUiTestBase.php
index d98978d..9d89f67 100644
--- a/core/modules/field_ui/src/Tests/FieldUiTestBase.php
+++ b/core/modules/field_ui/src/Tests/FieldUiTestBase.php
@@ -33,7 +33,7 @@ protected function setUp() {
     // Create content type, with underscores.
     $type_name = strtolower($this->randomMachineName(8)) . '_test';
     $type = $this->drupalCreateContentType(array('name' => $type_name, 'type' => $type_name));
-    $this->type = $type->type;
+    $this->type = $type->id();
 
     // Create a default vocabulary.
     $vocabulary = entity_create('taxonomy_vocabulary', array(
diff --git a/core/modules/field_ui/src/Tests/ManageFieldsTest.php b/core/modules/field_ui/src/Tests/ManageFieldsTest.php
index 0a82925..2b26d11 100644
--- a/core/modules/field_ui/src/Tests/ManageFieldsTest.php
+++ b/core/modules/field_ui/src/Tests/ManageFieldsTest.php
@@ -375,7 +375,7 @@ function testDeleteField() {
     // Create an additional node type.
     $type_name2 = strtolower($this->randomMachineName(8)) . '_test';
     $type2 = $this->drupalCreateContentType(array('name' => $type_name2, 'type' => $type_name2));
-    $type_name2 = $type2->type;
+    $type_name2 = $type2->id();
 
     // Add a field to the second node type.
     $bundle_path2 = 'admin/structure/types/manage/' . $type_name2;
diff --git a/core/modules/filter/src/Tests/FilterHooksTest.php b/core/modules/filter/src/Tests/FilterHooksTest.php
index 4b91a31..fc05f04 100644
--- a/core/modules/filter/src/Tests/FilterHooksTest.php
+++ b/core/modules/filter/src/Tests/FilterHooksTest.php
@@ -64,7 +64,7 @@ function testFilterHooks() {
     $edit['title[0][value]'] = $title;
     $edit['body[0][value]'] = $this->randomMachineName(32);
     $edit['body[0][format]'] = $format_id;
-    $this->drupalPostForm("node/add/{$type->type}", $edit, t('Save and publish'));
+    $this->drupalPostForm('node/add/' . $type->id(), $edit, t('Save and publish'));
     $this->assertText(t('@type @title has been created.', array('@type' => $type_name, '@title' => $title)));
 
     // Disable the text format.
diff --git a/core/modules/link/src/Tests/LinkFieldUITest.php b/core/modules/link/src/Tests/LinkFieldUITest.php
index 6a36742..d18025a 100644
--- a/core/modules/link/src/Tests/LinkFieldUITest.php
+++ b/core/modules/link/src/Tests/LinkFieldUITest.php
@@ -37,7 +37,7 @@ protected function setUp() {
   function testFieldUI() {
     // Add a content type.
     $type = $this->drupalCreateContentType();
-    $type_path = 'admin/structure/types/manage/' . $type->type;
+    $type_path = 'admin/structure/types/manage/' . $type->id();
 
     // Add a link field to the newly-created type.
     $label = $this->randomMachineName();
diff --git a/core/modules/locale/src/Tests/LocaleContentTest.php b/core/modules/locale/src/Tests/LocaleContentTest.php
index 1bef062..c2badb8 100644
--- a/core/modules/locale/src/Tests/LocaleContentTest.php
+++ b/core/modules/locale/src/Tests/LocaleContentTest.php
@@ -64,7 +64,7 @@ public function testContentTypeLanguageConfiguration() {
     // User to add and remove language.
     $admin_user = $this->drupalCreateUser(array('administer languages', 'administer content types', 'access administration pages'));
     // User to create a node.
-    $web_user = $this->drupalCreateUser(array("create {$type1->type} content", "create {$type2->type} content", "edit any {$type2->type} content"));
+    $web_user = $this->drupalCreateUser(array("create {$type1->id()} content", "create {$type2->id()} content", "edit any {$type2->id()} content"));
 
     // Add custom language.
     $this->drupalLogin($admin_user);
@@ -81,24 +81,24 @@ public function testContentTypeLanguageConfiguration() {
     $this->drupalPostForm('admin/config/regional/language/add', $edit, t('Add custom language'));
 
     // Set the content type to use multilingual support.
-    $this->drupalGet("admin/structure/types/manage/{$type2->type}");
+    $this->drupalGet("admin/structure/types/manage/{$type2->id()}");
     $this->assertText(t('Language settings'), 'Multilingual support widget present on content type configuration form.');
     $edit = array(
       'language_configuration[language_show]' => TRUE,
     );
-    $this->drupalPostForm("admin/structure/types/manage/{$type2->type}", $edit, t('Save content type'));
-    $this->assertRaw(t('The content type %type has been updated.', array('%type' => $type2->name)));
+    $this->drupalPostForm("admin/structure/types/manage/{$type2->id()}", $edit, t('Save content type'));
+    $this->assertRaw(t('The content type %type has been updated.', array('%type' => $type2->label())));
     $this->drupalLogout();
     \Drupal::languageManager()->reset();
 
     // Verify language selection is not present on the node add form.
     $this->drupalLogin($web_user);
-    $this->drupalGet("node/add/{$type1->type}");
+    $this->drupalGet("node/add/{$type1->id()}");
     // Verify language select list is not present.
     $this->assertNoFieldByName('language', NULL, 'Language select not present on the node add form.');
 
     // Verify language selection appears on the node add form.
-    $this->drupalGet("node/add/{$type2->type}");
+    $this->drupalGet("node/add/{$type2->id()}");
     // Verify language select list is present.
     $this->assertFieldByName('langcode', NULL, 'Language select present on the node add form.');
     // Ensure language appears.
@@ -108,7 +108,7 @@ public function testContentTypeLanguageConfiguration() {
     $node_title = $this->randomMachineName();
     $node_body = $this->randomMachineName();
     $edit = array(
-      'type' => $type2->type,
+      'type' => $type2->id(),
       'title' => $node_title,
       'body' => array(array('value' => $node_body)),
       'langcode' => $langcode,
@@ -137,7 +137,7 @@ public function testContentTypeDirLang() {
     // User to add and remove language.
     $admin_user = $this->drupalCreateUser(array('administer languages', 'administer content types', 'access administration pages'));
     // User to create a node.
-    $web_user = $this->drupalCreateUser(array("create {$type->type} content", "edit own {$type->type} content"));
+    $web_user = $this->drupalCreateUser(array("create {$type->id()} content", "edit own {$type->id()} content"));
 
     // Login as admin.
     $this->drupalLogin($admin_user);
@@ -154,12 +154,12 @@ public function testContentTypeDirLang() {
     \Drupal::languageManager()->reset();
 
     // Set the content type to use multilingual support.
-    $this->drupalGet("admin/structure/types/manage/{$type->type}");
+    $this->drupalGet("admin/structure/types/manage/{$type->id()}");
     $edit = array(
       'language_configuration[language_show]' => TRUE,
     );
-    $this->drupalPostForm("admin/structure/types/manage/{$type->type}", $edit, t('Save content type'));
-    $this->assertRaw(t('The content type %type has been updated.', array('%type' => $type->name)));
+    $this->drupalPostForm("admin/structure/types/manage/{$type->id()}", $edit, t('Save content type'));
+    $this->assertRaw(t('The content type %type has been updated.', array('%type' => $type->label())));
     $this->drupalLogout();
 
     // Login as web user to add new node.
@@ -170,7 +170,7 @@ public function testContentTypeDirLang() {
     foreach (array('en', 'es', 'ar') as $langcode) {
       $nodes[$langcode] = $this->drupalCreateNode(array(
         'langcode' => $langcode,
-        'type' => $type->type,
+        'type' => $type->id(),
         'promote' => NODE_PROMOTED,
       ));
     }
diff --git a/core/modules/node/config/schema/node.schema.yml b/core/modules/node/config/schema/node.schema.yml
index 0680b57..214c0dd 100644
--- a/core/modules/node/config/schema/node.schema.yml
+++ b/core/modules/node/config/schema/node.schema.yml
@@ -15,10 +15,10 @@ node.type.*:
   type: config_entity
   label: 'Content type'
   mapping:
-    name:
+    label:
       type: label
       label: 'Name'
-    type:
+    id:
       type: string
       label: 'Machine-readable name'
     description:
diff --git a/core/modules/node/node.install b/core/modules/node/node.install
index 36c7d75..3291866 100644
--- a/core/modules/node/node.install
+++ b/core/modules/node/node.install
@@ -157,7 +157,7 @@ function node_uninstall() {
   // Delete node type variables.
   $types = \Drupal::configFactory()->listAll('node.type.');
   foreach ($types as $config_name) {
-    $type = \Drupal::config($config_name)->get('type');
+    $type = \Drupal::config($config_name)->get('id');
     if (\Drupal::moduleHandler()->moduleExists('language')) {
       $key = language_get_default_configuration_settings_key('node', $type);
       \Drupal::config('language.settings')->clear($key)->save();
diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index 1aa4a2a..91413c8 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -338,14 +338,14 @@ function node_add_body_field(NodeTypeInterface $type, $label = 'Body') {
     $field->save();
 
     // Assign widget settings for the 'default' form mode.
-    entity_get_form_display('node', $type->type, 'default')
+    entity_get_form_display('node', $type->id(), 'default')
       ->setComponent('body', array(
         'type' => 'text_textarea_with_summary',
       ))
       ->save();
 
     // Assign display settings for the 'default' and 'teaser' view modes.
-    entity_get_display('node', $type->type, 'default')
+    entity_get_display('node', $type->id(), 'default')
       ->setComponent('body', array(
         'label' => 'hidden',
         'type' => 'text_default',
@@ -356,7 +356,7 @@ function node_add_body_field(NodeTypeInterface $type, $label = 'Body') {
     // might not exist.
     $view_modes = \Drupal::entityManager()->getViewModes('node');
     if (isset($view_modes['teaser'])) {
-      entity_get_display('node', $type->type, 'teaser')
+      entity_get_display('node', $type->id(), 'teaser')
         ->setComponent('body', array(
           'label' => 'hidden',
           'type' => 'text_summary_or_trimmed',
@@ -382,22 +382,22 @@ function node_entity_extra_field_info() {
     // Visibility of the ordering of the language selector is the same as on the
     // node/add form.
     if ($module_language_enabled) {
-      $configuration = language_get_default_configuration('node', $bundle->type);
+      $configuration = language_get_default_configuration('node', $bundle->id());
       if ($configuration['language_show']) {
-        $extra['node'][$bundle->type]['form']['langcode'] = array(
+        $extra['node'][$bundle->id()]['form']['langcode'] = array(
           'label' => t('Language'),
           'description' => $description,
           'weight' => 0,
         );
       }
     }
-    $extra['node'][$bundle->type]['display']['langcode'] = array(
+    $extra['node'][$bundle->id()]['display']['langcode'] = array(
       'label' => t('Language'),
       'description' => $description,
       'weight' => 0,
       'visible' => FALSE,
     );
-    $extra['node'][$bundle->type]['display']['links'] = array(
+    $extra['node'][$bundle->id()]['display']['links'] = array(
       'label' => t('Links'),
       'description' => $description,
       'weight' => 100,
diff --git a/core/modules/node/node.pages.inc b/core/modules/node/node.pages.inc
index 112e9c2..f4abef5 100644
--- a/core/modules/node/node.pages.inc
+++ b/core/modules/node/node.pages.inc
@@ -30,9 +30,9 @@ function template_preprocess_node_add_list(&$variables) {
   $variables['types'] = array();
   if (!empty($variables['content'])) {
     foreach ($variables['content'] as $type) {
-      $variables['types'][$type->type] = array(
-        'type' => $type->type,
-        'add_link' => \Drupal::l($type->name, new Url('node.add', array('node_type' => $type->type))),
+      $variables['types'][$type->id()] = array(
+        'type' => $type->id(),
+        'add_link' => \Drupal::l($type->label(), new Url('node.add', array('node_type' => $type->id()))),
         'description' => Xss::filterAdmin($type->description),
       );
     }
diff --git a/core/modules/node/src/Controller/NodeController.php b/core/modules/node/src/Controller/NodeController.php
index 6ee2017..f4a30ee 100644
--- a/core/modules/node/src/Controller/NodeController.php
+++ b/core/modules/node/src/Controller/NodeController.php
@@ -79,15 +79,15 @@ public function addPage() {
 
     // Only use node types the user has access to.
     foreach ($this->entityManager()->getStorage('node_type')->loadMultiple() as $type) {
-      if ($this->entityManager()->getAccessControlHandler('node')->createAccess($type->type)) {
-        $content[$type->type] = $type;
+      if ($this->entityManager()->getAccessControlHandler('node')->createAccess($type->id())) {
+        $content[$type->id()] = $type;
       }
     }
 
     // Bypass the node/add listing if only one content type is available.
     if (count($content) == 1) {
       $type = array_shift($content);
-      return $this->redirect('node.add', array('node_type' => $type->type));
+      return $this->redirect('node.add', array('node_type' => $type->id()));
     }
 
     return array(
@@ -107,7 +107,7 @@ public function addPage() {
    */
   public function add(NodeTypeInterface $node_type) {
     $node = $this->entityManager()->getStorage('node')->create(array(
-      'type' => $node_type->type,
+      'type' => $node_type->id(),
     ));
 
     $form = $this->entityFormBuilder()->getForm($node);
@@ -243,7 +243,7 @@ public function revisionOverview(NodeInterface $node) {
    *   The page title.
    */
   public function addPageTitle(NodeTypeInterface $node_type) {
-    return $this->t('Create @name', array('@name' => $node_type->name));
+    return $this->t('Create @name', array('@name' => $node_type->label()));
   }
 
 }
diff --git a/core/modules/node/src/Entity/NodeType.php b/core/modules/node/src/Entity/NodeType.php
index e33c1ec..d38090d 100644
--- a/core/modules/node/src/Entity/NodeType.php
+++ b/core/modules/node/src/Entity/NodeType.php
@@ -31,8 +31,8 @@
  *   config_prefix = "type",
  *   bundle_of = "node",
  *   entity_keys = {
- *     "id" = "type",
- *     "label" = "name"
+ *     "id" = "id",
+ *     "label" = "label"
  *   },
  *   links = {
  *     "edit-form" = "entity.node_type.edit_form",
@@ -47,19 +47,15 @@ class NodeType extends ConfigEntityBundleBase implements NodeTypeInterface {
    * The machine name of this node type.
    *
    * @var string
-   *
-   * @todo Rename to $id.
    */
-  public $type;
+  protected $id;
 
   /**
    * The human-readable name of the node type.
    *
    * @var string
-   *
-   * @todo Rename to $label.
    */
-  public $name;
+  protected $label;
 
   /**
    * A brief description of this node type.
@@ -99,8 +95,15 @@ class NodeType extends ConfigEntityBundleBase implements NodeTypeInterface {
   /**
    * {@inheritdoc}
    */
-  public function id() {
-    return $this->type;
+  public function setId($id) {
+    $this->id = $id;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setLabel($label) {
+    $this->label = $label;
   }
 
   /**
diff --git a/core/modules/node/src/NodeTypeForm.php b/core/modules/node/src/NodeTypeForm.php
index 9335b1b..1807112 100644
--- a/core/modules/node/src/NodeTypeForm.php
+++ b/core/modules/node/src/NodeTypeForm.php
@@ -69,23 +69,23 @@ public function form(array $form, FormStateInterface $form_state) {
       $node = $this->entityManager->getStorage('node')->create(array('type' => $type->id()));
     }
 
-    $form['name'] = array(
+    $form['label'] = array(
       '#title' => t('Name'),
       '#type' => 'textfield',
-      '#default_value' => $type->name,
+      '#default_value' => $type->label(),
       '#description' => t('The human-readable name of this content type. This text will be displayed as part of the list on the <em>Add content</em> page. This name must be unique.'),
       '#required' => TRUE,
       '#size' => 30,
     );
 
-    $form['type'] = array(
+    $form['id'] = array(
       '#type' => 'machine_name',
       '#default_value' => $type->id(),
       '#maxlength' => EntityTypeInterface::BUNDLE_MAX_LENGTH,
       '#disabled' => $type->isLocked(),
       '#machine_name' => array(
         'exists' => 'node_type_load',
-        'source' => array('name'),
+        'source' => array('label'),
       ),
       '#description' => t('A unique machine-readable name for this content type. It must only contain lowercase letters, numbers, and underscores. This name will be used for constructing the URL of the %node-add page, in which underscores will be converted into hyphens.', array(
         '%node-add' => t('Add content'),
@@ -206,10 +206,10 @@ protected function actions(array $form, FormStateInterface $form_state) {
   public function validate(array $form, FormStateInterface $form_state) {
     parent::validate($form, $form_state);
 
-    $id = trim($form_state->getValue('type'));
+    $id = trim($form_state->getValue('id'));
     // '0' is invalid, since elsewhere we check it using empty().
     if ($id == '0') {
-      $form_state->setErrorByName('type', $this->t("Invalid machine-readable name. Enter a name other than %invalid.", array('%invalid' => $id)));
+      $form_state->setErrorByName('id', $this->t("Invalid machine-readable name. Enter a name other than %invalid.", array('%invalid' => $id)));
     }
   }
 
@@ -219,8 +219,8 @@ public function validate(array $form, FormStateInterface $form_state) {
   public function save(array $form, FormStateInterface $form_state) {
     $type = $this->entity;
     $type->setNewRevision($form_state->getValue(array('options', 'revision')));
-    $type->type = trim($type->id());
-    $type->name = trim($type->name);
+    $type->setId(trim($type->id()));
+    $type->setLabel(trim($type->label()));
 
     $status = $type->save();
 
diff --git a/core/modules/node/src/NodeTypeInterface.php b/core/modules/node/src/NodeTypeInterface.php
index d113f87..dc763eb 100644
--- a/core/modules/node/src/NodeTypeInterface.php
+++ b/core/modules/node/src/NodeTypeInterface.php
@@ -16,6 +16,20 @@
 interface NodeTypeInterface extends ConfigEntityInterface, ThirdPartySettingsInterface {
 
   /**
+   * Sets the node type machine readable name.
+   *
+   * @param string $id
+   */
+  public function setId($id);
+
+  /**
+   * Sets the node type human readable name.
+   *
+   * @param string $label
+   */
+  public function setLabel($label);
+
+  /**
    * Determines whether the node type is locked.
    *
    * @return string|false
diff --git a/core/modules/node/src/Plugin/Condition/NodeType.php b/core/modules/node/src/Plugin/Condition/NodeType.php
index 9a2b35b..77f9a3f 100644
--- a/core/modules/node/src/Plugin/Condition/NodeType.php
+++ b/core/modules/node/src/Plugin/Condition/NodeType.php
@@ -73,7 +73,7 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
     $options = array();
     $node_types = $this->entityStorage->loadMultiple();
     foreach ($node_types as $type) {
-      $options[$type->type] = $type->name;
+      $options[$type->id()] = $type->label();
     }
     $form['bundles'] = array(
       '#title' => $this->t('Node types'),
diff --git a/core/modules/node/src/Tests/Condition/NodeConditionTest.php b/core/modules/node/src/Tests/Condition/NodeConditionTest.php
index 548f180..439ed19 100644
--- a/core/modules/node/src/Tests/Condition/NodeConditionTest.php
+++ b/core/modules/node/src/Tests/Condition/NodeConditionTest.php
@@ -22,11 +22,11 @@ protected function setUp() {
     parent::setUp();
 
     // Create the node bundles required for testing.
-    $type = entity_create('node_type', array('type' => 'page', 'name' => 'page'));
+    $type = entity_create('node_type', array('id' => 'page', 'label' => 'page'));
     $type->save();
-    $type = entity_create('node_type', array('type' => 'article', 'name' => 'article'));
+    $type = entity_create('node_type', array('id' => 'article', 'label' => 'article'));
     $type->save();
-    $type = entity_create('node_type', array('type' => 'test', 'name' => 'test'));
+    $type = entity_create('node_type', array('id' => 'test', 'label' => 'test'));
     $type->save();
   }
 
diff --git a/core/modules/node/src/Tests/NodeAccessPagerTest.php b/core/modules/node/src/Tests/NodeAccessPagerTest.php
index af4140f..4c8dec7 100644
--- a/core/modules/node/src/Tests/NodeAccessPagerTest.php
+++ b/core/modules/node/src/Tests/NodeAccessPagerTest.php
@@ -28,7 +28,7 @@ protected function setUp() {
     parent::setUp();
 
     node_access_rebuild();
-    $this->drupalCreateContentType(array('type' => 'page', 'name' => t('Basic page')));
+    $this->drupalCreateContentType(array('id' => 'page', 'label' => t('Basic page')));
     $this->container->get('comment.manager')->addDefaultField('node', 'page');
     $this->web_user = $this->drupalCreateUser(array('access content', 'access comments', 'node test view'));
   }
diff --git a/core/modules/node/src/Tests/NodeBodyFieldStorageTest.php b/core/modules/node/src/Tests/NodeBodyFieldStorageTest.php
index bdfa24c..84766a6 100644
--- a/core/modules/node/src/Tests/NodeBodyFieldStorageTest.php
+++ b/core/modules/node/src/Tests/NodeBodyFieldStorageTest.php
@@ -45,7 +45,7 @@ protected function setUp() {
   public function testFieldOverrides() {
     $field_storage = FieldStorageConfig::loadByName('node', 'body');
     $this->assertTrue($field_storage, 'Node body field storage exists.');
-    $type = NodeType::create(['name' => 'Ponies', 'type' => 'ponies']);
+    $type = NodeType::create(['label' => 'Ponies', 'id' => 'ponies']);
     $type->save();
     node_add_body_field($type);
     $field_storage = FieldStorageConfig::loadByName('node', 'body');
diff --git a/core/modules/node/src/Tests/NodeCacheTagsTest.php b/core/modules/node/src/Tests/NodeCacheTagsTest.php
index cd46f79..e82e03d 100644
--- a/core/modules/node/src/Tests/NodeCacheTagsTest.php
+++ b/core/modules/node/src/Tests/NodeCacheTagsTest.php
@@ -29,8 +29,8 @@ class NodeCacheTagsTest extends EntityWithUriCacheTagsTestBase {
   protected function createEntity() {
     // Create a "Camelids" node type.
     entity_create('node_type', array(
-      'name' => 'Camelids',
-      'type' => 'camelids',
+      'label' => 'Camelids',
+      'id' => 'camelids',
     ))->save();
 
     // Create a "Llama" node.
diff --git a/core/modules/node/src/Tests/NodeFieldAccessTest.php b/core/modules/node/src/Tests/NodeFieldAccessTest.php
index bc1ef76..785dd79 100644
--- a/core/modules/node/src/Tests/NodeFieldAccessTest.php
+++ b/core/modules/node/src/Tests/NodeFieldAccessTest.php
@@ -52,14 +52,14 @@ function testAccessToAdministrativeFields() {
 
     // Create the page node type with revisions disabled.
     $page = NodeType::create([
-      'type' => 'page',
-        'new_revision' => FALSE,
+      'id' => 'page',
+      'new_revision' => FALSE,
     ]);
     $page->save();
 
     // Create the article node type with revisions disabled.
     $article = NodeType::create([
-      'type' => 'article',
+      'id' => 'article',
       'new_revision' => TRUE,
     ]);
     $article->save();
diff --git a/core/modules/node/src/Tests/NodeFieldMultilingualTest.php b/core/modules/node/src/Tests/NodeFieldMultilingualTest.php
index d00ffcd..f6e228d 100644
--- a/core/modules/node/src/Tests/NodeFieldMultilingualTest.php
+++ b/core/modules/node/src/Tests/NodeFieldMultilingualTest.php
@@ -31,7 +31,7 @@ protected function setUp() {
     parent::setUp();
 
     // Create Basic page node type.
-    $this->drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page'));
+    $this->drupalCreateContentType(array('id' => 'page', 'label' => 'Basic page'));
 
     // Setup users.
     $admin_user = $this->drupalCreateUser(array('administer languages', 'administer content types', 'access administration pages', 'create page content', 'edit own page content'));
diff --git a/core/modules/node/src/Tests/NodeFieldOverridesTest.php b/core/modules/node/src/Tests/NodeFieldOverridesTest.php
index 2472abe..e9bd505 100644
--- a/core/modules/node/src/Tests/NodeFieldOverridesTest.php
+++ b/core/modules/node/src/Tests/NodeFieldOverridesTest.php
@@ -48,7 +48,7 @@ protected function setUp() {
    */
   public function testFieldOverrides() {
     if (!NodeType::load('ponies')) {
-      NodeType::create(['name' => 'Ponies', 'type' => 'ponies'])->save();
+      NodeType::create(['label' => 'Ponies', 'id' => 'ponies'])->save();
     }
     $override = BaseFieldOverride::loadByName('node', 'ponies', 'uid');
     if ($override) {
diff --git a/core/modules/node/src/Tests/NodeTestBase.php b/core/modules/node/src/Tests/NodeTestBase.php
index 764d0a8..6d7d426 100644
--- a/core/modules/node/src/Tests/NodeTestBase.php
+++ b/core/modules/node/src/Tests/NodeTestBase.php
@@ -35,8 +35,8 @@ protected function setUp() {
     // Create Basic page and Article node types.
     if ($this->profile != 'standard') {
       $this->drupalCreateContentType(array(
-        'type' => 'page',
-        'name' => 'Basic page',
+        'id' => 'page',
+        'label' => 'Basic page',
         'display_submitted' => FALSE,
       ));
       $this->drupalCreateContentType(array('type' => 'article', 'name' => 'Article'));
diff --git a/core/modules/node/src/Tests/NodeTokenReplaceTest.php b/core/modules/node/src/Tests/NodeTokenReplaceTest.php
index 7c0dfe7..adff077 100644
--- a/core/modules/node/src/Tests/NodeTokenReplaceTest.php
+++ b/core/modules/node/src/Tests/NodeTokenReplaceTest.php
@@ -32,7 +32,7 @@ protected function setUp() {
     parent::setUp();
     $this->installConfig(array('filter'));
 
-    $node_type = entity_create('node_type', array('type' => 'article', 'name' => 'Article'));
+    $node_type = entity_create('node_type', array('id' => 'article', 'label' => 'Article'));
     $node_type->save();
     node_add_body_field($node_type);
   }
diff --git a/core/modules/node/src/Tests/NodeTranslationUITest.php b/core/modules/node/src/Tests/NodeTranslationUITest.php
index cb5ffe3..dc1fb6c 100644
--- a/core/modules/node/src/Tests/NodeTranslationUITest.php
+++ b/core/modules/node/src/Tests/NodeTranslationUITest.php
@@ -206,7 +206,7 @@ function testTranslationLinkTheme() {
   public function testDisabledBundle() {
     // Create a bundle that does not have translation enabled.
     $disabledBundle = $this->randomMachineName();
-    $this->drupalCreateContentType(array('type' => $disabledBundle, 'name' => $disabledBundle));
+    $this->drupalCreateContentType(array('id' => $disabledBundle, 'label' => $disabledBundle));
 
     // Create a node for each bundle.
     $node = $this->drupalCreateNode(array(
diff --git a/core/modules/node/src/Tests/NodeTypeRenameConfigImportTest.php b/core/modules/node/src/Tests/NodeTypeRenameConfigImportTest.php
index 5497ee8..04bfded 100644
--- a/core/modules/node/src/Tests/NodeTypeRenameConfigImportTest.php
+++ b/core/modules/node/src/Tests/NodeTypeRenameConfigImportTest.php
@@ -40,10 +40,10 @@ protected function setUp() {
    */
   public function testConfigurationRename() {
     $content_type = $this->drupalCreateContentType(array(
-      'type' => Unicode::strtolower($this->randomMachineName(16)),
-      'name' => $this->randomMachineName(),
+      'id' => Unicode::strtolower($this->randomMachineName(16)),
+      'label' => $this->randomMachineName(),
     ));
-    $staged_type = $content_type->type;
+    $staged_type = $content_type->id();
 
     // Check the default status value for a node of this type.
     $node = entity_create('node', array('type' => $staged_type));
@@ -61,9 +61,9 @@ public function testConfigurationRename() {
     $this->copyConfig($active, $staging);
 
     // Change the machine name of the content type.
-    $content_type->type = Unicode::strtolower($this->randomMachineName(8));
+    $content_type->setId(Unicode::strtolower($this->randomMachineName(8)));
     $content_type->save();
-    $active_type = $content_type->type;
+    $active_type = $content_type->id();
 
     // Ensure the base field override has been renamed and the value is correct.
     $node = entity_create('node', array('type' => $active_type));
@@ -127,7 +127,7 @@ public function testConfigurationRename() {
 
     $this->assertFalse(entity_load('node_type', $active_type), 'The content no longer exists with the old name.');
     $content_type = entity_load('node_type', $staged_type);
-    $this->assertIdentical($staged_type, $content_type->type);
+    $this->assertIdentical($staged_type, $content_type->id());
 
     // Ensure the base field override has been renamed and the value is correct.
     $node = entity_create('node', array('type' => $staged_type));
diff --git a/core/modules/node/src/Tests/NodeTypeTest.php b/core/modules/node/src/Tests/NodeTypeTest.php
index d0d5d54..4167107 100644
--- a/core/modules/node/src/Tests/NodeTypeTest.php
+++ b/core/modules/node/src/Tests/NodeTypeTest.php
@@ -49,23 +49,23 @@ function testNodeTypeCreation() {
     // Create a content type programmaticaly.
     $type = $this->drupalCreateContentType();
 
-    $type_exists = (bool) entity_load('node_type', $type->type);
+    $type_exists = (bool) entity_load('node_type', $type->id());
     $this->assertTrue($type_exists, 'The new content type has been created in the database.');
 
     // Login a test user.
-    $web_user = $this->drupalCreateUser(array('create ' . $type->name . ' content'));
+    $web_user = $this->drupalCreateUser(array('create ' . $type->label() . ' content'));
     $this->drupalLogin($web_user);
 
-    $this->drupalGet('node/add/' . $type->type);
+    $this->drupalGet('node/add/' . $type->id());
     $this->assertResponse(200, 'The new content type can be accessed at node/add.');
 
     // Create a content type via the user interface.
     $web_user = $this->drupalCreateUser(array('bypass node access', 'administer content types'));
     $this->drupalLogin($web_user);
     $edit = array(
-      'name' => 'foo',
+      'label' => 'foo',
       'title_label' => 'title for foo',
-      'type' => 'foo',
+      'id' => 'foo',
     );
     $this->drupalPostForm('admin/structure/types/add', $edit, t('Save and manage fields'));
     $type_exists = (bool) entity_load('node_type', 'foo');
@@ -99,8 +99,8 @@ function testNodeTypeEditing() {
 
     // Change the name, machine name and description.
     $edit = array(
-      'name' => 'Bar',
-      'type' => 'bar',
+      'label' => 'Bar',
+      'id' => 'bar',
       'description' => 'Lorem ipsum.',
     );
     $this->drupalPostForm('admin/structure/types/manage/page', $edit, t('Save content type'));
@@ -137,11 +137,11 @@ function testNodeTypeDeletion() {
     $this->drupalLogin($web_user);
 
     // Add a new node of this type.
-    $node = $this->drupalCreateNode(array('type' => $type->type));
+    $node = $this->drupalCreateNode(array('type' => $type->id()));
     // Attempt to delete the content type, which should not be allowed.
-    $this->drupalGet('admin/structure/types/manage/' . $type->name . '/delete');
+    $this->drupalGet('admin/structure/types/manage/' . $type->id() . '/delete');
     $this->assertRaw(
-      t('%type is used by 1 piece of content on your site. You can not remove this content type until you have removed all of the %type content.', array('%type' => $type->name)),
+      t('%type is used by 1 piece of content on your site. You can not remove this content type until you have removed all of the %type content.', array('%type' => $type->label())),
       'The content type will not be deleted until all nodes of that type are removed.'
     );
     $this->assertNoText(t('This action cannot be undone.'), 'The node type deletion confirmation form is not available.');
@@ -149,9 +149,9 @@ function testNodeTypeDeletion() {
     // Delete the node.
     $node->delete();
     // Attempt to delete the content type, which should now be allowed.
-    $this->drupalGet('admin/structure/types/manage/' . $type->name . '/delete');
+    $this->drupalGet('admin/structure/types/manage/' . $type->id() . '/delete');
     $this->assertRaw(
-      t('Are you sure you want to delete the content type %type?', array('%type' => $type->name)),
+      t('Are you sure you want to delete the content type %type?', array('%type' => $type->label())),
       'The content type is available for deletion.'
     );
     $this->assertText(t('This action cannot be undone.'), 'The node type deletion confirmation form is available.');
diff --git a/core/modules/node/src/Tests/NodeValidationTest.php b/core/modules/node/src/Tests/NodeValidationTest.php
index ef11740..090b143 100644
--- a/core/modules/node/src/Tests/NodeValidationTest.php
+++ b/core/modules/node/src/Tests/NodeValidationTest.php
@@ -30,7 +30,7 @@ protected function setUp() {
     parent::setUp();
 
     // Create a node type for testing.
-    $type = entity_create('node_type', array('type' => 'page', 'name' => 'page'));
+    $type = entity_create('node_type', array('id' => 'page', 'label' => 'page'));
     $type->save();
   }
 
diff --git a/core/modules/node/src/Tests/Views/NodeContextualLinksTest.php b/core/modules/node/src/Tests/Views/NodeContextualLinksTest.php
index a4847fc..0f2d6dc 100644
--- a/core/modules/node/src/Tests/Views/NodeContextualLinksTest.php
+++ b/core/modules/node/src/Tests/Views/NodeContextualLinksTest.php
@@ -35,7 +35,7 @@ class NodeContextualLinksTest extends NodeTestBase {
    * Tests contextual links.
    */
   public function testNodeContextualLinks() {
-    $this->drupalCreateContentType(array('type' => 'page'));
+    $this->drupalCreateContentType(array('id' => 'page'));
     $this->drupalCreateNode(array('promote' => 1));
     $this->drupalGet('node');
 
diff --git a/core/modules/node/src/Tests/Views/NodeFieldFilterTest.php b/core/modules/node/src/Tests/Views/NodeFieldFilterTest.php
index 599b126..1a75514 100644
--- a/core/modules/node/src/Tests/Views/NodeFieldFilterTest.php
+++ b/core/modules/node/src/Tests/Views/NodeFieldFilterTest.php
@@ -41,7 +41,7 @@ function setUp() {
 
     // Create Page content type.
     if ($this->profile != 'standard') {
-      $this->drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page'));
+      $this->drupalCreateContentType(array('id' => 'page', 'label' => 'Basic page'));
     }
 
     // Add two new languages.
diff --git a/core/modules/node/src/Tests/Views/NodeIntegrationTest.php b/core/modules/node/src/Tests/Views/NodeIntegrationTest.php
index 2be15a0..b4188b7 100644
--- a/core/modules/node/src/Tests/Views/NodeIntegrationTest.php
+++ b/core/modules/node/src/Tests/Views/NodeIntegrationTest.php
@@ -34,8 +34,8 @@ public function testNodeViewTypeArgument() {
 
       for ($j = 0; $j < 5; $j++) {
         // Ensure the right order of the nodes.
-        $node = $this->drupalCreateNode(array('type' => $type->type, 'created' => REQUEST_TIME - ($i * 5 + $j)));
-        $nodes[$type->type][$node->id()] = $node;
+        $node = $this->drupalCreateNode(array('type' => $type->id(), 'created' => REQUEST_TIME - ($i * 5 + $j)));
+        $nodes[$type->id()][$node->id()] = $node;
         $all_nids[] = $node->id();
       }
     }
@@ -48,8 +48,8 @@ public function testNodeViewTypeArgument() {
     $this->assertNids($all_nids);
 
     foreach ($types as $type) {
-      $this->drupalGet("test-node-view/{$type->type}");
-      $this->assertNids(array_keys($nodes[$type->type]));
+      $this->drupalGet("test-node-view/{$type->id()}");
+      $this->assertNids(array_keys($nodes[$type->id()]));
     }
   }
 
diff --git a/core/modules/node/src/Tests/Views/NodeLanguageTest.php b/core/modules/node/src/Tests/Views/NodeLanguageTest.php
index b4d9891..2170b4b 100644
--- a/core/modules/node/src/Tests/Views/NodeLanguageTest.php
+++ b/core/modules/node/src/Tests/Views/NodeLanguageTest.php
@@ -45,7 +45,7 @@ protected function setUp() {
 
     // Create Page content type.
     if ($this->profile != 'standard') {
-      $this->drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page'));
+      $this->drupalCreateContentType(array('id' => 'page', 'label' => 'Basic page'));
     }
 
     // Add two new languages.
diff --git a/core/modules/node/src/Tests/Views/NodeRevisionWizardTest.php b/core/modules/node/src/Tests/Views/NodeRevisionWizardTest.php
index 800b52f..8d0c606 100644
--- a/core/modules/node/src/Tests/Views/NodeRevisionWizardTest.php
+++ b/core/modules/node/src/Tests/Views/NodeRevisionWizardTest.php
@@ -22,7 +22,7 @@ class NodeRevisionWizardTest extends WizardTestBase {
    * Tests creating a node revision view.
    */
   public function testViewAdd() {
-    $this->drupalCreateContentType(array('type' => 'article'));
+    $this->drupalCreateContentType(array('id' => 'article'));
     // Create two nodes with two revision.
     $node_storage = \Drupal::entityManager()->getStorage('node');
     /** @var \Drupal\node\NodeInterface $node */
diff --git a/core/modules/node/src/Tests/Views/RowPluginTest.php b/core/modules/node/src/Tests/Views/RowPluginTest.php
index c9dd7f1..45dee56 100644
--- a/core/modules/node/src/Tests/Views/RowPluginTest.php
+++ b/core/modules/node/src/Tests/Views/RowPluginTest.php
@@ -48,7 +48,7 @@ class RowPluginTest extends NodeTestBase {
   protected function setUp() {
     parent::setUp();
 
-    $this->drupalCreateContentType(array('type' => 'article'));
+    $this->drupalCreateContentType(array('id' => 'article'));
     // Create comment field on article.
     $this->container->get('comment.manager')->addDefaultField('node', 'article');
 
diff --git a/core/modules/options/src/Tests/OptionsFieldUITest.php b/core/modules/options/src/Tests/OptionsFieldUITest.php
index 40343bf..4152923 100644
--- a/core/modules/options/src/Tests/OptionsFieldUITest.php
+++ b/core/modules/options/src/Tests/OptionsFieldUITest.php
@@ -42,7 +42,7 @@ protected function setUp() {
     $type_name = 'test_' . strtolower($this->randomMachineName());
     $this->type_name = $type_name;
     $type = $this->drupalCreateContentType(array('name' => $type_name, 'type' => $type_name));
-    $this->type = $type->type;
+    $this->type = $type->id();
   }
 
   /**
diff --git a/core/modules/simpletest/src/WebTestBase.php b/core/modules/simpletest/src/WebTestBase.php
index 93a5047..7bd632b 100644
--- a/core/modules/simpletest/src/WebTestBase.php
+++ b/core/modules/simpletest/src/WebTestBase.php
@@ -254,23 +254,23 @@ protected function drupalCreateNode(array $settings = array()) {
    *
    * @param array $values
    *   An array of settings to change from the defaults.
-   *   Example: 'type' => 'foo'.
+   *   Example: 'id' => 'foo'.
    *
    * @return \Drupal\node\Entity\NodeType
    *   Created content type.
    */
   protected function drupalCreateContentType(array $values = array()) {
     // Find a non-existent random type name.
-    if (!isset($values['type'])) {
+    if (!isset($values['id'])) {
       do {
         $id = strtolower($this->randomMachineName(8));
       } while (node_type_load($id));
     }
     else {
-      $id = $values['type'];
+      $id = $values['id'];
     }
     $values += array(
-      'type' => $id,
+      'id' => $id,
       'name' => $id,
     );
     $type = entity_create('node_type', $values);
@@ -278,7 +278,7 @@ protected function drupalCreateContentType(array $values = array()) {
     node_add_body_field($type);
     \Drupal::service('router.builder')->rebuild();
 
-    $this->assertEqual($status, SAVED_NEW, String::format('Created content type %type.', array('%type' => $type->id())));
+    $this->assertEqual($status, SAVED_NEW, String::format('Created content type %id.', array('%id' => $type->id())));
 
     return $type;
   }
diff --git a/core/modules/views/src/Tests/GlossaryTest.php b/core/modules/views/src/Tests/GlossaryTest.php
index 61fb6a3..b86a466 100644
--- a/core/modules/views/src/Tests/GlossaryTest.php
+++ b/core/modules/views/src/Tests/GlossaryTest.php
@@ -39,9 +39,7 @@ public function testGlossaryView() {
       'l' => 6,
     );
     foreach ($nodes_per_char as $char => $count) {
-      $setting = array(
-        'type' => $type->type
-      );
+      $setting = array('type' => $type->id());
       for ($i = 0; $i < $count; $i++) {
         $node = $setting;
         $node['title'] = $char . $this->randomString(3);
diff --git a/core/modules/views/src/Tests/SearchIntegrationTest.php b/core/modules/views/src/Tests/SearchIntegrationTest.php
index 6a8ccba..7307ce1 100644
--- a/core/modules/views/src/Tests/SearchIntegrationTest.php
+++ b/core/modules/views/src/Tests/SearchIntegrationTest.php
@@ -39,7 +39,7 @@ public function testSearchIntegration() {
     // with the word "sandwich". Make the second node link to the first.
     $node['title'] = 'pizza';
     $node['body'] = array(array('value' => 'pizza'));
-    $node['type'] = $type->type;
+    $node['type'] = $type->id();
     $this->drupalCreateNode($node);
 
     $this->drupalGet('node/1');
diff --git a/core/modules/views/src/Tests/SearchMultilingualTest.php b/core/modules/views/src/Tests/SearchMultilingualTest.php
index 97213c3..9d3f1dd 100644
--- a/core/modules/views/src/Tests/SearchMultilingualTest.php
+++ b/core/modules/views/src/Tests/SearchMultilingualTest.php
@@ -47,19 +47,19 @@ public function testMultilingualSearchFilter() {
     $edit = array(
       'language_configuration[language_show]' => TRUE,
     );
-    $this->drupalPostForm('admin/structure/types/manage/' . $type->type, $edit, t('Save content type'));
+    $this->drupalPostForm('admin/structure/types/manage/' . $type->id(), $edit, t('Save content type'));
     $edit = array(
       'entity_types[node]' => TRUE,
-      'settings[node][' . $type->type . '][translatable]' => TRUE,
-      'settings[node][' . $type->type . '][fields][title]' => TRUE,
-      'settings[node][' . $type->type . '][fields][body]' => TRUE,
+      'settings[node][' . $type->id() . '][translatable]' => TRUE,
+      'settings[node][' . $type->id() . '][fields][title]' => TRUE,
+      'settings[node][' . $type->id() . '][fields][body]' => TRUE,
     );
     $this->drupalPostForm('admin/config/regional/content-language', $edit, t('Save configuration'));
 
     // Add a node in English, with title "sandwich".
     $values = array(
       'title' => 'sandwich',
-      'type' => $type->type,
+      'type' => $type->id(),
     );
     $node = $this->drupalCreateNode($values);
 
diff --git a/core/modules/views/src/Tests/Wizard/TaggedWithTest.php b/core/modules/views/src/Tests/Wizard/TaggedWithTest.php
index 02e46bc..5a97355 100644
--- a/core/modules/views/src/Tests/Wizard/TaggedWithTest.php
+++ b/core/modules/views/src/Tests/Wizard/TaggedWithTest.php
@@ -70,23 +70,23 @@ protected function setUp() {
     // configure it to display an autocomplete widget.
     $this->tag_field = array(
       'field_storage' => $this->tag_field_storage,
-      'bundle' => $this->node_type_with_tags->type,
+      'bundle' => $this->node_type_with_tags->id(),
     );
     entity_create('field_config', $this->tag_field)->save();
 
-    entity_get_form_display('node', $this->node_type_with_tags->type, 'default')
+    entity_get_form_display('node', $this->node_type_with_tags->id(), 'default')
       ->setComponent('field_views_testing_tags', array(
         'type' => 'taxonomy_autocomplete',
       ))
       ->save();
 
-    entity_get_display('node', $this->node_type_with_tags->type, 'default')
+    entity_get_display('node', $this->node_type_with_tags->id(), 'default')
       ->setComponent('field_views_testing_tags', array(
         'type' => 'taxonomy_term_reference_link',
         'weight' => 10,
       ))
       ->save();
-    entity_get_display('node', $this->node_type_with_tags->type, 'teaser')
+    entity_get_display('node', $this->node_type_with_tags->id(), 'teaser')
       ->setComponent('field_views_testing_tags', array(
         'type' => 'taxonomy_term_reference_link',
         'weight' => 10,
diff --git a/core/profiles/standard/config/install/node.type.article.yml b/core/profiles/standard/config/install/node.type.article.yml
index 7cb127d..1360ee0 100644
--- a/core/profiles/standard/config/install/node.type.article.yml
+++ b/core/profiles/standard/config/install/node.type.article.yml
@@ -1,5 +1,5 @@
-type: article
-name: Article
+id: article
+label: Article
 description: 'Use <em>articles</em> for time-sensitive content like news, press releases or blog posts.'
 help: ''
 new_revision: false
diff --git a/core/profiles/standard/config/install/node.type.page.yml b/core/profiles/standard/config/install/node.type.page.yml
index f9b4353..ef32ec7 100644
--- a/core/profiles/standard/config/install/node.type.page.yml
+++ b/core/profiles/standard/config/install/node.type.page.yml
@@ -1,5 +1,5 @@
-type: page
-name: 'Basic page'
+id: page
+label: 'Basic page'
 description: 'Use <em>basic pages</em> for your static content, such as an ''About us'' page.'
 help: ''
 new_revision: false
diff --git a/core/themes/seven/seven.theme b/core/themes/seven/seven.theme
index b5f85c3..6370b16 100644
--- a/core/themes/seven/seven.theme
+++ b/core/themes/seven/seven.theme
@@ -73,9 +73,9 @@ function seven_preprocess_menu_local_task(&$variables) {
 function seven_preprocess_node_add_list(&$variables) {
   if (!empty($variables['content'])) {
     foreach ($variables['content'] as $type) {
-      $variables['types'][$type->type]['label'] = String::checkPlain($type->name);
-      $variables['types'][$type->type]['description'] = Xss::filterAdmin($type->description);
-      $variables['types'][$type->type]['url'] = \Drupal::url('node.add', array('node_type' => $type->type));
+      $variables['types'][$type->id()]['label'] = String::checkPlain($type->label());
+      $variables['types'][$type->id()]['description'] = Xss::filterAdmin($type->description);
+      $variables['types'][$type->id()]['url'] = \Drupal::url('node.add', array('node_type' => $type->id()));
     }
   }
 }
