diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php b/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php
index 46db8c7..f3f22fc 100644
--- a/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php
+++ b/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php
@@ -374,7 +374,7 @@ public function save(EntityInterface $entity) {
       $this->invokeHook('insert', $entity);
     }
 
-    unset($entity->original);
+    $entity->original = NULL;
 
     return $return;
   }
diff --git a/core/lib/Drupal/Core/Entity/ContentEntityBase.php b/core/lib/Drupal/Core/Entity/ContentEntityBase.php
index f0855ef..7341e90 100644
--- a/core/lib/Drupal/Core/Entity/ContentEntityBase.php
+++ b/core/lib/Drupal/Core/Entity/ContentEntityBase.php
@@ -129,6 +129,25 @@
   protected $isDefaultRevision = TRUE;
 
   /**
+   * @see EntityViewBuilder::buildContent()
+   */
+  public $content;
+
+  /**
+   * @see FieldableDatabaseStorageController::save()
+   */
+  public $original;
+
+  /**
+   * @see \Drupal\views\Entity\Render\RendererBase::preRender()
+   * @see views_preprocess_node()
+   * @see views_theme_suggestions_node_alter()
+   * @see views_preprocess_comment()
+   * @see views_theme_suggestions_comment_alter()
+   */
+  public $view;
+
+  /**
    * Overrides Entity::__construct().
    */
   public function __construct(array $values, $entity_type, $bundle = FALSE, $translations = array()) {
@@ -812,11 +831,8 @@ public function updateOriginalValues() {
 
   /**
    * Implements the magic method for getting object properties.
-   *
-   * @todo: A lot of code still uses non-fields (e.g. $entity->content in render
-   *   controllers) by reference. Clean that up.
    */
-  public function &__get($name) {
+  public function __get($name) {
     // If this is an entity field, handle it accordingly. We first check whether
     // a field object has been already created. If not, we create one.
     if (isset($this->fields[$name][$this->activeLangcode])) {
@@ -830,12 +846,9 @@ public function &__get($name) {
       $return = $this->getTranslatedField($name, $this->activeLangcode);
       return $return;
     }
-    // Else directly read/write plain values. That way, non-field entity
-    // properties can always be accessed directly.
-    if (!isset($this->values[$name])) {
-      $this->values[$name] = NULL;
-    }
-    return $this->values[$name];
+    // Non-field properties are not supported.
+    debug($this->getEntityTypeId() . '->' . $name);
+    throw new \Exception(format_backtrace(debug_backtrace()));
   }
 
   /**
@@ -861,10 +874,10 @@ public function __set($name, $value) {
     elseif ($name == 'translations') {
       $this->translations = $value;
     }
-    // Else directly read/write plain values. That way, fields not yet converted
-    // to the entity field API can always be directly accessed.
+    // Non-field properties are not supported.
     else {
-      $this->values[$name] = $value;
+      debug($this->getEntityTypeId() . '->' . $name);
+      throw new \Exception(format_backtrace(debug_backtrace()));
     }
   }
 
@@ -875,9 +888,6 @@ public function __isset($name) {
     if ($this->hasField($name)) {
       return $this->get($name)->getValue() !== NULL;
     }
-    else {
-      return isset($this->values[$name]);
-    }
   }
 
   /**
@@ -888,7 +898,8 @@ public function __unset($name) {
       $this->get($name)->setValue(NULL);
     }
     else {
-      unset($this->values[$name]);
+      debug($this->getEntityTypeId() . '->' . $name);
+      throw new \Exception(format_backtrace(debug_backtrace()));
     }
   }
 
diff --git a/core/lib/Drupal/Core/Entity/DatabaseStorageController.php b/core/lib/Drupal/Core/Entity/DatabaseStorageController.php
index 3cdf898..d4996c8 100644
--- a/core/lib/Drupal/Core/Entity/DatabaseStorageController.php
+++ b/core/lib/Drupal/Core/Entity/DatabaseStorageController.php
@@ -323,7 +323,7 @@ public function save(EntityInterface $entity) {
 
       // Ignore slave server temporarily.
       db_ignore_slave();
-      unset($entity->original);
+      $entity->original = NULL;
 
       return $return;
     }
diff --git a/core/lib/Drupal/Core/Entity/EntityViewBuilder.php b/core/lib/Drupal/Core/Entity/EntityViewBuilder.php
index 3ac6441..204be56 100644
--- a/core/lib/Drupal/Core/Entity/EntityViewBuilder.php
+++ b/core/lib/Drupal/Core/Entity/EntityViewBuilder.php
@@ -230,7 +230,7 @@ public function viewMultiple(array $entities = array(), $view_mode = 'full', $la
 
       $build[$key] = $entity->content;
       // We don't need duplicate rendering info in $entity->content.
-      unset($entity->content);
+      $entity->content = NULL;
 
       $build[$key] += $this->getBuildDefaults($entity, $entity_view_mode, $langcode);
       $this->alterBuild($build[$key], $entity, $display, $entity_view_mode, $langcode);
diff --git a/core/lib/Drupal/Core/Entity/FieldableDatabaseStorageController.php b/core/lib/Drupal/Core/Entity/FieldableDatabaseStorageController.php
index 13f0388..50b2cfe 100644
--- a/core/lib/Drupal/Core/Entity/FieldableDatabaseStorageController.php
+++ b/core/lib/Drupal/Core/Entity/FieldableDatabaseStorageController.php
@@ -605,7 +605,7 @@ public function save(EntityInterface $entity) {
 
       // Ignore slave server temporarily.
       db_ignore_slave();
-      unset($entity->original);
+      $entity->original = NULL;
 
       return $return;
     }
diff --git a/core/lib/Drupal/Core/Entity/FieldableEntityStorageControllerBase.php b/core/lib/Drupal/Core/Entity/FieldableEntityStorageControllerBase.php
index ec468b7..5dc186f 100644
--- a/core/lib/Drupal/Core/Entity/FieldableEntityStorageControllerBase.php
+++ b/core/lib/Drupal/Core/Entity/FieldableEntityStorageControllerBase.php
@@ -79,10 +79,11 @@ public function create(array $values = array()) {
       unset($values[$name]);
     }
 
-    // Set any passed values for non-defined fields also.
-    foreach ($values as $name => $value) {
-      $entity->$name = $value;
+    // There should be no non-defined fields.
+    if (!empty($values)){
+      throw new \Exception($this->getEntityTypeId() . ': ' . var_export($values, TRUE));
     }
+
     $entity->postCreate($this);
 
     // Modules might need to add or change the data initially held by the new
diff --git a/core/lib/Drupal/Core/Field/WidgetBase.php b/core/lib/Drupal/Core/Field/WidgetBase.php
index 2b9b168..9ee201a 100644
--- a/core/lib/Drupal/Core/Field/WidgetBase.php
+++ b/core/lib/Drupal/Core/Field/WidgetBase.php
@@ -259,7 +259,6 @@ protected function formSingleElement(FieldItemListInterface $items, $delta, arra
         'widget' => $this,
         'items' => $items,
         'delta' => $delta,
-        'default' => !empty($entity->field_ui_default_value),
       );
       \Drupal::moduleHandler()->alter(array('field_widget_form', 'field_widget_' . $this->getPluginId() . '_form'), $element, $form_state, $context);
     }
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Entity/Feed.php b/core/modules/aggregator/lib/Drupal/aggregator/Entity/Feed.php
index 3ade60e..963bf78 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Entity/Feed.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Entity/Feed.php
@@ -45,6 +45,11 @@
 class Feed extends ContentEntityBase implements FeedInterface {
 
   /**
+   * @see aggregator_refresh()
+   */
+  public $items;
+
+  /**
    * Implements Drupal\Core\Entity\EntityInterface::id().
    */
   public function id() {
diff --git a/core/modules/comment/lib/Drupal/comment/Entity/Comment.php b/core/modules/comment/lib/Drupal/comment/Entity/Comment.php
index a86e11c..8a3f3bd 100644
--- a/core/modules/comment/lib/Drupal/comment/Entity/Comment.php
+++ b/core/modules/comment/lib/Drupal/comment/Entity/Comment.php
@@ -60,6 +60,42 @@ class Comment extends ContentEntityBase implements CommentInterface {
   protected $threadLock = '';
 
   /**
+   * @see CommentFormController
+   */
+  public $is_anonymous;
+
+  /**
+   * @see rdf_comment_load()
+   */
+  public $rdf_data;
+
+  /**
+   * @see \Drupal\comment\Plugin\views\row\Rss
+   */
+  public $rss_namespaces;
+
+  /**
+   * @see comment_entity_view()
+   */
+  public $rss_elements;
+
+
+  /**
+   * @see comment_prepare_thread()
+   */
+  public $depth;
+
+  /**
+   * @see comment_prepare_thread()
+   */
+  public $divs;
+
+  /**
+   * @see comment_prepare_thread()
+   */
+  public $divs_final;
+
+  /**
    * {@inheritdoc}
    */
   public function id() {
diff --git a/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/Field/FieldFormatter/EntityReferenceEntityFormatter.php b/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/Field/FieldFormatter/EntityReferenceEntityFormatter.php
index 40e3c39..4a9c4da 100644
--- a/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/Field/FieldFormatter/EntityReferenceEntityFormatter.php
+++ b/core/modules/entity_reference/lib/Drupal/entity_reference/Plugin/Field/FieldFormatter/EntityReferenceEntityFormatter.php
@@ -97,7 +97,7 @@ public function viewElements(FieldItemListInterface $items) {
 
       if (!empty($item->target_id)) {
         $entity = clone $item->entity;
-        unset($entity->content);
+        $entity->content = NULL;
         $elements[$delta] = entity_view($entity, $view_mode, $item->getLangcode());
 
         if (empty($links) && isset($result[$delta][$target_type][$item->target_id]['links'])) {
diff --git a/core/modules/file/lib/Drupal/file/Entity/File.php b/core/modules/file/lib/Drupal/file/Entity/File.php
index d74dee8..f412688 100644
--- a/core/modules/file/lib/Drupal/file/Entity/File.php
+++ b/core/modules/file/lib/Drupal/file/Entity/File.php
@@ -35,6 +35,16 @@
 class File extends ContentEntityBase implements FileInterface {
 
   /**
+   * @see file_test_file_load()
+   */
+  public $file_test;
+
+  /**
+   * @see RSSEnclosureFormatter
+   */
+  public $rss_elements;
+
+  /**
    * The plain data values of the contained properties.
    *
    * Define default values.
diff --git a/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkStorageController.php b/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkStorageController.php
index d244a71..5177f6d 100644
--- a/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkStorageController.php
+++ b/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkStorageController.php
@@ -158,7 +158,7 @@ public function save(EntityInterface $entity) {
 
       // Ignore slave server temporarily.
       db_ignore_slave();
-      unset($entity->original);
+      $entity->original = NULL;
 
       return $return;
     }
diff --git a/core/modules/node/lib/Drupal/node/Controller/NodeController.php b/core/modules/node/lib/Drupal/node/Controller/NodeController.php
index 273f441..e864861 100644
--- a/core/modules/node/lib/Drupal/node/Controller/NodeController.php
+++ b/core/modules/node/lib/Drupal/node/Controller/NodeController.php
@@ -67,7 +67,6 @@ public function add(NodeTypeInterface $node_type) {
 
     $node = $this->entityManager()->getStorageController('node')->create(array(
       'uid' => $account->id(),
-      'name' => $account->getUsername() ?: '',
       'type' => $node_type->type,
       'langcode' => $langcode ? $langcode : $this->languageManager()->getCurrentLanguage()->id,
     ));
diff --git a/core/modules/node/lib/Drupal/node/Entity/Node.php b/core/modules/node/lib/Drupal/node/Entity/Node.php
index b8f2a0e..8e4122d 100644
--- a/core/modules/node/lib/Drupal/node/Entity/Node.php
+++ b/core/modules/node/lib/Drupal/node/Entity/Node.php
@@ -62,6 +62,41 @@
 class Node extends ContentEntityBase implements NodeInterface {
 
   /**
+   * @see NodeFormController::prepareEntity()
+   */
+  public $date;
+
+  /**
+   * @see menu_node_prepare_form()
+   */
+  public $menu;
+
+  /**
+   * @see NodeFormController::form()
+   */
+  public $in_preview;
+
+  /**
+   * @see node_feed()
+   */
+  public $link;
+
+  /**
+   * @see node_feed()
+   */
+  public $rss_namespaces;
+
+  /**
+   * @see node_feed()
+   */
+  public $rss_elements;
+
+  /**
+   * @see book_node_links_alter()
+   */
+  public $book;
+
+  /**
    * Implements Drupal\Core\Entity\EntityInterface::id().
    */
   public function id() {
diff --git a/core/modules/node/lib/Drupal/node/NodeFormController.php b/core/modules/node/lib/Drupal/node/NodeFormController.php
index 569f502..5c8d321 100644
--- a/core/modules/node/lib/Drupal/node/NodeFormController.php
+++ b/core/modules/node/lib/Drupal/node/NodeFormController.php
@@ -358,7 +358,6 @@ public function submit(array $form, array &$form_state) {
       $node->setRevisionAuthorId(\Drupal::currentUser()->id());
     }
 
-    $node->validated = TRUE;
     foreach (\Drupal::moduleHandler()->getImplementations('node_submit') as $module) {
       $function = $module . '_node_submit';
       $function($node, $form, $form_state);
diff --git a/core/modules/shortcut/lib/Drupal/shortcut/Entity/Shortcut.php b/core/modules/shortcut/lib/Drupal/shortcut/Entity/Shortcut.php
index b609bbd..1683f56 100644
--- a/core/modules/shortcut/lib/Drupal/shortcut/Entity/Shortcut.php
+++ b/core/modules/shortcut/lib/Drupal/shortcut/Entity/Shortcut.php
@@ -97,7 +97,7 @@ public function setRouteName($route_name) {
    */
   public function getRouteParams() {
     $value = $this->get('route_parameters')->getValue();
-    return reset($value);
+    return (array) reset($value);
   }
 
   /**
diff --git a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php
index 9795455..0174d4a 100644
--- a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php
+++ b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php
@@ -726,7 +726,7 @@ protected function drupalLogout() {
 
     if ($pass) {
       // @see WebTestBase::drupalUserIsLoggedIn()
-      unset($this->loggedInUser->session_id);
+      $this->loggedInUser->session_id = NULL;
       $this->loggedInUser = FALSE;
       $this->container->set('current_user', drupal_anonymous_user());
     }
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Entity/Term.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Entity/Term.php
index e366b85..6628183 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Entity/Term.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Entity/Term.php
@@ -54,6 +54,12 @@
 class Term extends ContentEntityBase implements TermInterface {
 
   /**
+   * @see RSSCategoryFormatter
+   * @see EntityReferenceTaxonomyTermRssFormatter
+   */
+  public $rss_elements;
+
+  /**
    * The taxonomy term ID.
    *
    * @var \Drupal\Core\Field\FieldItemListInterface
diff --git a/core/modules/user/lib/Drupal/user/Entity/User.php b/core/modules/user/lib/Drupal/user/Entity/User.php
index 44bce77..8782e02 100644
--- a/core/modules/user/lib/Drupal/user/Entity/User.php
+++ b/core/modules/user/lib/Drupal/user/Entity/User.php
@@ -52,6 +52,21 @@
 class User extends ContentEntityBase implements UserInterface {
 
   /**
+   * @see UserCancelForm
+   */
+  public $user_cancel_method;
+
+  /**
+   * @see UserCancelForm
+   */
+  public $user_cancel_notify;
+
+  /**
+   * Used by many tests.
+   */
+  public $pass_raw;
+
+  /**
    * {@inheritdoc}
    */
   public function id() {
diff --git a/core/profiles/standard/standard.install b/core/profiles/standard/standard.install
index aa0cb4a..c2368be 100644
--- a/core/profiles/standard/standard.install
+++ b/core/profiles/standard/standard.install
@@ -63,7 +63,7 @@ function standard_install() {
     'shortcut_set' => 'default',
     'title' => t('Add content'),
     'weight' => -20,
-    'path' => 'node/add',
+    'route_name' => 'node.add_page',
   ));
   $shortcut->save();
 
@@ -71,7 +71,7 @@ function standard_install() {
     'shortcut_set' => 'default',
     'title' => t('All content'),
     'weight' => -19,
-    'path' => 'admin/content',
+    'route_name' => 'node.content_overview',
   ));
   $shortcut->save();
 
