diff --git a/core/themes/seven/seven.info.yml b/core/themes/seven/seven.info.yml
index 2fe1cb3..bf3e636 100644
--- a/core/themes/seven/seven.info.yml
+++ b/core/themes/seven/seven.info.yml
@@ -3,6 +3,7 @@ description: 'A simple one-column, tableless, fluid width administration theme.'
 package: Core
 version: VERSION
 core: 8.x
+engine: twig
 stylesheets:
   screen:
     - style.css
diff --git a/core/themes/seven/seven.theme b/core/themes/seven/seven.theme
index fa7124c..5618990 100644
--- a/core/themes/seven/seven.theme
+++ b/core/themes/seven/seven.theme
@@ -27,7 +27,7 @@ function seven_preprocess_html(&$vars) {
 }
 
 /**
- * Implements hook_preprocess_HOOK() for page.tpl.php.
+ * Implements hook_preprocess_HOOK() for page.html.twig.
  */
 function seven_preprocess_page(&$vars) {
   $vars['primary_local_tasks'] = $vars['tabs'];
@@ -39,93 +39,56 @@ function seven_preprocess_page(&$vars) {
 }
 
 /**
- * Displays the list of available node types for node creation.
+ * Implements hook_preprocess_HOOK() for node-add-list.html.twig.
  */
-function seven_node_add_list($variables) {
-  $content = $variables['content'];
-  $output = '';
-  if ($content) {
-    $output = '<ul class="admin-list">';
-    foreach ($content as $type) {
-      $output .= '<li class="clearfix">';
-      $content = '<span class="label">' . check_plain($type->name) . '</span>';
-      $content .= '<div class="description">' . filter_xss_admin($type->description) . '</div>';
-      $options['html'] = TRUE;
-      $output .= l($content, 'node/add/' . $type->type, $options);
-      $output .= '</li>';
+function seven_preprocess_node_add_list(&$variables) {
+  if (!empty($variables['content'])) {
+    foreach ($variables['content'] as $type) {
+      $variables['types'][$type->type]['label'] = check_plain($type->name);
+      $variables['types'][$type->type]['path'] = url('node/add/' . $type->type);
     }
-    $output .= '</ul>';
   }
-  else {
-    $output = '<p>' . t('You have not created any content types yet. Go to the <a href="@create-content">content type creation page</a> to add a new content type.', array('@create-content' => url('admin/structure/types/add'))) . '</p>';
-  }
-  return $output;
 }
 
 /**
- * Overrides theme_custom_block_add_list().
+ * Overrides variables for custom-block-add-list.html.twig
+ * Add variables for the label and the path separately.
+ *
+ * Displays the list of available custom block types for creation, adding
+ * separate variables for the label and the path.
  *
- * Displays the list of available custom block types for creation.
  */
-function seven_custom_block_add_list($variables) {
-  $content = $variables['content'];
-  $output = '';
-  if ($content) {
-    $output = '<ul class="admin-list">';
-    foreach ($content as $type) {
-      $output .= '<li class="clearfix">';
-      $content = '<span class="label">' . check_plain($type->label()) . '</span>';
-      $content .= '<div class="description">' . filter_xss_admin($type->description) . '</div>';
-      $options['html'] = TRUE;
-      $output .= l($content, 'block/add/' . $type->id(), $options);
-      $output .= '</li>';
+function seven_preprocess_custom_block_add_list(&$variables) {
+  if (!empty($variables['content'])) {
+    foreach ($variables['content'] as $type) {
+      $variables['types'][$type->id]['label'] = check_plain($type->label());
+      $variables['types'][$type->id]['path'] = url('block/add/' . $type->id);
     }
-    $output .= '</ul>';
   }
-  return $output;
 }
 
 /**
  * Overrides theme_admin_block_content().
  *
+ * Prepare variables for administrative content block templates.
  * Uses an unordered list markup in both compact and extended mode.
  */
-function seven_admin_block_content($variables) {
-  $content = $variables['content'];
-  $output = '';
-  if (!empty($content)) {
-    $output = system_admin_compact_mode() ? '<ul class="admin-list compact">' : '<ul class="admin-list">';
-    foreach ($content as $item) {
-      $output .= '<li>';
-      $content = '<span class="label">' . filter_xss_admin($item['title']) . '</span>';
-      $options = $item['localized_options'];
-      $options['html'] = TRUE;
-      if (isset($item['description']) && !system_admin_compact_mode()) {
-        $content .= '<div class="description">' . filter_xss_admin($item['description']) . '</div>';
-      }
-      $output .= l($content, $item['href'], $options);
-      $output .= '</li>';
+function seven_preprocess_admin_block_content(&$variables) {
+  if (!empty($variables['content'])) {
+    $variables['compact'] = system_admin_compact_mode() ? 'compact' : '';
+    foreach ($variables['content'] as $key => $item) {
+      $variables['content'][$key]['label'] = filter_xss_admin($item['title']);
+      $variables['content'][$key]['path'] = url($item['href']);
+      $variables['content'][$key]['description'] = filter_xss_admin($item['description']);
     }
-    $output .= '</ul>';
   }
-  return $output;
 }
 
 /**
- * Overrides theme_tablesort_indicator().
- *
- * Uses Seven's image versions, so the arrows show up as black and not gray on
- * gray.
+ * Implements hook_preprocess_HOOK() for tablesort-indicator.html.twig.
  */
-function seven_tablesort_indicator($variables) {
-  $style = $variables['style'];
-  $theme_path = drupal_get_path('theme', 'seven');
-  if ($style == 'asc') {
-    return theme('image', array('uri' => $theme_path . '/images/arrow-asc.png', 'alt' => t('sort ascending'), 'width' => 13, 'height' => 13, 'title' => t('sort ascending')));
-  }
-  else {
-    return theme('image', array('uri' => $theme_path . '/images/arrow-desc.png', 'alt' => t('sort descending'), 'width' => 13, 'height' => 13, 'title' => t('sort descending')));
-  }
+function seven_preprocess_tablesort_indicator(&$variables) {
+  $variables['uri'] = drupal_get_path('theme', 'seven') . '/images/arrow-' . ($variables['style'] == 'asc' ? 'asc' : 'desc') . '.png';
 }
 
 /**
diff --git a/core/themes/seven/templates/admin-block-content.html.twig b/core/themes/seven/templates/admin-block-content.html.twig
new file mode 100644
index 0000000..18e1d09
--- /dev/null
+++ b/core/themes/seven/templates/admin-block-content.html.twig
@@ -0,0 +1,25 @@
+{#
+/**
+ * @file
+ * Default theme implementation for the content of an administrative block.
+ *
+ * Available variables:
+ * - content: List of administrative menu items.
+ *   - item.path: Path to the admin section.
+ *   - item.label: Short name of the section
+ *   - item.description: Description of the administrative menu item.
+ * - compact: class indicator for compact mode (empty if not compact)
+ *
+ * @see template_preprocess()
+ * @see template_preprocess_admin_block_content()
+ *
+ * @ingroup themeable
+ */
+#}
+{% if content %}
+  <ul class="admin-list {{ compact }}">
+    {% for item in content %}
+      <li><a href="{{ item.path }}"><span class="label">{{ item.label }}</span><div class="description">{{ item.description }}</div></a></li>
+    {% endfor %}
+  </dl>
+{% endif %}
diff --git a/core/themes/seven/templates/custom-block-add-list.html.twig b/core/themes/seven/templates/custom-block-add-list.html.twig
new file mode 100644
index 0000000..cc66b21
--- /dev/null
+++ b/core/themes/seven/templates/custom-block-add-list.html.twig
@@ -0,0 +1,28 @@
+{#
+/**
+ * @file
+ * Overrides custom-block-add-list.html.twig.
+ *
+ * Displays the list of available custom block types for creation.
+ *
+ * Available variables:
+ * - types: A collection of all the available custom block types.
+ *   - type: The custom block type, containing all the items below.
+ *   - type.link: A link to add a block of this type.
+ *   - type.description: A description of this custom block type.
+ *   - type.label: The title of the custom block type.
+ *   - type.path: A path for the link to add a block of this type.
+ *
+ * @see template_preprocess()
+ * @see template_preprocess_custom_block_add_list()
+ *
+ * @ingroup themeable
+ */
+ #}
+<ul class="admin-list">
+  {% for type in types %}
+    <li class="clearfix">
+      <a href="{{ type.path }}"><span class="label">{{ type.label }}</span><div class="description">{{ type.description }}</div></a>
+    </li>
+  {% endfor %}
+</ul>
diff --git a/core/themes/seven/templates/maintenance-page.html.twig b/core/themes/seven/templates/maintenance-page.html.twig
new file mode 100644
index 0000000..bb67709
--- /dev/null
+++ b/core/themes/seven/templates/maintenance-page.html.twig
@@ -0,0 +1,53 @@
+{#
+ # @file
+ # Seven's theme implementation to display a single Drupal page while offline.
+ #
+ # All of the available variables are mirrored in page.tpl.php.
+ #
+ # @see template_preprocess()
+ # @see template_preprocess_maintenance_page()
+ # @see seven_preprocess_maintenance_page()
+ #
+ # @ingroup themeable
+#}
+
+<!DOCTYPE html>
+<html lang="{{ language.langcode }}" dir="{{ language.dir }}">
+  <head>
+    <title>{{ head_title }}</title>
+    {{ head }}
+    {{ styles }}
+    {{ scripts }}
+  </head>
+  <body class="{{ attributes.class }}">
+
+  <header id="branding">
+    {% if title %}<h1 class="page-title">{{ title }}</h1>{% endif %}
+  </header>
+
+  <div id="page">
+
+    <div id="sidebar-first" class="sidebar">
+      {% if logo %}
+        <img id="logo" src="{{ logo }}" alt="{{ site_name }}" />
+      {% endif %}
+      {% if sidebar_first %}
+        {{ sidebar_first }}
+      {% endif %}
+    </div>
+
+    <main id="content" class="clearfix">
+      {% if messages %}
+        <div id="console">{{ messages }}</div>
+      {% endif %}
+      {% if help %}
+        <div id="help">
+          {{ help }}
+        </div>
+      {% endif %}
+      {{ content }}
+    </main>
+
+  </div>
+  </body>
+</html>
diff --git a/core/themes/seven/templates/maintenance-page.tpl.php b/core/themes/seven/templates/maintenance-page.tpl.php
deleted file mode 100644
index fff11d8..0000000
--- a/core/themes/seven/templates/maintenance-page.tpl.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-/**
- * @file
- * Seven's theme implementation to display a single Drupal page while offline.
- *
- * All of the available variables are mirrored in page.tpl.php.
- *
- * @see template_preprocess()
- * @see template_preprocess_maintenance_page()
- * @see seven_preprocess_maintenance_page()
- *
- * @ingroup themeable
- */
-?>
-<!DOCTYPE html>
-<html lang="<?php print $language->langcode ?>" dir="<?php print $language->dir ?>">
-  <head>
-    <title><?php print $head_title; ?></title>
-    <?php print $head; ?>
-    <?php print $styles; ?>
-    <?php print $scripts; ?>
-  </head>
-  <body class="<?php print $attributes['class']; ?>">
-
-  <?php print $page_top; ?>
-
-  <header id="branding">
-    <?php if ($title): ?><h1 class="page-title"><?php print $title; ?></h1><?php endif; ?>
-  </header>
-
-  <div id="page">
-
-    <div id="sidebar-first" class="sidebar">
-      <?php if ($logo): ?>
-        <img id="logo" src="<?php print $logo ?>" alt="<?php print $site_name ?>" />
-      <?php endif; ?>
-      <?php if ($sidebar_first): ?>
-        <?php print $sidebar_first ?>
-      <?php endif; ?>
-    </div>
-
-    <main id="content" class="clearfix">
-      <?php if ($messages): ?>
-        <div id="console"><?php print $messages; ?></div>
-      <?php endif; ?>
-      <?php if ($help): ?>
-        <div id="help">
-          <?php print $help; ?>
-        </div>
-      <?php endif; ?>
-      <?php print $content; ?>
-    </main>
-
-  </div>
-
-  <footer role="contentinfo">
-    <?php print $page_bottom; ?>
-  </footer>
-
-  </body>
-</html>
diff --git a/core/themes/seven/templates/node-add-list.html.twig b/core/themes/seven/templates/node-add-list.html.twig
new file mode 100644
index 0000000..5062a38
--- /dev/null
+++ b/core/themes/seven/templates/node-add-list.html.twig
@@ -0,0 +1,25 @@
+{#
+/**
+ * @file
+ * Default theme implementation to list the available types for content creation.
+ *
+ * Available variables:
+ * - types: List of content types.
+ *   - type.add_link: Link to create a piece of content of this type.
+ *   - type.description: Description of this type of content.
+ *
+ * @see template_preprocess()
+ * @see template_preprocess_node_add_list()
+ *
+ * @ingroup themeable
+ */
+#}
+{% if content %}
+  <ul class="admin-list">
+    {% for type in types %}
+      <li class="clearfix"><a href="{{ type.path }}"><span class="label">{{ type.label }}</span><div class="description">{{ type.description }}</div></a></li>
+    {% endfor %}
+  </dl>
+{% else %}
+  <p>{{ 'You have not created any content types yet. Go to the <a href="@create-content">content type creation page</a> to add a new content type.'|t({'@create-content': url('admin/structure/types/add')}) }}</p>
+{% endif %}
\ No newline at end of file
diff --git a/core/themes/seven/templates/page.html.twig b/core/themes/seven/templates/page.html.twig
new file mode 100644
index 0000000..7310422
--- /dev/null
+++ b/core/themes/seven/templates/page.html.twig
@@ -0,0 +1,58 @@
+{#
+
+/**
+ * @file
+ * Seven's theme implementation to display a single Drupal page.
+ *
+ * The doctype, html, head, and body tags are not in this template. Instead
+ * they can be found in the html.tpl.php template normally located in the
+ * core/modules/system directory.
+ *
+ * @see template_preprocess()
+ * @see template_preprocess_page()
+ * @see template_process()
+ * @see seven_preprocess_page()
+ *
+ * @ingroup themeable
+ */
+#}
+  <header id="branding" class="clearfix" role="navigation">
+    {{ breadcrumb }}
+    {{ title_prefix }}
+    {% if title %}
+      <h1 class="page-title">{{ title }}</h1>
+    {% endif %}
+    {{ title_suffix }}
+    {% if primary_local_tasks %}
+      <div role="tab"> {{ primary_local_tasks }} </div>
+    {% endif %}
+  </header>
+
+  <div id="page">
+    {% if secondary_local_tasks %}
+      <div class="tabs-secondary clearfix" role="navigation">{{ secondary_local_tasks }}</div>
+    {% endif %}
+
+    <main id="content" class="clearfix" role="main">
+      <div class="element-invisible"><a id="main-content"></a></div>
+      {% if messages %}
+        <div id="console" class="clearfix">{{ messages }}</div>
+      {% endif %}
+      {% if page.help %}
+        <div id="help">
+          {{ page.help }}
+        </div>
+      {% endif %}
+      {% if action_links %}
+        <ul class="action-links">
+          {{ action_links }}
+        </ul>
+      {% endif %}
+      {{ page.content }}
+    </main>
+
+    <footer id="footer" role="contentinfo">
+      {{ feed_icons }}
+    </footer>
+
+  </div>
diff --git a/core/themes/seven/templates/page.tpl.php b/core/themes/seven/templates/page.tpl.php
deleted file mode 100644
index d1a290c..0000000
--- a/core/themes/seven/templates/page.tpl.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-/**
- * @file
- * Seven's theme implementation to display a single Drupal page.
- *
- * The doctype, html, head, and body tags are not in this template. Instead
- * they can be found in the html.tpl.php template normally located in the
- * core/modules/system directory.
- *
- * @see template_preprocess()
- * @see template_preprocess_page()
- * @see template_process()
- * @see seven_preprocess_page()
- *
- * @ingroup themeable
- */
-?>
-  <header id="branding" class="clearfix" role="navigation">
-    <?php print $breadcrumb; ?>
-    <?php print render($title_prefix); ?>
-    <?php if ($title): ?>
-      <h1 class="page-title"><?php print $title; ?></h1>
-    <?php endif; ?>
-    <?php print render($title_suffix); ?>
-    <?php if ($primary_local_tasks): ?>
-      <?php print '<div role="tab">' . render($primary_local_tasks) . '</div>'; ?>
-    <?php endif; ?>
-  </header>
-
-  <div id="page">
-    <?php if ($secondary_local_tasks): ?>
-      <div class="tabs-secondary clearfix" role="navigation"><?php print render($secondary_local_tasks); ?></div>
-    <?php endif; ?>
-
-    <main id="content" class="clearfix" role="main">
-      <div class="element-invisible"><a id="main-content"></a></div>
-      <?php if ($messages): ?>
-        <div id="console" class="clearfix"><?php print $messages; ?></div>
-      <?php endif; ?>
-      <?php if ($page['help']): ?>
-        <div id="help">
-          <?php print render($page['help']); ?>
-        </div>
-      <?php endif; ?>
-      <?php if ($action_links): ?><ul class="action-links"><?php print render($action_links); ?></ul><?php endif; ?>
-      <?php print render($page['content']); ?>
-    </main>
-
-    <footer id="footer" role="contentinfo">
-      <?php print $feed_icons; ?>
-    </footer>
-
-  </div>
