diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index cc60af2..de83cc3 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -2089,7 +2089,12 @@ function theme_table($variables) {
     drupal_add_library('system', 'drupal.tableheader');
     // Add 'sticky-enabled' class to the table to identify it for JS.
     // This is needed to target tables constructed by this function.
-    $attributes['class'][] = 'sticky-enabled';
+    if (isset($table_attributes['class'])) {
+      $table_attributes['class'][] = 'sticky-enabled';
+    }
+    else {
+      $table_attributes['class'] = array('sticky-enabled');
+    }
   }
   // If the table has headers and it should react responsively to columns hidden
   // with the classes represented by the constants RESPONSIVE_PRIORITY_MEDIUM
@@ -2098,7 +2103,12 @@ function theme_table($variables) {
     drupal_add_library('system', 'drupal.tableresponsive');
     // Add 'responsive-enabled' class to the table to identify it for JS.
     // This is needed to target tables constructed by this function.
-    $attributes['class'][] = 'responsive-enabled';
+    if (isset($table_attributes['class'])) {
+      $table_attributes['class'][] = 'responsive-enabled';
+    }
+    else {
+      $table_attributes['class'] = array('responsive-enabled');
+    }
   }
 
   $output = '<table' . new Attribute($attributes) . ">\n";
diff --git a/core/modules/block/block.admin.inc b/core/modules/block/block.admin.inc
index e5e8d76..297f780 100644
--- a/core/modules/block/block.admin.inc
+++ b/core/modules/block/block.admin.inc
@@ -6,6 +6,7 @@
  */
 
 use Drupal\block\Plugin\Core\Entity\Block;
