diff --git a/core/modules/system/system.admin.inc b/core/modules/system/system.admin.inc
index 29237fd..0f914a1 100644
--- a/core/modules/system/system.admin.inc
+++ b/core/modules/system/system.admin.inc
@@ -5,6 +5,7 @@
  * Admin page callbacks for the system module.
  */
 
+use Drupal\Core\Template\Attribute;
 use Drupal\system\DateFormatInterface;
 use Symfony\Component\HttpFoundation\RedirectResponse;
 use Symfony\Component\HttpFoundation\Response;
@@ -138,16 +139,12 @@ function system_themes_page() {
   uasort($theme_groups['enabled'], 'system_sort_themes');
   drupal_alter('system_themes_page', $theme_groups);
 
-  $build = array(
-    '#sorted' => TRUE,
-  );
-  $build['system_themes_page'] = array(
+  return array(
     '#theme' => 'system_themes_page',
     '#theme_groups' => $theme_groups,
     '#theme_group_titles' => $theme_group_titles,
+    '#admin_theme_options' => $admin_theme_options,
   );
-  $build['admin_form'] = drupal_get_form('system_themes_admin_form', $admin_theme_options);
-  return $build;
 }
 
 /**
@@ -286,45 +283,9 @@ function system_sort_themes($a, $b) {
 }
 
 /**
- * Returns HTML for an administrative block for display.
- *
- * @param $variables
- *   An associative array containing:
- *   - block: An array containing information about the block:
- *     - show: A Boolean whether to output the block. Defaults to FALSE.
- *     - title: The block's title.
- *     - content: (optional) Formatted content for the block.
- *     - description: (optional) Description of the block. Only output if
- *       'content' is not set.
+ * Prepares variables for administrative content block template.
  *
- * @ingroup themeable
- */
-function theme_admin_block($variables) {
-  $block = $variables['block'];
-  $output = '';
-
-  // Don't display the block if it has no content to display.
-  if (empty($block['show'])) {
-    return $output;
-  }
-
-  $output .= '<div class="admin-panel">';
-  if (!empty($block['title'])) {
-    $output .= '<h3>' . $block['title'] . '</h3>';
-  }
-  if (!empty($block['content'])) {
-    $output .= '<div class="body">' . render($block['content']) . '</div>';
-  }
-  else {
-    $output .= '<div class="description">' . $block['description'] . '</div>';
-  }
-  $output .= '</div>';
-
-  return $output;
-}
-
-/**
- * Returns HTML for the content of an administrative block.
+ * Default template: admin-block-content.html.twig.
  *
  * @param $variables
  *   An associative array containing:
@@ -335,29 +296,29 @@ function theme_admin_block($variables) {
  *
  * @ingroup themeable
  */
-function theme_admin_block_content($variables) {
-  $content = $variables['content'];
-  $output = '';
-
-  if (!empty($content)) {
-    $class = 'admin-list';
-    if ($compact = system_admin_compact_mode()) {
-      $class .= ' compact';
+function template_preprocess_admin_block_content(&$variables) {
+  if (!empty($variables['content'])) {
+    $compact = system_admin_compact_mode();
+    $variables['attributes'] = array('class' => array('admin-list'));
+    if ($compact) {
+      $variables['attributes']['class'][] = 'compact';
     }
-    $output .= '<dl class="' . $class . '">';
-    foreach ($content as $item) {
-      $output .= '<dt>' . l($item['title'], $item['href'], $item['localized_options']) . '</dt>';
+    foreach ($variables['content'] as $key => $item) {
+      $variables['content'][$key]['link'] = l($item['title'], $item['href'], $item['localized_options']);
       if (!$compact && isset($item['description'])) {
-        $output .= '<dd>' . filter_xss_admin($item['description']) . '</dd>';
+        $variables['content'][$key]['description'] = filter_xss_admin($item['description']);
+      }
+      else {
+        $variables['content'][$key]['description'] = FALSE;
       }
     }
-    $output .= '</dl>';
   }
-  return $output;
 }
 
 /**
- * Returns HTML for an administrative page.
+ * Prepares variables for administrative index page templates.
+ *
+ * Default template: admin-page.html.twig.
  *
  * @param $variables
  *   An associative array containing:
@@ -368,44 +329,34 @@ function theme_admin_block_content($variables) {
  *
  * @ingroup themeable
  */
-function theme_admin_page($variables) {
-  $blocks = $variables['blocks'];
-
+function template_preprocess_admin_page(&$variables) {
+  $variables['system_compact_link'] = array(
+    '#theme' => 'system_compact_link',
+  );
+  $variables['containers'] = array();
   $stripe = 0;
-  $container = array();
-
-  foreach ($blocks as $block) {
-    $admin_block = array(
-      '#theme' => 'admin_block',
-      '#block' => $block,
-    );
-    if ($block_output = drupal_render($admin_block)) {
+  foreach ($variables['blocks'] as $block) {
+    $block = (array) $block;
+    if ($block['show'] = !empty($block['content'])) {
       if (empty($block['position'])) {
         // perform automatic striping.
         $block['position'] = ++$stripe % 2 ? 'left' : 'right';
       }
-      if (!isset($container[$block['position']])) {
-        $container[$block['position']] = '';
+      if (!isset($variables['containers'][$block['position']])) {
+        $variables['containers'][$block['position']] = array('blocks' => array());
       }
-      $container[$block['position']] .= $block_output;
+      $variables['containers'][$block['position']]['blocks'][] = array(
+        '#theme' => 'admin_block',
+        '#block' => $block,
+      );
     }
   }
-
-  $system_compact_link = array('#theme' => 'system_compact_link');
-  $output = '<div class="admin clearfix">';
-  $output .= drupal_render($system_compact_link);
-
-  foreach ($container as $id => $data) {
-    $output .= '<div class="' . $id . ' clearfix">';
-    $output .= $data;
-    $output .= '</div>';
-  }
-  $output .= '</div>';
-  return $output;
 }
 
 /**
- * Returns HTML for the output of the admin index page.
+ * Prepares variables for admin index template.
+ *
+ * Default template: system-admin-index.html.twig.
  *
  * @param $variables
  *   An associative array containing:
@@ -413,59 +364,39 @@ function theme_admin_page($variables) {
  *
  * @ingroup themeable
  */
-function theme_system_admin_index($variables) {
-  $menu_items = $variables['menu_items'];
-
-  $container = array('left' => '', 'right' => '');
-  $flip = array('left' => 'right', 'right' => 'left');
-  $position = 'left';
-
+function template_preprocess_system_admin_index(&$variables) {
+  $variables['system_compact_link'] = array(
+    '#theme' => 'system_compact_link'
+  );
+  $variables['containers'] = array();
+  $stripe = 0;
   // Iterate over all modules.
-  foreach ($menu_items as $module => $block) {
+  foreach ($variables['menu_items'] as $module => $block) {
     list($description, $items) = $block;
-
+    $position = ++$stripe % 2 ? 'left' : 'right';
     // Output links.
     if (count($items)) {
-      $admin_block_content = array(
-        '#theme' => 'admin_block_content',
-        '#content' => $items,
-      );
-      $block = array();
-      $block['title'] = $module;
-      $block['content'] = drupal_render($admin_block_content);
-      $block['description'] = t($description);
-      $block['show'] = TRUE;
-
-      $admin_block = array(
+      $variables['containers'][$position]['blocks'][] = array(
         '#theme' => 'admin_block',
-        '#block' => $block,
+        '#block' => array(
+          'position' => $position,
+          'title' => $module,
+          'show' => TRUE,
+          'content' => array(
+            '#theme' => 'admin_block_content',
+            '#content' => $items,
+          ),
+          'description' => t($description),
+        ),
       );
-      if ($block_output = drupal_render($admin_block)) {
-        if (!isset($block['position'])) {
-          // Perform automatic striping.
-          $block['position'] = $position;
-          $position = $flip[$position];
-        }
-        $container[$block['position']] .= $block_output;
-      }
     }
   }
-
-  $system_compact_link = array('#theme' => 'system_compact_link');
-  $output = '<div class="admin clearfix">';
-  $output .= drupal_render($system_compact_link);
-  foreach ($container as $id => $data) {
-    $output .= '<div class="' . $id . ' clearfix">';
-    $output .= $data;
-    $output .= '</div>';
-  }
-  $output .= '</div>';
-
-  return $output;
 }
 
 /**
- * Returns HTML for the status report.
+ * Prepares variables for status report template.
+ *
+ * Default template: status-report.html.twig.
  *
  * This theme function is dependent on install.inc being loaded, because
  * that's where the constants are defined.
@@ -485,8 +416,7 @@ function theme_system_admin_index($variables) {
  *
  * @ingroup themeable
  */
-function theme_status_report($variables) {
-  $requirements = $variables['requirements'];
+function template_preprocess_status_report(&$variables) {
   $severities = array(
     REQUIREMENT_INFO => array(
       'title' => t('Info'),
@@ -505,11 +435,8 @@ function theme_status_report($variables) {
       'class' => 'error',
     ),
   );
-  $output = '<table class="system-status-report"><thead><tr class="visually-hidden">';
-  $output .= '<th>' . t('Status') . '</th><th>' . t('Component') . '</th><th>' . t('Details') . '</th>';
-  $output .= '</tr></thead><tbody>';
 
-  foreach ($requirements as $requirement) {
+  foreach ($variables['requirements'] as $i => $requirement) {
     // Always use the explicit requirement severity, if defined. Otherwise,
     // default to REQUIREMENT_OK in the installer to visually confirm that
     // installation requirements are met. And default to REQUIREMENT_INFO to
@@ -523,29 +450,10 @@ function theme_status_report($variables) {
     else {
       $severity = $severities[REQUIREMENT_INFO];
     }
-    // hook_requirements does not require value to be set. Set to null if not:
-    if (isset($requirement['value'])) {
-      $value = $requirement['value'];
-    }
-    else {
-      $value = NULL;
-    }
 
-    $severity['icon'] = '<div title="' . $severity['title'] . '"><span class="visually-hidden">' . $severity['title'] . '</span></div>';
-
-    // Output table rows.
-    $output .= '<tr class="' . $severity['class'] . '">';
-    $output .= '<td class="status-icon">' . $severity['icon'] . '</td>';
-    $output .= '<td class="status-title">' . $requirement['title'] . '</td>';
-    $output .= '<td class="status-value">' . $value;
-    if (!empty($requirement['description'])) {
-      $output .= '<div class="description">' . $requirement['description'] . '</div>';
-    }
-    $output .= '</td></tr>';
+    $variables['requirements'][$i]['severity_class'] = $severity['class'];
+    $variables['requirements'][$i]['severity_title'] = $severity['title'];
   }
-
-  $output .= '</tbody></table>';
-  return $output;
 }
 
 /**
@@ -629,19 +537,6 @@ function theme_system_modules_details($variables) {
 }
 
 /**
- * Returns HTML for a message about incompatible modules.
- *
- * @param $variables
- *   An associative array containing:
- *   - message: The form array representing the currently disabled modules.
- *
- * @ingroup themeable
- */
-function theme_system_modules_incompatible($variables) {
-  return '<div class="incompatible">' . $variables['message'] . '</div>';
-}
-
-/**
  * Returns HTML for a table of currently disabled modules.
  *
  * @param $variables
@@ -697,7 +592,9 @@ function theme_system_modules_uninstall($variables) {
 }
 
 /**
- * Returns HTML for the Appearance page.
+ * Prepares variables for the appearance page template.
+ *
+ * Default template: system-themes-page.html.twig.
  *
  * @param $variables
  *   An associative array containing:
@@ -706,10 +603,10 @@ function theme_system_modules_uninstall($variables) {
  *
  * @ingroup themeable
  */
-function theme_system_themes_page($variables) {
+function template_preprocess_system_themes_page(&$variables) {
+  $groups = array();
   $theme_groups = $variables['theme_groups'];
-
-  $output = '<div id="system-themes-page">';
+  $variables['attributes']['id'] = 'system-themes-page';
 
   foreach ($variables['theme_group_titles'] as $state => $title) {
     if (!count($theme_groups[$state])) {
@@ -717,65 +614,106 @@ function theme_system_themes_page($variables) {
       continue;
     }
     // Start new theme group.
-    $output .= '<div class="system-themes-list system-themes-list-'. $state .' clearfix"><h2>'. $title .'</h2>';
+    $theme_group = array();
+    $theme_group['state'] = $state;
+    $theme_group['title'] = $title;
+    $theme_group['themes'] = array();
+    $theme_group['attributes'] = new Attribute(array('class' => array('system-themes-list', 'system-themes-list-' . $state, 'clearfix')));
+
 
     foreach ($theme_groups[$state] as $theme) {
+      $current_theme = array();
 
-      // Theme the screenshot.
+      // Screenshot depicting the theme.
       if ($theme->screenshot) {
-        $image = array(
+        $current_theme['screenshot'] = array(
           '#theme' => 'image',
           '#uri' => $theme->screenshot['uri'],
           '#alt' => $theme->screenshot['alt'],
           '#title' => $theme->screenshot['title'],
           '#attributes' => $theme->screenshot['attributes'],
         );
-        $screenshot = drupal_render($image);
       }
       else {
-        $screenshot = '<div class="no-screenshot"><div class="no-screenshot__text">' . t('no screenshot') . '</div></div>';
+        $current_theme['screenshot'] = '<div class="no-screenshot"><div class="no-screenshot__text">' . t('no screenshot') . '</div></div>';
       }
 
       // Localize the theme description.
-      $description = t($theme->info['description']);
+      $current_theme['description'] = t($theme->info['description']);
 
       // Style theme info
-      $notes = count($theme->notes) ? ' (' . join(', ', $theme->notes) . ')' : '';
       $theme->classes[] = 'theme-selector';
       $theme->classes[] = 'clearfix';
-      $output .= '<div class="'. join(' ', $theme->classes) .'">' . $screenshot . '<div class="theme-info"><h3>' . $theme->info['name'] . ' ' . (isset($theme->info['version']) ? $theme->info['version'] : '') . $notes . '</h3><div class="theme-description">' . $description . '</div>';
+      $current_theme['attributes'] = new Attribute(array('class' => $theme->classes));
+      $current_theme['name'] = $theme->info['name'];
+      $current_theme['version'] = isset($theme->info['version']) ? $theme->info['version'] : '';
+      $current_theme['notes'] = count($theme->notes) ? '(' . join(', ', $theme->notes) . ')' : '';
 
       // Make sure to provide feedback on compatibility.
       if (!empty($theme->incompatible_core)) {
-        $output .= '<div class="incompatible">' . t('This version is not compatible with Drupal !core_version and should be replaced.', array('!core_version' => \Drupal::CORE_COMPATIBILITY)) . '</div>';
+        $current_theme['compatibility'] = t('This version is not compatible with Drupal !core_version and should be replaced.', array('!core_version' => \Drupal::CORE_COMPATIBILITY));
       }
       elseif (!empty($theme->incompatible_php)) {
         if (substr_count($theme->info['php'], '.') < 2) {
           $theme->info['php'] .= '.*';
         }
-        $output .= '<div class="incompatible">' . t('This theme requires PHP version @php_required and is incompatible with PHP version !php_version.', array('@php_required' => $theme->info['php'], '!php_version' => phpversion())) . '</div>';
+        $current_theme['compatibility'] = t('This theme requires PHP version @php_required and is incompatible with PHP version !php_version.', array('@php_required' => $theme->info['php'], '!php_version' => phpversion()));
       }
       elseif (!empty($theme->incompatible_base)) {
-        $output .= '<div class="incompatible">' . t('This theme requires the base theme @base_theme to operate correctly.', array('@base_theme' => $theme->info['base theme'])) . '</div>';
+        $current_theme['compatibility'] = t('This theme requires the base theme @base_theme to operate correctly.', array('@base_theme' => $theme->info['base theme']));
       }
       elseif (!empty($theme->incompatible_engine)) {
-        $output .= '<div class="incompatible">' . t('This theme requires the theme engine @theme_engine to operate correctly.', array('@theme_engine' => $theme->info['engine'])) . '</div>';
+        $current_theme['compatibility'] = t('This theme requires the theme engine @theme_engine to operate correctly.', array('@theme_engine' => $theme->info['engine']));
       }
       else {
-        $links = array(
+        $current_theme['compatibility'] = array(
           '#theme' => 'links',
           '#links' => $theme->operations,
-          '#attributes' => array(
-            'class' => array('operations', 'clearfix'),
-          ),
+          '#attributes' => array('class' => array('operations', 'clearfix')),
         );
-        $output .= drupal_render($links);
       }
-      $output .= '</div></div>';
+      $theme_group['themes'][] = $current_theme;
     }
-    $output .= '</div>';
+    $groups[] = $theme_group;
   }
-  $output .= '</div>';
+  $variables['theme_groups'] = $groups;
+  $variables['admin_form'] = drupal_get_form('system_themes_admin_form', $variables['admin_theme_options']);
 
-  return $output;
+}
+
+/**
+ * Page callback: Displays edit date format links for each language.
+ *
+ * @see locale_menu()
+ */
+function system_date_format_language_overview_page() {
+  $header = array(t('Language'), t('Operations'));
+
+  $languages = language_list();
+  foreach ($languages as $langcode => $language) {
+    $row = array();
+    $row[] = $language->name;
+    $links = array();
+    $links['edit'] = array(
+      'title' => t('Edit'),
+      'href' => "admin/config/regional/date-time/locale/$langcode/edit",
+    );
+    $links['reset'] = array(
+      'title' => t('Reset'),
+      'href' => "admin/config/regional/date-time/locale/$langcode/reset",
+    );
+    $row[] = array(
+      'data' => array(
+        '#type' => 'operations',
+        '#links' => $links,
+      ),
+    );
+    $rows[] = $row;
+  }
+
+  return array(
+    '#theme' => 'table',
+    '#header' => $header,
+    '#rows' => $rows
+  );
 }
diff --git a/core/modules/system/system.api.php b/core/modules/system/system.api.php
index 2bff21f..fa35299 100644
--- a/core/modules/system/system.api.php
+++ b/core/modules/system/system.api.php
@@ -1418,7 +1418,6 @@ function hook_theme_registry_alter(&$theme_registry) {
  *   An associative array of default template variables, as set up by
  *   _template_preprocess_default_variables(). Passed by reference.
  *
- * @see template_preprocess()
  * @see _template_preprocess_default_variables()
  */
 function hook_template_preprocess_default_variables_alter(&$variables) {
diff --git a/core/modules/system/system.module b/core/modules/system/system.module
index 78905da..f3fc66c 100644
--- a/core/modules/system/system.module
+++ b/core/modules/system/system.module
@@ -140,10 +140,12 @@ function system_theme() {
   return array_merge(drupal_common_theme(), array(
     'system_themes_page' => array(
       'variables' => array(
-        'theme_groups' => NULL,
-        'theme_group_titles' => NULL,
+        'theme_groups' => array(),
+        'theme_group_titles' => array(),
+        'admin_theme_options' => array(),
       ),
       'file' => 'system.admin.inc',
+      'template' => 'system-themes-page',
     ),
     'system_config_form' => array(
       'render element' => 'form',
@@ -155,10 +157,6 @@ function system_theme() {
       'render element' => 'form',
       'file' => 'system.admin.inc',
     ),
-    'system_modules_incompatible' => array(
-      'variables' => array('message' => NULL),
-      'file' => 'system.admin.inc',
-    ),
     'system_modules_uninstall' => array(
       'render element' => 'form',
       'file' => 'system.admin.inc',
@@ -166,28 +164,35 @@ function system_theme() {
     'status_report' => array(
       'variables' => array('requirements' => NULL),
       'file' => 'system.admin.inc',
+      'template' => 'status-report'
     ),
     'admin_page' => array(
       'variables' => array('blocks' => NULL),
       'file' => 'system.admin.inc',
+      'template' => 'admin-page',
     ),
     'admin_block' => array(
       'variables' => array('block' => NULL),
       'file' => 'system.admin.inc',
+      'template' => 'admin-block',
     ),
     'admin_block_content' => array(
       'variables' => array('content' => NULL),
       'file' => 'system.admin.inc',
+      'template' => 'admin-block-content',
     ),
     'system_admin_index' => array(
       'variables' => array('menu_items' => NULL),
       'file' => 'system.admin.inc',
+      'template' => 'system-admin-index',
     ),
     'system_powered_by' => array(
       'variables' => array(),
+      'template' => 'system-powered-by',
     ),
     'system_compact_link' => array(
       'variables' => array(),
+      'template' => 'system-compact-link',
     ),
   ));
 }
@@ -2965,30 +2970,36 @@ function system_time_zones($blank = NULL) {
 }
 
 /**
- * Returns HTML for the Powered by Drupal text.
- *
- * @ingroup themeable
+ * Menu callback; Retrieve a JSON object containing a suggested time zone name.
  */
-function theme_system_powered_by() {
-  return '<span>' . t('Powered by <a href="@poweredby">Drupal</a>', array('@poweredby' => 'http://drupal.org')) . '</span>';
+function system_timezone($abbreviation = '', $offset = -1, $is_daylight_saving_time = NULL) {
+  // An abbreviation of "0" passed in the callback arguments should be
+  // interpreted as the empty string.
+  $abbreviation = $abbreviation ? $abbreviation : '';
+  $timezone = timezone_name_from_abbr($abbreviation, intval($offset), $is_daylight_saving_time);
+  return new JsonResponse($timezone);
 }
 
 /**
- * Returns HTML for a link to show or hide inline help descriptions.
+ * Prepare variables for system compact link templates.
+ *
+ * Default template: system-compact-link.html.twig.
  *
  * @ingroup themeable
  */
-function theme_system_compact_link() {
-  $output = '<div class="compact-link">';
+function template_preprocess_system_compact_link(&$variables) {
   if (system_admin_compact_mode()) {
-    $output .= l(t('Show descriptions'), 'admin/compact/off', array('attributes' => array('title' => t('Expand layout to include descriptions.')), 'query' => drupal_get_destination()));
+    $variables['link'] = l(t('Show descriptions'), 'admin/compact/off', array(
+      'query' => array(drupal_get_destination()),
+      'attributes' => array('title' => t('Expand layout to include descriptions.')),
+    ));
   }
   else {
-    $output .= l(t('Hide descriptions'), 'admin/compact/on', array('attributes' => array('title' => t('Compress layout by hiding descriptions.')), 'query' => drupal_get_destination()));
+    $variables['link'] = l(t('Hide descriptions'), 'admin/compact/on', array(
+      'query' => array(drupal_get_destination()),
+      'attributes' => array('title' => t('Compress layout by hiding descriptions.')),
+    ));
   }
-  $output .= '</div>';
-
-  return $output;
 }
 
 /**
diff --git a/core/modules/system/templates/admin-block-content.html.twig b/core/modules/system/templates/admin-block-content.html.twig
new file mode 100644
index 0000000..d3fbd5a
--- /dev/null
+++ b/core/modules/system/templates/admin-block-content.html.twig
@@ -0,0 +1,28 @@
+{#
+/**
+ * @file
+ * Default theme implementation for the content of an administrative block.
+ *
+ * Available variables:
+ * - content: A list containing information about the block. Each element
+ *   of the array represents an administrative menu item, and must at least
+ *   contain the keys 'title', 'href', and 'localized_options', which are
+ *   passed to l(). A 'description' key may also be provided.
+ * - attributes: HTML attributes to be aded to the element.
+ * - is_compact_mode: It defines if compact mode is used.
+ *
+ * @see template_preprocess_admin_block_content()
+ *
+ * @ingroup themeable
+ */
+#}
+{% if content %}
+  <dl{{ attributes }}>
+    {% for item in content %}
+      <dt>{{ item.link }}</dt>
+      {% if item.description %}
+        <dd>{{ item.description }}</dd>
+      {% endif %}
+    {% endfor %}
+  </dl>
+{% endif %}
diff --git a/core/modules/system/templates/admin-block.html.twig b/core/modules/system/templates/admin-block.html.twig
new file mode 100644
index 0000000..36c8d43
--- /dev/null
+++ b/core/modules/system/templates/admin-block.html.twig
@@ -0,0 +1,30 @@
+{#
+/**
+ * @file
+ * Default theme implementation for an administrative block.
+ *
+ * Available variables:
+ * - block: An array of information about the block, including:
+ *   - show: A boolean flag indicating if the block should be displayed.
+ *   - title: The block title.
+ *   - content: (optional) The content of the block.
+ *   - description: (optional) A description of the block.
+ *     (description should only be output if content is not available).
+ *
+ * @see template_preprocess_admin_block()
+ *
+ * @ingroup themeable
+ */
+#}
+{% if block.show %}
+  <div class="admin-panel">
+    {% if block.title %}
+      <h3>{{ block.title }}</h3>
+    {% endif %}
+    {% if block.content %}
+      <div class="body">{{ block.content }}</div>
+    {% elseif block.description %}
+      <div class="description">{{ block.description }}</div>
+    {% endif %}
+  </div>
+{% endif %}
diff --git a/core/modules/system/templates/admin-page.html.twig b/core/modules/system/templates/admin-page.html.twig
new file mode 100644
index 0000000..5a7d9b1
--- /dev/null
+++ b/core/modules/system/templates/admin-page.html.twig
@@ -0,0 +1,27 @@
+{#
+/**
+ * @file
+ * Default theme implementation for an administrative page.
+ *
+ * Available variables:
+ * - system_compact_link: Themed link to toggle compact view.
+ * - containers: An list of administrative blocks keyed by position: left or
+ *   right. Contains:
+ *   - blocks: A list of blocks within a container.
+ *
+ *
+ * @see template_preprocess_admin_page()
+ *
+ * @ingroup themeable
+ */
+#}
+<div class="admin clearfix">
+  {{ system_compact_link }}
+  {% for position, container in containers %}
+    <div class="{{ position }} clearfix">
+      {% for block in container.blocks %}
+        {{ block }}
+      {% endfor %}
+    </div>
+  {% endfor %}
+</div>
diff --git a/core/modules/system/templates/datetime.html.twig b/core/modules/system/templates/datetime.html.twig
index 25ef788..be24df5 100644
--- a/core/modules/system/templates/datetime.html.twig
+++ b/core/modules/system/templates/datetime.html.twig
@@ -25,5 +25,4 @@
  * @see http://www.w3.org/TR/html5-author/the-time-element.html#attr-time-datetime
  */
 #}
-{# @todo Revisit once http://drupal.org/node/1825952 is resolved. #}
 <time{{ attributes }}>{{ html ? text|raw : text|escape }}</time>
diff --git a/core/modules/system/templates/status-report.html.twig b/core/modules/system/templates/status-report.html.twig
new file mode 100644
index 0000000..5da07f6
--- /dev/null
+++ b/core/modules/system/templates/status-report.html.twig
@@ -0,0 +1,43 @@
+{#
+/**
+ * Default theme implementation for the status report.
+ *
+ * Available variables:
+ * - requirements: Contains multiple requirement instances.
+ *   Each requirement contains:
+ *   - title: The title of the requirement.
+ *   - value: (optional) The requirement's status.
+ *   - description: (optional) The requirement's description.
+ *   - severity_title: The title of the severity.
+ *   - severity_class: The HTML class of the severity.
+ *
+ * @see template_preprocess_status_report()
+ *
+ * @ingroup themeable
+ */
+#}
+<table class="system-status-report">
+  <thead>
+    <tr class="element-invisible">
+      <th>{{ 'Status'|t }}</th><th>{{ 'Component'|t }}</th><th>{{ 'Details'|t }}</th>
+    </tr>
+  </thead>
+  <tbody>
+  {% for requirement in requirements %}
+    <tr class="{{ requirement.severity_class }}">
+      <td class="status-icon">
+        <div title="{{ requirement.severity_title }}">
+          <span class="element-invisible">{{ requirement.severity_title }}</span>
+        </div>
+      </td>
+      <td class="status-title">{{ requirement.title }}</td>
+      <td class="status-value">
+        {{ requirement.value }}
+        {% if requirement.description %}
+          <div class="description">{{ requirement.description }}</div>
+        {% endif %}
+      </td>
+    </tr>
+  {% endfor %}
+  </tbody>
+</table>
diff --git a/core/modules/system/templates/system-admin-index.html.twig b/core/modules/system/templates/system-admin-index.html.twig
new file mode 100644
index 0000000..9b3282f
--- /dev/null
+++ b/core/modules/system/templates/system-admin-index.html.twig
@@ -0,0 +1,24 @@
+{#
+/**
+ * @file
+ * Default theme implementation for the admin index page.
+ *
+ * Available variables:
+ * - system_compact_link: Themed link to toggle compact view.
+ * - container: Container for admin blocks.
+ *
+ * @see template_preprocess_system_admin_index()
+ *
+ * @ingroup themeable
+ */
+#}
+<div class="admin clearfix">
+  {{ system_compact_link }}
+  {% for position, container in containers %}
+    <div class="{{ position }} clearfix">
+      {% for block in container.blocks %}
+        {{ block }}
+      {% endfor %}
+    </div>
+  {% endfor %}
+</div>
diff --git a/core/modules/system/templates/system-compact-link.html.twig b/core/modules/system/templates/system-compact-link.html.twig
new file mode 100644
index 0000000..2c021a5
--- /dev/null
+++ b/core/modules/system/templates/system-compact-link.html.twig
@@ -0,0 +1,12 @@
+{#
+/**
+ * @file
+ * Default theme implementation for a link to show or hide inline help
+ *   descriptions.
+ *
+ * @see template_preprocess_system_compact_link()
+ *
+ * @ingroup themeable
+ */
+#}
+<div class="compact-link">{{ link }}</div>
diff --git a/core/modules/system/templates/system-modules-details.html.twig b/core/modules/system/templates/system-modules-details.html.twig
new file mode 100644
index 0000000..966c03e
--- /dev/null
+++ b/core/modules/system/templates/system-modules-details.html.twig
@@ -0,0 +1,14 @@
+{#
+/**
+ * @file
+ * Default theme implementation to display the modules form.
+ *
+ * Available variables:
+ * - content: File form element html.
+ *
+ * @see template_preprocess_system_modules_details()
+ *
+ * @ingroup themeable
+ */
+#}
+{{ content }}
diff --git a/core/modules/system/templates/system-powered-by.html.twig b/core/modules/system/templates/system-powered-by.html.twig
new file mode 100644
index 0000000..4223684
--- /dev/null
+++ b/core/modules/system/templates/system-powered-by.html.twig
@@ -0,0 +1,11 @@
+{#
+/**
+ * @file
+ * Default theme implementation for the Powered by Drupal text.
+ *
+ * @see template_preprocess_system_powered_by()
+ *
+ * @ingroup themeable
+ */
+#}
+<span>{{ 'Powered by <a href="http://drupal.org">Drupal</a>'|t }}</span>
diff --git a/core/modules/system/templates/system-themes-page.html.twig b/core/modules/system/templates/system-themes-page.html.twig
new file mode 100644
index 0000000..d931ce2
--- /dev/null
+++ b/core/modules/system/templates/system-themes-page.html.twig
@@ -0,0 +1,59 @@
+{#
+/**
+ * @file
+ * Default theme implementation for the Appearance page.
+ *
+ * Available variables:
+ * - attributes: HTML element attributes.
+ * - theme_groups: A list of theme groups.
+ *
+ * Each theme_groups[group] contains a list of theme groups.
+ *
+ * Each group in theme_groups[group] contains:
+ * - attributes: Element attributes specific to this group.
+ * - title: Title for the theme group.
+ * - state: State of the theme group.
+ * - themes: A list of themes within that group.
+ *
+ * Each group.themes[theme] contains a a list of themes.
+ *
+ * Each theme in group.themes[theme] contains:
+ * - attributes: Element attributes specific to this theme.
+ * - screenshot: Render of theme screenshot.
+ * - description: Description of the theme.
+ * - name: Name of theme.
+ * - version: Verions number of theme.
+ * - notes: Identifies what context this theme is being used.
+ *   eg. (default theme, admin theme)
+ * - compatibility: Description of any incompatibility issues,
+ *   if the theme is compatible, provides a list of links.
+ *
+ * @see template_preprocess_system_themes_page()
+ *
+ * @ingroup themeable
+ */
+#}
+<div{{ attributes }}>
+  {% for theme_group in theme_groups %}
+    <div{{ theme_group.attributes }}>
+      <h2>{{ theme_group.title }}</h2>
+      {% for theme in theme_group.themes %}
+        <div{{ theme.attributes }}>
+          {% if theme.screenshot %}
+            {{ theme.screenshot }}
+          {% else %}
+            <div class="no-screenshot">
+              <div class="no-screenshot__text">{{ "no screenshot"|t }}</div>
+            </div>
+          {% endif %}
+          <div class="theme-info">
+            <h3>{{ theme.name }} {{ theme.version }} {{ theme.notes }}</h3>
+            <div class="theme-description">{{ theme.description }}</div>
+            {{ theme.compatibility }}
+          </div>
+        </div>
+      {% endfor %}
+    </div>
+  {% endfor %}
+</div>
+{{ admin_form }}
diff --git a/core/modules/system/templates/tablesort-indicator.html.twig b/core/modules/system/templates/tablesort-indicator.html.twig
index ffdecda..d019349 100644
--- a/core/modules/system/templates/tablesort-indicator.html.twig
+++ b/core/modules/system/templates/tablesort-indicator.html.twig
@@ -13,6 +13,4 @@
  * @ingroup themeable
  */
 #}
-{% spaceless %}
-  {{ image }}
-{% endspaceless %}
+{{ image }}
