diff --git a/core/modules/datetime/datetime.module b/core/modules/datetime/datetime.module
index ccf1a0c..27b52e4 100644
--- a/core/modules/datetime/datetime.module
+++ b/core/modules/datetime/datetime.module
@@ -46,7 +46,8 @@ function datetime_element_info() {
   $types['datetime'] = array(
     '#input' => TRUE,
     '#element_validate' => array('datetime_datetime_validate'),
-    '#process' => array('datetime_datetime_form_process'),
+    '#process' => array('datetime_datetime_form_process', 'form_process_group'),
+    '#pre_render' => array('form_pre_render_group'),
     '#theme' => 'datetime_form',
     '#theme_wrappers' => array('datetime_wrapper'),
     '#date_date_format' => $date_format,
@@ -991,11 +992,11 @@ function datetime_form_node_form_alter(&$form, &$form_state, $form_id) {
   $format_type = datetime_default_format_type();
 
   // Alter the 'Authored on' date to use datetime.
-  $form['author']['date']['#type'] = 'datetime';
+  $form['created']['#type'] = 'datetime';
   $date_format = entity_load('date_format', 'html_date')->getPattern($format_type);
   $time_format = entity_load('date_format', 'html_time')->getPattern($format_type);
-  $form['author']['date']['#description'] = t('Format: %format. Leave blank to use the time of form submission.', array('%format' => datetime_format_example($date_format . ' ' . $time_format)));
-  unset($form['author']['date']['#maxlength']);
+  $form['created']['#description'] = t('Format: %format. Leave blank to use the time of form submission.', array('%format' => datetime_format_example($date_format . ' ' . $time_format)));
+  unset($form['created']['#maxlength']);
 }
 
 /**
diff --git a/core/modules/node/lib/Drupal/node/NodeFormController.php b/core/modules/node/lib/Drupal/node/NodeFormController.php
index 1cc58a7..8b6f8a0 100644
--- a/core/modules/node/lib/Drupal/node/NodeFormController.php
+++ b/core/modules/node/lib/Drupal/node/NodeFormController.php
@@ -133,14 +133,15 @@ 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'),
+      '#group' => 'revision_information',
     );
 
-    $form['revision_information']['revision']['log'] = array(
+    $form['log'] = array(
       '#type' => 'textarea',
       '#title' => t('Revision log message'),
       '#rows' => 4,
@@ -151,6 +152,7 @@ public function form(array $form, array &$form_state) {
           ':input[name="revision"]' => array('checked' => TRUE),
         ),
       ),
+      '#group' => 'revision_information',
     );
 
     // Node author information for administrators.
@@ -175,7 +177,7 @@ public function form(array $form, array &$form_state) {
       '#weight' => 90,
     );
 
-    $form['author']['name'] = array(
+    $form['uid'] = array(
       '#type' => 'textfield',
       '#title' => t('Authored by'),
       '#maxlength' => 60,
@@ -183,13 +185,15 @@ public function form(array $form, array &$form_state) {
       '#default_value' => $node->getAuthorId()? $node->getAuthor()->getUsername() : '',
       '#weight' => -1,
       '#description' => t('Leave blank for %anonymous.', array('%anonymous' => $user_config->get('anonymous'))),
+      '#group' => 'author',
     );
-    $form['author']['date'] = array(
+    $form['created'] = 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 : '',
+      '#group' => 'author',
     );
 
     // Node options for administrators.
@@ -208,16 +212,19 @@ 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(),
+      '#group' => 'options',
+
     );
 
-    $form['options']['sticky'] = array(
+    $form['sticky'] = array(
       '#type' => 'checkbox',
       '#title' => t('Sticky at top of lists'),
       '#default_value' => $node->isSticky(),
+      '#group' => 'options',
     );
 
     return parent::form($form, $form_state, $node);
@@ -314,11 +321,11 @@ public function validate(array $form, array &$form_state) {
     }
 
     // Validate the "authored by" field.
-    if (!empty($form_state['values']['name']) && !($account = user_load_by_name($form_state['values']['name']))) {
+    if (!empty($form_state['values']['uid']) && !($account = user_load_by_name($form_state['values']['uid']))) {
       // The use of empty() is mandatory in the context of usernames
       // as the empty string denotes the anonymous user. In case we
       // are dealing with an anonymous user we set the user ID to 0.
-      $this->setFormError('name', $form_state, $this->t('The username %name does not exist.', array('%name' => $form_state['values']['name'])));
+      $this->setFormError('uid', $form_state, $this->t('The username %name does not exist.', array('%name' => $form_state['values']['uid'])));
     }
 
     // Validate the "authored on" field.
@@ -420,15 +427,15 @@ public function buildEntity(array $form, array &$form_state) {
     $entity = parent::buildEntity($form, $form_state);
     // A user might assign the node author by entering a user name in the node
     // form, which we then need to translate to a user ID.
-    if (!empty($form_state['values']['name']) && $account = user_load_by_name($form_state['values']['name'])) {
+    if (!empty($form_state['values']['uid']) && $account = user_load_by_name($form_state['values']['uid'])) {
       $entity->setAuthorId($account->id());
     }
     else {
       $entity->setAuthorId(0);
     }
 
-    if (!empty($form_state['values']['date']) && $form_state['values']['date'] instanceOf DrupalDateTime) {
-      $entity->setCreatedTime($form_state['values']['date']->getTimestamp());
+    if (!empty($form_state['values']['created']) && $form_state['values']['created'] instanceOf DrupalDateTime) {
+      $entity->setCreatedTime($form_state['values']['created']->getTimestamp());
     }
     else {
       $entity->setCreatedTime(REQUEST_TIME);
diff --git a/core/modules/node/lib/Drupal/node/NodeTranslationController.php b/core/modules/node/lib/Drupal/node/NodeTranslationController.php
index 9568aeb..ee4e3cd 100644
--- a/core/modules/node/lib/Drupal/node/NodeTranslationController.php
+++ b/core/modules/node/lib/Drupal/node/NodeTranslationController.php
@@ -56,8 +56,8 @@ public function entityFormEntityBuild($entity_type, EntityInterface $entity, arr
       $form_controller = content_translation_form_controller($form_state);
       $translation = &$form_state['values']['content_translation'];
       $translation['status'] = $form_controller->getEntity()->isPublished();
-      $translation['name'] = $form_state['values']['name'];
-      $translation['created'] = $form_state['values']['date'];
+      $translation['uid'] = $form_state['values']['uid'];
+      $translation['created'] = $form_state['values']['created'];
     }
     parent::entityFormEntityBuild($entity_type, $entity, $form, $form_state);
   }
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeCreationTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeCreationTest.php
index 52dd047..c5b4514 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeCreationTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeCreationTest.php
@@ -149,7 +149,7 @@ public function testAuthorAutocomplete() {
 
     $this->drupalGet('node/add/page');
 
-    $result = $this->xpath('//input[@id="edit-name" and contains(@data-autocomplete-path, "user/autocomplete")]');
+    $result = $this->xpath('//input[@id="edit-uid" and contains(@data-autocomplete-path, "user/autocomplete")]');
     $this->assertEqual(count($result), 0, 'No autocompletion without access user profiles.');
 
     $admin_user = $this->drupalCreateUser(array('administer nodes', 'create page content', 'access user profiles'));
@@ -157,7 +157,7 @@ public function testAuthorAutocomplete() {
 
     $this->drupalGet('node/add/page');
 
-    $result = $this->xpath('//input[@id="edit-name" and contains(@data-autocomplete-path, "user/autocomplete")]');
+    $result = $this->xpath('//input[@id="edit-uid" and contains(@data-autocomplete-path, "user/autocomplete")]');
     $this->assertEqual(count($result), 1, 'Ensure that the user does have access to the autocompletion');
   }
 
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php b/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php
index c8d554c..a56c48c 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php
@@ -155,9 +155,9 @@ protected function doTestAuthoringInfo() {
         'created' => REQUEST_TIME - mt_rand(0, 1000),
       );
       $edit = array(
-        'name' => $user->getUsername(),
-        'date[date]' => format_date($values[$langcode]['created'], 'custom', 'Y-m-d'),
-        'date[time]' => format_date($values[$langcode]['created'], 'custom', 'H:i:s'),
+        'uid' => $user->getUsername(),
+        'created[date]' => format_date($values[$langcode]['created'], 'custom', 'Y-m-d'),
+        'created[time]' => format_date($values[$langcode]['created'], 'custom', 'H:i:s'),
       );
       $this->drupalPostForm($uri['path'], $edit, $this->getFormSubmitAction($entity), array('language' => $languages[$langcode]));
     }
diff --git a/core/modules/node/lib/Drupal/node/Tests/PageEditTest.php b/core/modules/node/lib/Drupal/node/Tests/PageEditTest.php
index 3e52eb0..10252a8 100644
--- a/core/modules/node/lib/Drupal/node/Tests/PageEditTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/PageEditTest.php
@@ -114,21 +114,21 @@ function testPageAuthoredBy() {
 
     // Try to change the 'authored by' field to an invalid user name.
     $edit = array(
-      'name' => 'invalid-name',
+      'uid' => 'invalid-name',
     );
     $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save and keep published'));
     $this->assertText('The username invalid-name does not exist.');
 
     // Change the authored by field to an empty string, which should assign
     // authorship to the anonymous user (uid 0).
-    $edit['name'] = '';
+    $edit['uid'] = '';
     $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save and keep published'));
     $node = node_load($node->id(), TRUE);
     $this->assertIdentical($node->getAuthorId(), '0', 'Node authored by anonymous user.');
 
     // Change the authored by field to another user's name (that is not
     // logged in).
-    $edit['name'] = $this->web_user->getUsername();
+    $edit['uid'] = $this->web_user->getUsername();
     $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, t('Save and keep published'));
     $node = node_load($node->id(), TRUE);
     $this->assertIdentical($node->getAuthorId(), $this->web_user->id(), 'Node authored by normal user.');
diff --git a/core/modules/system/system.module b/core/modules/system/system.module
index c2cf620..b0b1541 100644
--- a/core/modules/system/system.module
+++ b/core/modules/system/system.module
@@ -331,8 +331,8 @@ function system_element_info() {
     '#size' => 60,
     '#maxlength' => 128,
     '#autocomplete_route_name' => FALSE,
-    '#process' => array('form_process_autocomplete', 'ajax_process_form', 'form_process_pattern'),
-    '#pre_render' => array('form_pre_render_textfield'),
+    '#process' => array('form_process_autocomplete', 'ajax_process_form', 'form_process_pattern', 'form_process_group'),
+    '#pre_render' => array('form_pre_render_textfield', 'form_pre_render_group'),
     '#theme' => 'input__textfield',
     '#theme_wrappers' => array('form_element'),
   );
@@ -438,7 +438,8 @@ function system_element_info() {
     '#cols' => 60,
     '#rows' => 5,
     '#resizable' => 'vertical',
-    '#process' => array('ajax_process_form'),
+    '#process' => array('ajax_process_form', 'form_process_group'),
+    '#pre_render' => array('form_pre_render_group'),
     '#theme' => 'textarea',
     '#theme_wrappers' => array('form_element'),
   );
@@ -466,8 +467,8 @@ function system_element_info() {
   $types['checkbox'] = array(
     '#input' => TRUE,
     '#return_value' => 1,
-    '#process' => array('form_process_checkbox', 'ajax_process_form'),
-    '#pre_render' => array('form_pre_render_checkbox'),
+    '#process' => array('form_process_checkbox', 'ajax_process_form', 'form_process_group'),
+    '#pre_render' => array('form_pre_render_checkbox', 'form_pre_render_group'),
     '#theme' => 'input__checkbox',
     '#theme_wrappers' => array('form_element'),
     '#title_display' => 'after',