+use Drupal\Core\Template\Attribute;
 
 /**
  * Page callback: Attaches CSS for the block region demo.
@@ -111,15 +112,19 @@ function block_admin_block_delete_submit($form, &$form_state) {
 }
 
 /**
- * Processes variables for block-admin-display-form.tpl.php.
+ * Prepares variables for block admin display form templates.
  *
- * The $variables array contains the following arguments:
- * - $form
+ * Default template: block-admin-display-form.html.twig.
  *
- * @see block-admin-display.tpl.php
- * @see theme_block_admin_display()
+ * @param array $variables
+ *   An associative array containing:
+ *   - form: A render element representing the form.
  */
 function template_preprocess_block_admin_display_form(&$variables) {
+  $header = array(t('Block'), t('Region'), t('Weight'), t('Operations'));
+  // @todo Remove/refactor pending http://drupal.org/node/1920886.
+  $children = $variables['form'];
+
   $variables['block_regions'] = $variables['form']['block_regions']['#value'];
   if (isset($variables['block_regions'][BLOCK_REGION_NONE])) {
     $variables['block_regions'][BLOCK_REGION_NONE] = t('Disabled');
@@ -127,11 +132,11 @@ function template_preprocess_block_admin_display_form(&$variables) {
 
   foreach ($variables['block_regions'] as $key => $value) {
     // Initialize an empty array for the region.
-    $variables['block_listing'][$key] = array();
+    $block_listing[$key] = array();
   }
 
   // Initialize disabled blocks array.
-  $variables['block_listing'][BLOCK_REGION_NONE] = array();
+  $block_listing[BLOCK_REGION_NONE] = array();
 
   // Add each block in the form to the appropriate place in the block listing.
   foreach (element_children($variables['form']['blocks']) as $i) {
@@ -144,15 +149,53 @@ function template_preprocess_block_admin_display_form(&$variables) {
     $block['region']['#attributes']['class'] = array('block-region-select', 'block-region-' . $region);
     $block['weight']['#attributes']['class'] = array('block-weight', 'block-weight-' . $region);
 
-    $variables['block_listing'][$region][$i] = new stdClass();
-    $variables['block_listing'][$region][$i]->row_class = !empty($block['#attributes']['class']) ? implode(' ', $block['#attributes']['class']) : '';
-    $variables['block_listing'][$region][$i]->block_modified = !empty($block['#attributes']['class']) && in_array('block-modified', $block['#attributes']['class']);
-    $variables['block_listing'][$region][$i]->block_title = drupal_render($block['info']);
-    $variables['block_listing'][$region][$i]->region_select = drupal_render($block['region']) . drupal_render($block['theme']);
-    $variables['block_listing'][$region][$i]->weight_select = drupal_render($block['weight']);
-    $variables['block_listing'][$region][$i]->operations = drupal_render($block['operations']);
-    $variables['block_listing'][$region][$i]->printed = FALSE;
+    $block_listing[$region][$i] = new stdClass();
+    $block_listing[$region][$i]->row_class = !empty($block['#attributes']['class']) ? implode(' ', $block['#attributes']['class']) : '';
+    $block_listing[$region][$i]->block_modified = !empty($block['#attributes']['class']) && in_array('block-modified', $block['#attributes']['class']);
+    $block_listing[$region][$i]->block_title = $block['info'];
+    // @todo Remove these drupal_render() calls.
+    $block_listing[$region][$i]->region_select = drupal_render($block['region']) . drupal_render($block['theme']);
+    $block_listing[$region][$i]->weight_select = $block['weight'];
+    $block_listing[$region][$i]->operations = $block['operations'];
+    $block_listing[$region][$i]->printed = FALSE;
   }
 
-  $variables['form_submit'] = drupal_render_children($variables['form']);
+  $rows = array();
+  foreach ($block_listing as $region => $block_list) {
+    $rows[] = array(
+      'data' => array(
+        array('data' => t($variables['block_regions'][$region]), 'colspan' => 4),
+      ),
+      'class' => array('region-title region-title-' . $region)
+    );
+    $rows[] = array(
+      'data' => array(
+        array('data' => '<em>'. t('No blocks in this region ') . '</em>', 'colspan' => 4),
+      ),
+      'class' => array('region-message', 'region-' . $region . '-message', empty($block_listing[$region]) ? 'region-empty' : 'region-populated')
+    );
+    foreach ($block_list as $key => $block) {
+      $rows[] = array(
+        'data' => array(
+          array('data' => $block->block_title),
+          array('data' => $block->region_select),
+          array('data' => $block->weight_select),
+          array('data' => $block->operations),
+        ),
+        'class' => array('draggable'),
+      );
+    }
+  }
+  $attributes = new Attribute(array('id' => 'blocks'));
+  drupal_add_tabledrag('blocks', 'order', 'sibling', 'block-weight');
+  $variables['table'] = array(
+    '#theme' => 'table',
+    '#header' => $header,
+    '#rows' => $rows,
+    '#attributes' => $attributes,
+  );
+  // Remove elements from the 'children' render array.
+  // @todo Refactor when http://drupal.org/node/1920886 is resolved.
+  unset($children['blocks'], $children['block_regions']);
+  $variables['children'] = drupal_render_children($children);
 }
diff --git a/core/modules/block/block.module b/core/modules/block/block.module
index ff804b2..cbf907c 100644
--- a/core/modules/block/block.module
+++ b/core/modules/block/block.module
@@ -535,6 +535,7 @@ function template_preprocess_block(&$variables) {
   $block_counter = &drupal_static(__FUNCTION__, array());
 
   $variables['block'] = (object) $variables['elements']['#block_config'];
+  $variables['subject'] = $variables['block']->subject;
 
   // All blocks get an independent counter for each region.
   if (!isset($block_counter[$variables['block']->region])) {
@@ -549,9 +550,6 @@ function template_preprocess_block(&$variables) {
 
   $variables['attributes']['class'][] = drupal_html_class('block-' . $variables['block']->module);
 
-  // Add default class for block content.
-  $variables['content_attributes']['class'][] = 'content';
-
   $variables['theme_hook_suggestions'][] = 'block__' . $variables['block']->region;
   $variables['theme_hook_suggestions'][] = 'block__' . $variables['block']->module;
   // Hyphens (-) and underscores (_) play a special role in theme suggestions.
diff --git a/core/modules/block/lib/Drupal/block/Tests/BlockStorageUnitTest.php b/core/modules/block/lib/Drupal/block/Tests/BlockStorageUnitTest.php
index d0c833a..5a14aaf 100644
--- a/core/modules/block/lib/Drupal/block/Tests/BlockStorageUnitTest.php
+++ b/core/modules/block/lib/Drupal/block/Tests/BlockStorageUnitTest.php
@@ -138,11 +138,13 @@ protected function renderTests() {
     // Test the rendering of a block.
     $output = entity_view($entity, 'block');
     $expected = array();
-    $expected[] = '  <div id="block-test-block"  class="block block-block-test">';
-    $expected[] = '';
+    $expected[] = '<div id="block-test-block" class="block block-block-test">';
+    $expected[] = '  ';
     $expected[] = '    ';
+    $expected[] = '';
     $expected[] = '  <div class="content">';
-    $expected[] = '      </div>';
+    $expected[] = '   ';
+    $expected[] = '  </div>';
     $expected[] = '</div>';
     $expected[] = '';
     $expected_output = implode("\n", $expected);
@@ -155,12 +157,14 @@ protected function renderTests() {
     $entity->set('label', 'Powered by Bananas');
     $output = entity_view($entity, 'block');
     $expected = array();
-    $expected[] = '  <div id="block-test-block"  class="block block-block-test">';
-    $expected[] = '';
-    $expected[] = '    <h2 class="">Powered by Bananas</h2>';
+    $expected[] = '<div id="block-test-block" class="block block-block-test">';
     $expected[] = '  ';
+    $expected[] = '      <h2 class="">Powered by Bananas</h2>';
+    $expected[] = '    ';
+    $expected[] = '';
     $expected[] = '  <div class="content">';
-    $expected[] = '      </div>';
+    $expected[] = '   ';
+    $expected[] = '  </div>';
     $expected[] = '</div>';
     $expected[] = '';
     $expected_output = implode("\n", $expected);
diff --git a/core/modules/block/lib/Drupal/block/Tests/BlockTemplateSuggestionsUnitTest.php b/core/modules/block/lib/Drupal/block/Tests/BlockTemplateSuggestionsUnitTest.php
index c469eb6..7b49110 100644
--- a/core/modules/block/lib/Drupal/block/Tests/BlockTemplateSuggestionsUnitTest.php
+++ b/core/modules/block/lib/Drupal/block/Tests/BlockTemplateSuggestionsUnitTest.php
@@ -51,11 +51,8 @@ function testBlockThemeHookSuggestions() {
       'module' => $block->get('module'),
     );
     $variables['elements']['#children'] = '';
-    // Test adding a class to the block content.
-    $variables['content_attributes']['class'][] = 'test-class';
     template_preprocess_block($variables);
     $this->assertEqual($variables['theme_hook_suggestions'], array('block__footer', 'block__system', 'block__system_menu_block', 'block__system_menu_block__menu_admin', 'block__machinename'));
-    $this->assertEqual($variables['content_attributes']['class'], array('test-class', 'content'), 'Default .content class added to block content_attributes_array');
   }
 
 }
diff --git a/core/modules/block/templates/block-admin-display-form.html.twig b/core/modules/block/templates/block-admin-display-form.html.twig
new file mode 100644
index 0000000..0a9fbc9
--- /dev/null
+++ b/core/modules/block/templates/block-admin-display-form.html.twig
@@ -0,0 +1,17 @@
+{#
+/**
+ * @file
+ * Default theme implementation to configure blocks.
+ *
+ * Available variables:
+ * - table: Draggable table containing blocks.
+ * - children: Child elements of the form that still need to be printed.
+ *
+ * @see template_preprocess()
+ * @see template_preprocess_block_admin_display_form()
+ *
+ * @ingroup themeable
+ */
+#}
+{{ table }}
+{{ children }}
diff --git a/core/modules/block/templates/block-admin-display-form.tpl.php b/core/modules/block/templates/block-admin-display-form.tpl.php
deleted file mode 100644
index 4fa3e70..0000000
--- a/core/modules/block/templates/block-admin-display-form.tpl.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-/**
- * @file
- * Default theme implementation to configure blocks.
- *
- * Available variables:
- * - $block_regions: An array of regions. Keyed by name with the title as value.
- * - $block_listing: An array of blocks keyed by region and then delta.
- * - $form_submit: Form submit button.
- *
- * Each $block_listing[$region] contains an array of blocks for that region.
- *
- * Each $data in $block_listing[$region] contains:
- * - $data->region_title: Region title for the listed block.
- * - $data->block_title: Block title.
- * - $data->region_select: Drop-down menu for assigning a region.
- * - $data->weight_select: Drop-down menu for setting weights.
- * - $data->operations: Block operations.
- *
- * @see template_preprocess_block_admin_display_form()
- * @see theme_block_admin_display()
- *
- * @ingroup themeable
- */
-?>
-<table id="blocks" class="sticky-enabled">
-  <thead>
-    <tr>
-      <th><?php print t('Block'); ?></th>
-      <th><?php print t('Region'); ?></th>
-      <th><?php print t('Weight'); ?></th>
-      <th><?php print t('Operations'); ?></th>
-    </tr>
-  </thead>
-  <tbody>
-    <?php $row = 0; ?>
-    <?php foreach ($block_regions as $region => $title): ?>
-      <tr class="region-title region-title-<?php print $region?>">
-        <td colspan="5"><?php print $title; ?></td>
-      </tr>
-      <tr class="region-message region-<?php print $region?>-message <?php print empty($block_listing[$region]) ? 'region-empty' : 'region-populated'; ?>">
-        <td colspan="5"><em><?php print t('No blocks in this region'); ?></em></td>
-      </tr>
-      <?php foreach ($block_listing[$region] as $delta => $data): ?>
-      <tr class="draggable <?php print $row % 2 == 0 ? 'odd' : 'even'; ?><?php print $data->row_class ? ' ' . $data->row_class : ''; ?>">
-        <td class="block"><?php print $data->block_title; ?></td>
-        <td><?php print $data->region_select; ?></td>
-        <td><?php print $data->weight_select; ?></td>
-        <td><?php print $data->operations; ?></td>
-      </tr>
-      <?php $row++; ?>
-      <?php endforeach; ?>
-    <?php endforeach; ?>
-  </tbody>
-</table>
-
-<?php print $form_submit; ?>
diff --git a/core/modules/block/templates/block.html.twig b/core/modules/block/templates/block.html.twig
new file mode 100644
index 0000000..1fc3256
--- /dev/null
+++ b/core/modules/block/templates/block.html.twig
@@ -0,0 +1,50 @@
+{#
+/**
+ * @file
+ * Default theme implementation to display a container.
+ *
+ * Available variables:
+ * - subject: Block subject.
+ * - contents: The contents of this block.
+ * - attributes: Remaining html attributes for the containing element.
+ * - attributes.id: A valid html ID and guaranteed unique.
+ * - attributes.class: Classes that can be used to style contextually through
+ *   CSS. These can be manipulated through from preprocess functions. The
+ *   default values can be one or more of the following:
+ *   - block: The current template type, i.e., "theming hook".
+ *   - block-[module]: The module generating the block. For example, the user
+ *     module is responsible for handling the default user navigation block. In
+ *     that case the class would be 'block-user'.
+ * - block.module: Module that generated the block.
+ * - block.delta: An ID for the block, unique within each module.
+ * - block.region: The block region embedding the current block.
+ *
+ * Helper variables:
+ * - block_id: Counter dependent on each block region.
+ * - id: Same output as $block_id but independent of any block region.
+ * - is_front: Flags true when presented in the front page.
+ * - logged_in: Flags true when the current user is a logged-in member.
+ * - is_admin: Flags true when the current user is an administrator.
+ *
+ * @TODO update include path once http://drupal.org/node/1777532 is resolved.
+ *
+ * @see template_preprocess()
+ * @see template_preprocess_container()
+ *
+ * @ingroup themeable
+ */
+ @todo Remove the ID since blocks can be added more than once on a page.
+ @todo Remove the div around content - and make sure this doesn't break any
+  CSS defined in modules.
+#}
+<div id="{{ block_html_id }}" class="{{ attributes.class }}"{{ attributes }}>
+  {{ title_prefix }}
+  {% if subject %}
+    <h2{{ title_attributes }}>{{ subject }}</h2>
+  {% endif %}
+  {{ title_suffix }}
+
+  <div class="content {{- content_attributes.class }}"{{ content_attributes }}>
+   {{ content }}
+  </div>
+</div>
diff --git a/core/modules/block/templates/block.tpl.php b/core/modules/block/templates/block.tpl.php
deleted file mode 100644
index 8c42131..0000000
--- a/core/modules/block/templates/block.tpl.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-/**
- * @file
- * Default theme implementation to display a block.
- *
- * Available variables:
- * - $block->subject: Block title.
- * - $content: Block content.
- * - $block->module: Module that generated the block.
- * - $block->delta: An ID for the block, unique within each module.
- * - $block->region: The block region embedding the current block.
- * - $attributes: An instance of Attributes class that can be manipulated as an
- *    array and printed as a string.
- *    It includes the 'class' information, which includes:
- *   - block: The current template type, i.e., "theming hook".
- *   - block-[module]: The module generating the block. For example, the user
- *     module is responsible for handling the default user navigation block. In
- *     that case the class would be 'block-user'.
- * - $title_prefix (array): An array containing additional output populated by
- *   modules, intended to be displayed in front of the main title tag that
- *   appears in the template.
- * - $title_suffix (array): An array containing additional output populated by
- *   modules, intended to be displayed after the main title tag that appears in
- *   the template.
- *
- * Helper variables:
- * - $block_zebra: Outputs 'odd' and 'even' dependent on each block region.
- * - $zebra: Same output as $block_zebra but independent of any block region.
- * - $block_id: Counter dependent on each block region.
- * - $id: Same output as $block_id but independent of any block region.
- * - $is_front: Flags true when presented in the front page.
- * - $logged_in: Flags true when the current user is a logged-in member.
- * - $is_admin: Flags true when the current user is an administrator.
- * - $block_html_id: A valid HTML ID and guaranteed unique.
- *
- * @see template_preprocess()
- * @see template_preprocess_block()
- * @see template_process()
- *
- * @ingroup themeable
- */
-?>
-<?php if (isset($block_html_id)): ?>
-  <div id="<?php print $block_html_id; ?>" <?php print $attributes; ?>>
-<?php else: ?>
-  <div <?php print $attributes; ?>>
-<?php endif; ?>
-
-  <?php print render($title_prefix); ?>
-<?php if ($block->subject): ?>
-  <h2<?php print $title_attributes; ?>><?php print $block->subject ?></h2>
-<?php endif;?>
-  <?php print render($title_suffix); ?>
-
-  <div<?php print $content_attributes; ?>>
-    <?php print $content ?>
-  </div>
-</div>
