diff --git a/src/Plugin/Field/FieldWidget/ModerationStateWidget.php b/src/Plugin/Field/FieldWidget/ModerationStateWidget.php
index b1fd2f7..57b89ba 100644
--- a/src/Plugin/Field/FieldWidget/ModerationStateWidget.php
+++ b/src/Plugin/Field/FieldWidget/ModerationStateWidget.php
@@ -141,9 +141,11 @@ class ModerationStateWidget extends OptionsSelectWidget implements ContainerFact
       return $element + ['#access' => FALSE];
     }
 
+    $state_storage = $this->entityTypeManager->getStorage('moderation_state');
+
     $default = $items->get($delta)->target_id ?: $bundle_entity->getThirdPartySetting('workbench_moderation', 'default_moderation_state', FALSE);
     /** @var \Drupal\workbench_moderation\ModerationStateInterface $default_state */
-    $default_state = $this->entityTypeManager->getStorage('moderation_state')->load($default);
+    $default_state = $state_storage->load($default);
     if (!$default || !$default_state) {
       throw new \UnexpectedValueException(sprintf('The %s bundle has an invalid moderation state configuration, moderation states are enabled but no default is set.', $bundle_entity->label()));
     }
@@ -153,20 +155,18 @@ class ModerationStateWidget extends OptionsSelectWidget implements ContainerFact
     $target_states = [];
     /** @var ModerationStateTransition $transition */
     foreach ($transitions as $transition) {
-      $target_states[$transition->getToState()] = $transition->label();
+      $to_state = $transition->getToState();
+      $target_states[$to_state] = $state_storage->load($to_state)->label();
     }
 
     // @todo write a test for this.
     $element += [
-      '#access' => FALSE,
       '#type' => 'select',
       '#options' => $target_states,
       '#default_value' => $default,
       '#published' => $default ? $default_state->isPublishedState() : FALSE,
     ];
 
-    // Use the dropbutton.
-    $element['#process'][] = [get_called_class(), 'processActions'];
     return $element;
   }
 
@@ -190,51 +190,6 @@ class ModerationStateWidget extends OptionsSelectWidget implements ContainerFact
   }
 
   /**
-   * Process callback to alter action buttons.
-   */
-  public static function processActions($element, FormStateInterface $form_state, array &$form) {
-
-    // We'll steal most of the button configuration from the default submit button.
-    // However, NodeForm also hides that button for admins (as it adds its own,
-    // too), so we have to restore it.
-    $default_button = $form['actions']['submit'];
-    $default_button['#access'] = TRUE;
-
-    // Add a custom button for each transition we're allowing. The #dropbutton
-    // property tells FAPI to cluster them all together into a single widget.
-    $options = $element['#options'];
-
-    $entity = $form_state->getFormObject()->getEntity();
-    $translatable = !$entity->isNew() && $entity->isTranslatable();
-    foreach ($options as $id => $label) {
-      $button = [
-        '#dropbutton' => 'save',
-        '#moderation_state' => $id,
-        '#weight' => -10,
-      ];
-
-      $button['#value'] = $translatable
-        ? t('Save and @transition (this translation)', ['@transition' => $label])
-        : t('Save and @transition', ['@transition' => $label]);
-
-
-      $form['actions']['moderation_state_' . $id] = $button + $default_button;
-    }
-
-    // Hide the default buttons, including the specialty ones added by
-    // NodeForm.
-    foreach (['publish', 'unpublish', 'submit'] as $key) {
-      $form['actions'][$key]['#access'] = FALSE;
-      unset($form['actions'][$key]['#dropbutton']);
-    }
-
-    // Setup a callback to translate the button selection back into field
-    // widget, so that it will get saved properly.
-    $form['#entity_builders']['update_moderation_state'] = [get_called_class(), 'updateStatus'];
-    return $element;
-  }
-
-  /**
    * {@inheritdoc}
    */
   public static function isApplicable(FieldDefinitionInterface $field_definition) {
