diff --git a/core/modules/node/lib/Drupal/node/NodeFormController.php b/core/modules/node/lib/Drupal/node/NodeFormController.php
index 1cc58a7..88f22e1 100644
--- a/core/modules/node/lib/Drupal/node/NodeFormController.php
+++ b/core/modules/node/lib/Drupal/node/NodeFormController.php
@@ -133,14 +133,14 @@ public function form(array $form, array &$form_state) {
       '#access' => $node->isNewRevision() || user_access('administer nodes'),
     );
 
-    $form['revision_information']['revision']['revision'] = array(
+    $form['revision'] = array(
       '#type' => 'checkbox',
       '#title' => t('Create new revision'),
       '#default_value' => $node->isNewRevision(),
       '#access' => user_access('administer nodes'),
     );
 
-    $form['revision_information']['revision']['log'] = array(
+    $form['log'] = array(
       '#type' => 'textarea',
       '#title' => t('Revision log message'),
       '#rows' => 4,
@@ -175,7 +175,7 @@ public function form(array $form, array &$form_state) {
       '#weight' => 90,
     );
 
-    $form['author']['name'] = array(
+    $form['name'] = array(
       '#type' => 'textfield',
       '#title' => t('Authored by'),
       '#maxlength' => 60,
@@ -184,12 +184,12 @@ public function form(array $form, array &$form_state) {
       '#weight' => -1,
       '#description' => t('Leave blank for %anonymous.', array('%anonymous' => $user_config->get('anonymous'))),
     );
-    $form['author']['date'] = array(
+    $form['date'] = array(
       '#type' => 'textfield',
       '#title' => t('Authored on'),
       '#maxlength' => 25,
       '#description' => t('Format: %time. The date format is YYYY-MM-DD and %timezone is the time zone offset from UTC. Leave blank to use the time of form submission.', array('%time' => !empty($node->date) ? date_format(date_create($node->date), 'Y-m-d H:i:s O') : format_date($node->getCreatedTime(), 'custom', 'Y-m-d H:i:s O'), '%timezone' => !empty($node->date) ? date_format(date_create($node->date), 'O') : format_date($node->getCreatedTime(), 'custom', 'O'))),
-      '#default_value' => !empty($node->date) ? $node->date : '',
+      '#default_value' => !empty($node->date) ? (string) $node->date : '',
     );
 
     // Node options for administrators.
@@ -208,22 +208,64 @@ public function form(array $form, array &$form_state) {
       '#weight' => 95,
     );
 
-    $form['options']['promote'] = array(
+    $form['promote'] = array(
       '#type' => 'checkbox',
       '#title' => t('Promoted to front page'),
       '#default_value' => $node->isPromoted(),
     );
 
-    $form['options']['sticky'] = array(
+    $form['sticky'] = array(
       '#type' => 'checkbox',
       '#title' => t('Sticky at top of lists'),
       '#default_value' => $node->isSticky(),
     );
 
+    $form['#pre_render'] = array(array($this, 'preRenderStructure'));
+
     return parent::form($form, $form_state, $node);
   }
 
   /**
+   * Pre-render callback to structure the base fields into sections.
+   *
+   * @param $form
+   *   The Node form array structure.
+   */
+  public function preRenderStructure($form) {
+    // Promotion options.
+    if (isset($form['promote'])) {
+      $form['options']['promote'] = $form['promote'];
+      unset($form['promote']);
+    }
+    if (isset($form['sticky'])) {
+      $form['options']['sticky'] = $form['sticky'];
+      unset($form['sticky']);
+    }
+
+    // Authoring information.
+    if (isset($form['name'])) {
+      $form['author']['name'] = $form['name'];
+      unset($form['name']);
+    }
+    if (isset($form['date'])) {
+      $form['author']['date'] = $form['date'];
+      unset($form['date']);
+    }
+
+    // Revision information.
+    if (isset($form['revision'])) {
+      $form['revision_information']['revision']['revision'] = $form['revision'];
+      unset($form['revision']);
+    }
+    if (isset($form['log'])) {
+      $form['revision_information']['revision']['log'] = $form['log'];
+      unset($form['log']);
+    }
+
+    return $form;
+  }
+
+  /**
    * Overrides Drupal\Core\Entity\EntityFormController::actions().
    */
   protected function actions(array $form, array &$form_state) {
