diff --git a/core/modules/node/css/node-admin.css b/core/modules/node/css/node-admin.css
new file mode 100644
index 0000000..5fb2f67
--- /dev/null
+++ b/core/modules/node/css/node-admin.css
@@ -0,0 +1,20 @@
+/**
+ * The .css file is intended to only contain positioning and size declarations
+ * For example: display, position, float, clear, and overflow.
+ */
+
+/**
+* Node form dropbuttons.
+*/
+.form-actions .dropbutton-wrapper {
+  width: 120px;
+  float: left;
+  margin-right: 1em;
+}
+
+.form-actions .dropbutton-wrapper li a,
+.form-actions .dropbutton-wrapper input {
+  padding: 4px 17px;
+  margin-bottom: 0em;
+}
+
diff --git a/core/modules/node/css/node-admin.theme.css b/core/modules/node/css/node-admin.theme.css
new file mode 100644
index 0000000..de5c892
--- /dev/null
+++ b/core/modules/node/css/node-admin.theme.css
@@ -0,0 +1,26 @@
+/**
+ * The .theme.css file is intended to contain presentation declarations including
+ * images, borders, colors, and fonts.
+ */
+
+/**
+ * Node form dropbuttons.
+ */
+.form-actions .dropbutton-wrapper li a,
+.form-actions .dropbutton-wrapper input {
+  border: medium;
+  border-radius: 0;
+  background: none;
+}
+
+.form-actions .dropbutton-wrapper input:hover {
+  background: none;
+  border: none;
+}
+
+/**
+ * Revisions overview screen.
+ */
+.revision-current {
+  background: #ffc;
+}
diff --git a/core/modules/node/lib/Drupal/node/NodeFormController.php b/core/modules/node/lib/Drupal/node/NodeFormController.php
index bd8a2cb..56b2a90 100644
--- a/core/modules/node/lib/Drupal/node/NodeFormController.php
+++ b/core/modules/node/lib/Drupal/node/NodeFormController.php
@@ -203,7 +203,7 @@ public function form(array $form, array &$form_state, EntityInterface $node) {
     $form['options'] = array(
       '#type' => 'details',
       '#access' => user_access('administer nodes'),
-      '#title' => t('Publishing options'),
+      '#title' => t('Promotion options'),
       '#collapsible' => TRUE,
       '#collapsed' => TRUE,
       '#group' => 'additional_settings',
@@ -216,12 +216,6 @@ public function form(array $form, array &$form_state, EntityInterface $node) {
       '#weight' => 95,
     );
 
-    $form['options']['status'] = array(
-      '#type' => 'checkbox',
-      '#title' => t('Published'),
-      '#default_value' => $node->status,
-    );
-
     $form['options']['promote'] = array(
       '#type' => 'checkbox',
       '#title' => t('Promoted to front page'),
@@ -245,6 +239,50 @@ public function form(array $form, array &$form_state, EntityInterface $node) {
   }
 
   /**
+   * Overrides Drupal\entity\EntityFormController::actionsElement().
+   */
+  protected function actionsElement(array $form, array &$form_state) {
+    $element = parent::actionsElement($form, $form_state);
+    $node = $this->getEntity($form_state);
+
+    $element['operations'] = array(
+      '#type' => 'operations',
+      '#subtype' => 'node',
+      '#attached' => array (
+        'css' => array(
+          drupal_get_path('module', 'node') . '/css/node-admin.css',
+          drupal_get_path('module', 'node') . '/css/node-admin.theme.css'
+        ),
+      ),
+    );
+
+    // Because some of the 'links' are actually submit buttons, we have to
+    // manually wrap each item in <li> and the whole list in <ul>.
+    $element['operations']['prefix']['#markup'] = '<ul class="dropbutton">';
+
+    $element['operations']['publish'] = array(
+      '#type' => 'submit',
+      '#value' => t('Publish'),
+      '#submit' => array(array($this, 'publish'), array($this, 'submit'), array($this, 'save')),
+      '#button_type' => 'primary',
+      '#prefix' => '<li class="publish">',
+      '#suffix' => '</li>',
+    );
+    $element['operations']['unpublish'] = array(
+      '#type' => 'submit',
+      '#value' => t('Save as draft'),
+      '#submit' => array(array($this, 'unpublish'), array($this, 'submit'), array($this, 'save')),
+      '#prefix' => '<li class="unpublish">',
+      "#suffix" => '</li>',
+    );
+    $element['operations']['suffix']['#markup'] = '</ul>';
+
+    unset($element['submit']);
+
+    return $element;
+  }
+
+  /*
    * Overrides Drupal\Core\Entity\EntityFormController::actions().
    */
   protected function actions(array $form, array &$form_state) {
@@ -351,6 +389,34 @@ public function preview(array $form, array &$form_state) {
   }
 
   /**
+   * Form submission handler for the 'publish' action.
+   *
+   * @param $form
+   *   An associative array containing the structure of the form.
+   * @param $form_state
+   *   A reference to a keyed array containing the current state of the form.
+   */
+  public function publish(array $form, array &$form_state) {
+    $node = $this->getEntity($form_state);
+    $node->status = TRUE;
+    return $node;
+  }
+
+  /**
+   * Form submission handler for the 'unpublish' action.
+   *
+   * @param $form
+   *   An associative array containing the structure of the form.
+   * @param $form_state
+   *   A reference to a keyed array containing the current state of the form.
+   */
+  public function unpublish(array $form, array &$form_state) {
+    $node = $this->getEntity($form_state);
+    $node->status = FALSE;
+    return $node;
+  }
+
+  /**
    * Overrides Drupal\Core\Entity\EntityFormController::save().
    */
   public function save(array $form, array &$form_state) {
diff --git a/core/modules/node/lib/Drupal/node/Tests/MultiStepNodeFormBasicOptionsTest.php b/core/modules/node/lib/Drupal/node/Tests/MultiStepNodeFormBasicOptionsTest.php
index 873c7ea..26fc89e 100644
--- a/core/modules/node/lib/Drupal/node/Tests/MultiStepNodeFormBasicOptionsTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/MultiStepNodeFormBasicOptionsTest.php
@@ -49,7 +49,7 @@ function testMultiStepNodeFormBasicOptions() {
       'choice[new:1][chtext]' => 'a',
     );
     $this->drupalPost('node/add/poll', $edit, t('Add another choice'));
-    $this->assertNoFieldChecked('edit-status', 'status stayed unchecked');
+    $this->assertFieldById('edit-status', 0, 'status stayed not published');
     $this->assertNoFieldChecked('edit-promote', 'promote stayed unchecked');
     $this->assertFieldChecked('edit-sticky', 'sticky stayed checked');
   }
diff --git a/core/modules/node/node.admin.inc b/core/modules/node/node.admin.inc
index 74f100c..10a12c6 100644
--- a/core/modules/node/node.admin.inc
+++ b/core/modules/node/node.admin.inc
@@ -435,7 +435,7 @@ function node_admin_nodes() {
     '#attributes' => array('class' => array('container-inline')),
     '#access' => $admin_access,
     '#attached' => array (
-      'css' => array(drupal_get_path('module', 'node') . '/node.admin.css'),
+      'css' => array(drupal_get_path('module', 'node') . '/css/node-admin.theme.css'),
     ),
   );
   $options = array();
diff --git a/core/modules/node/node.js b/core/modules/node/node.js
index cdc8cbe..b61c117 100644
--- a/core/modules/node/node.js
+++ b/core/modules/node/node.js
@@ -38,14 +38,15 @@ Drupal.behaviors.nodeDetailsSummaries = {
       var $context = $(context);
       var vals = [];
 
-      $context.find('input:checked').parent().each(function () {
-        vals.push(Drupal.checkPlain($.trim($(this).text())));
-      });
-
-      if (!$context.find('.form-item-status input').is(':checked')) {
-        vals.unshift(Drupal.t('Not published'));
+      if ($context.find('input').is(':checked')) {
+        $context.find('input:checked').parent().each(function () {
+          vals.push(Drupal.checkPlain($.trim($(this).text())));
+        });
+        return vals.join(', ');
+      }
+      else {
+        return Drupal.t('Not promoted');
       }
-      return vals.join(', ');
     });
 
     $context.find('fieldset.node-translation-options').drupalSetSummary(function (context) {
diff --git a/core/themes/seven/style.css b/core/themes/seven/style.css
index 9c4fff4..fcc0a02 100644
--- a/core/themes/seven/style.css
+++ b/core/themes/seven/style.css
@@ -753,9 +753,12 @@ select.form-select:focus {
     margin-right: 0;
     margin-top: 10px;
     padding-bottom: 6px;
-    padding-top: 6px;
     width: 100%;
   }
+  .form-actions input:first-child,
+  .form-wrapper input[type="submit"]:first-child {
+    margin-top: 0;
+  }
   .exposed-filters .filters,
   .exposed-filters .form-item label,
   .exposed-filters .form-select {
@@ -1074,6 +1077,34 @@ div.add-or-remove-shortcuts {
   text-overflow: clip;
 }
 
+.js .form-actions .dropbutton-widget {
+  background-color: #9dcae7;
+  background-image: none;
+  border: 1px solid #8eB7cd;
+  border-bottom-color: #7691a2;
+  color: #133B54;
+}
+.js .form-actions .dropbutton-widget:focus,
+.js .form-actions .dropbutton-widget:hover {
+  background-color: #73b3dd;
+  border: 1px solid #6ea3bf;
+  border-bottom-color: #4680a0;
+}
+.js .form-actions .dropbutton-widget:active {
+  background-color: #3981b1;
+  border: 1px solid #36647c;
+  border-bottom-color: #284657;
+}
+.js .form-actions .dropbutton-multiple.open .dropbutton-widget:hover {
+  background-color: #9dcae7;
+}
+.js .form-actions .dropbutton-multiple.open .dropbutton-widget:hover {
+  background-color: #9dcae7;
+}
+.js .form-actions .dropbutton-multiple.open .dropbutton-action:hover {
+  background-color: #73b3dd;
+}
+
 /* Disable overlay message */
 #overlay-disable-message {
   background-color: #addafc;
