diff --git a/core/modules/user/lib/Drupal/user/Access/RoleDeleteAccessCheck.php b/core/modules/user/lib/Drupal/user/Access/RoleDeleteAccessCheck.php
deleted file mode 100644
index 1efc872..0000000
--- a/core/modules/user/lib/Drupal/user/Access/RoleDeleteAccessCheck.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains Drupal\user\Access\RoleDeleteAccessCheck.
- */
-
-namespace Drupal\user\Access;
-
-use Drupal\Core\Access\AccessCheckInterface;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * Access check for role deletion routes.
- */
-class RoleDeleteAccessCheck implements AccessCheckInterface {
-
-  /**
-   * Implements AccessCheckInterface::applies().
-   */
-  public function applies(Route $route) {
-    return array_key_exists('_access_role_delete', $route->getRequirements());
-  }
-
-  /**
-   * Implements AccessCheckInterface::access().
-   */
-  public function access(Route $route, Request $request) {
-    if ($user_role = $request->attributes->get('user_role')) {
-      return $user_role->access('delete');
-    }
-    return FALSE;
-  }
-}
diff --git a/core/modules/user/lib/Drupal/user/Form/UserRoleDelete.php b/core/modules/user/lib/Drupal/user/Form/UserRoleDelete.php
deleted file mode 100644
index 969d89f..0000000
--- a/core/modules/user/lib/Drupal/user/Form/UserRoleDelete.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\user\Form\UserRoleDelete.
- */
-
-namespace Drupal\user\Form;
-
-use Drupal\Core\Form\ConfirmFormBase;
-use Drupal\user\Plugin\Core\Entity\Role;
-
-/**
- * Provides a deletion confirmation form for Role entity.
- */
-class UserRoleDelete extends ConfirmFormBase {
-
-  /**
-   * The role being deleted.
-   *
-   * @var \Drupal\user\Plugin\Core\Entity\Role
-   */
-  protected $user_role;
-
-  /**
-   * Implements \Drupal\Core\Form\FormInterface::getFormID().
-   */
-  public function getFormID() {
-    return 'user_role_delete_form';
-  }
-
-  /**
-   * Implements \Drupal\Core\Form\ConfirmFormBase::getQuestion().
-   */
-  protected function getQuestion() {
-    return t('Are you sure you want to delete the role %name?', array('%name' => $this->user_role->label()));
-  }
-
-  /**
-   * Implements \Drupal\Core\Form\ConfirmFormBase::getCancelPath().
-   */
-  protected function getCancelPath() {
-    return 'admin/people/roles';
-  }
-
-  /**
-   * Implements \Drupal\Core\Form\ConfirmFormBase::getConfirmText().
-   */
-  protected function getConfirmText() {
-    return t('Delete');
-  }
-
-  /**
-   * Implements \Drupal\Core\Form\FormInterface::buildForm().
-   */
-  public function buildForm(array $form, array &$form_state, Role $user_role = NULL) {
-    $this->user_role = $user_role;
-    return parent::buildForm($form, $form_state);
-  }
-
-  /**
-   * Implements \Drupal\Core\Form\FormInterface::submitForm().
-   */
-  public function submitForm(array &$form, array &$form_state) {
-    $this->user_role->delete();
-    watchdog('user', 'The role %name has been deleted.', array('%name' => $this->user_role->label()));
-    drupal_set_message(t('The role %name has been deleted.', array('%name' => $this->user_role->label())));
-    $form_state['redirect'] = 'admin/people/roles';
-  }
-
-}
diff --git a/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/Role.php b/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/Role.php
index 20c41df..f64955c 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/Role.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/Role.php
@@ -19,7 +19,6 @@
  *   label = @Translation("Role"),
  *   module = "user",
  *   controller_class = "Drupal\user\RoleStorageController",
- *   access_controller_class = "Drupal\user\RoleAccessController",
  *   config_prefix = "user.role",
  *   entity_keys = {
  *     "id" = "id",
diff --git a/core/modules/user/lib/Drupal/user/RoleAccessController.php b/core/modules/user/lib/Drupal/user/RoleAccessController.php
deleted file mode 100644
index b09fe6c..0000000
--- a/core/modules/user/lib/Drupal/user/RoleAccessController.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\user\RoleAccessController.
- */
-
-namespace Drupal\user;
-
-use Drupal\Core\Entity\EntityInterface;
-use Drupal\Core\Entity\EntityAccessController;
-use Drupal\user\Plugin\Core\Entity\User;
-use Drupal\user\Plugin\Core\Entity\Role;
-
-/**
- * Defines the access controller for the user entity type.
- */
-class RoleAccessController extends EntityAccessController {
-
-  /**
-   * Overrides \Drupal\Core\Entity\EntityAccessController::deleteAccess().
-   */
-  public function deleteAccess(EntityInterface $entity, $langcode = LANGUAGE_DEFAULT, User $account = NULL) {
-    // Prevent the system-defined roles from being removed.
-    if ($entity->id() == DRUPAL_ANONYMOUS_RID || $entity->id() == DRUPAL_AUTHENTICATED_RID) {
-      return FALSE;
-    }
-
-    return user_access('administer permissions');
-  }
-
-}
diff --git a/core/modules/user/lib/Drupal/user/UserBundle.php b/core/modules/user/lib/Drupal/user/UserBundle.php
index c390771..f7c4a88 100644
--- a/core/modules/user/lib/Drupal/user/UserBundle.php
+++ b/core/modules/user/lib/Drupal/user/UserBundle.php
@@ -24,9 +24,6 @@ public function build(ContainerBuilder $container) {
       ->addTag('access_check');
     $container->register('access_check.user.register', 'Drupal\user\Access\RegisterAccessCheck')
       ->addTag('access_check');
-    $container->register('access_check.role.delete', 'Drupal\user\Access\RoleDeleteAccessCheck')
-      ->addTag('access_check');
-
     $container
       ->register('user.data', 'Drupal\user\UserData')
       ->addArgument(new Reference('database'));
diff --git a/core/modules/user/user.admin.inc b/core/modules/user/user.admin.inc
index a4da046..c3931d8 100644
--- a/core/modules/user/user.admin.inc
+++ b/core/modules/user/user.admin.inc
@@ -1046,3 +1046,23 @@ function user_admin_role_submit($form, &$form_state) {
 function user_admin_role_delete_submit($form, &$form_state) {
   $form_state['redirect'] = 'admin/people/roles/delete/' . $form_state['values']['role']['id'];
 }
+
+/**
+ * Form to confirm role delete operation.
+ */
+function user_admin_role_delete_confirm($form, &$form_state, $role) {
+  $form['id'] = array(
+    '#type' => 'value',
+    '#value' => $role->id(),
+  );
+  return confirm_form($form, t('Are you sure you want to delete the role %name ?', array('%name' => $role->label())), 'admin/people/roles', t('This action cannot be undone.'), t('Delete'));
+}
+
+/**
+ * Form submit handler for user_admin_role_delete_confirm().
+ */
+function user_admin_role_delete_confirm_submit($form, &$form_state) {
+  entity_delete_multiple('user_role', array($form_state['values']['id']));
+  drupal_set_message(t('The role has been deleted.'));
+  $form_state['redirect'] = 'admin/people/roles';
+}
diff --git a/core/modules/user/user.module b/core/modules/user/user.module
index 21891ec..bdf5862 100644
--- a/core/modules/user/user.module
+++ b/core/modules/user/user.module
@@ -974,12 +974,11 @@ function user_menu() {
   );
   $items['admin/people/roles/delete/%user_role'] = array(
     'title' => 'Delete role',
-//    'page callback' => 'drupal_get_form',
-//    'page arguments' => array('user_admin_role_delete_confirm', 4),
-//    'access callback' => 'user_role_delete_access',
-//    'access arguments' => array(4),
-//    'file' => 'user.admin.inc',
-    'route_name' => 'user_role_delete',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('user_admin_role_delete_confirm', 4),
+    'access callback' => 'user_role_delete_access',
+    'access arguments' => array(4),
+    'file' => 'user.admin.inc',
   );
 
   $items['admin/people/create'] = array(
@@ -1857,6 +1856,18 @@ function user_role_load($rid) {
 }
 
 /**
+ * Menu access callback for user role deletion.
+ */
+function user_role_delete_access($role) {
+  // Prevent the system-defined roles from being removed.
+  if ($role->id() == DRUPAL_ANONYMOUS_RID || $role->id() == DRUPAL_AUTHENTICATED_RID) {
+    return FALSE;
+  }
+
+  return user_access('administer permissions');
+}
+
+/**
  * Determine the modules that permissions belong to.
  *
  * @return
diff --git a/core/modules/user/user.routing.yml b/core/modules/user/user.routing.yml
index e4a087b..34b6059 100644
--- a/core/modules/user/user.routing.yml
+++ b/core/modules/user/user.routing.yml
@@ -18,11 +18,3 @@ user_autocomplete_anonymous:
     _controller: '\Drupal\user\UserAutocompleteController::autocompleteUserAnonymous'
   requirements:
     _permission: 'access user profiles'
-
-user_role_delete:
-  pattern: '/admin/people/roles/delete/{user_role}'
-  defaults:
-    _form: '\Drupal\user\Form\UserRoleDelete'
-  requirements:
-    _access_role_delete: 'TRUE'
-    _permission: 'administer permissions'
