diff --git a/core/themes/seven/seven.theme b/core/themes/seven/seven.theme
index c3e7a32..1a055ca 100644
--- a/core/themes/seven/seven.theme
+++ b/core/themes/seven/seven.theme
@@ -113,104 +113,70 @@ function seven_menu_local_task($variables) {
 }
 
 /**
- * Displays the list of available node types for node creation.
+ * Implements hook_preprocess_HOOK() for list of available node type templates.
  */
-function seven_node_add_list($variables) {
-  $content = $variables['content'];
-  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">' . Xss::filterAdmin($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'] = String::checkPlain($type->name);
+      $variables['types'][$type->type]['description'] = Xss::filterAdmin($type->description);
+      $variables['types'][$type->type]['url'] = \Drupal::url('node.add', array('node_type' => $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>';
+    $variables['add_content_type_url'] = \Drupal::url('node.type_add');
   }
-  return $output;
 }
 
 /**
- * Overrides theme_custom_block_add_list().
+ * Implements hook_preprocess_HOOK() for custom block add list templates.
  *
- * Displays the list of available custom block types for creation.
+ * Displays the list of available custom block types for creation, adding
+ * separate variables for the label description and url.
  */
-function seven_custom_block_add_list($variables) {
-  $output = '';
-  if (!empty($variables['types'])) {
-    $output = '<ul class="admin-list">';
-    foreach ($variables['types'] as $id => $type) {
-      $output .= '<li class="clearfix">';
-      $content = '<span class="label">' . check_plain($type['title']) . '</span>';
-      $content .= '<div class="description">' . Xss::filterAdmin($type['description']) . '</div>';
-      $options = $type['localized_options'];
-      $options['html'] = TRUE;
-      $output .= \Drupal::l($content, 'custom_block.add_form', array('custom_block_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'] = String::checkPlain($type->label());
+      $variables['types'][$type->id()]['description'] = Xss::filterAdmin($type->description);
+      $options = array('query' => \Drupal::request()->query->all());
+      $variables['types'][$type->id()]['url'] = \Drupal::url('custom_block.add_form', array('custom_block_type' => $type->id()), $options);
     }
-    $output .= '</ul>';
   }
-  return $output;
 }
 
 /**
- * Overrides theme_admin_block_content().
+ * Implements hook_preprocess_HOOK() for block admin page 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">' . Xss::filterAdmin($item['title']) . '</span>';
-      $options = $item['localized_options'];
-      $options['html'] = TRUE;
-      if (isset($item['description']) && !system_admin_compact_mode()) {
-        $content .= '<div class="description">' . Xss::filterAdmin($item['description']) . '</div>';
-      }
-      $output .= l($content, $item['link_path'], $options);
-      $output .= '</li>';
+function seven_preprocess_admin_block_content(&$variables) {
+  if (!empty($variables['content'])) {
+    // @todo Remove once theme_admin_block() is converted to Twig.
+    // See https://drupal.org/node/1987410
+    $compact = system_admin_compact_mode();
+    $variables['attributes'] = array('class' => array('admin-list'));
+    if ($compact) {
+      $variables['attributes']['class'][] = 'compact';
+    }
+    foreach ($variables['content'] as $key => $item) {
+      $variables['content'][$key]['label'] = Xss::filterAdmin($item['title']);
+      $variables['content'][$key]['url'] = url($item['link_path']);
+      $variables['content'][$key]['description'] = Xss::filterAdmin($item['description']);
     }
-    $output .= '</ul>';
   }
-  return $output;
 }
 
 /**
- * Overrides theme_tablesort_indicator().
+ * Implements hook_preprocess_HOOK() for tablesort indicator templates.
  *
  * Uses Seven's image versions, so the arrows show up as black and not gray on
  * gray.
  */
-function seven_tablesort_indicator($variables) {
+function seven_preprocess_tablesort_indicator(&$variables) {
   $theme_path = drupal_get_path('theme', 'seven');
-
-  if ($variables['style'] == 'asc') {
-    $image_uri = $theme_path . '/images/arrow-asc.png';
-    $text = t('Sort ascending');
-  }
-  else {
-    $image_uri = $theme_path . '/images/arrow-desc.png';
-    $text = t('Sort descending');
-  }
-
-  $image = array(
-    '#theme' => 'image',
-    '#uri' => $image_uri,
-    '#alt' => $text,
-    '#width' => 9,
-    '#height' => 5,
-    '#title' => $text,
-  );
-  return drupal_render($image);
+  $variables['arrow_asc'] = file_create_url($theme_path . '/images/arrow-asc.png');
+  $variables['arrow_desc'] = file_create_url($theme_path . '/images/arrow-desc.png');
 }
 
 /**
@@ -326,7 +292,7 @@ function seven_form_node_form_alter(&$form, &$form_state) {
   );
 
   $form['advanced']['#type'] = 'container';
-  $form['meta'] = array (
+  $form['meta'] = array(
     '#attributes' => array('class' => array('entity-meta-header')),
     '#type' => 'container',
     '#group' => 'advanced',
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..821b02c
--- /dev/null
+++ b/core/themes/seven/templates/admin-block-content.html.twig
@@ -0,0 +1,25 @@
+{#
+/**
+ * @file
+ * Seven's theme implementation for the content of an administrative block.
+ *
+ * Available variables:
+ * - content: List of administrative menu items. Each menu item contains:
+ *   - path: Path to the admin section.
+ *   - label: Short name of the section.
+ *   - description: Description of the administrative menu item.
+ * - attributes: HTML attributes to be added to the element.
+ *
+ * @see template_preprocess_admin_block_content()
+ * @see seven_preprocess_admin_block_content()
+ *
+ * @ingroup themeable
+ */
+#}
+{% if content %}
+  <ul{{ attributes }}>
+    {% for item in content %}
+      <li><a href="{{ item.url }}"><span class="label">{{ item.label }}</span><div class="description">{{ item.description }}</div></a></li>
+    {% endfor %}
+  </ul>
+{% 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..2942ba2
--- /dev/null
+++ b/core/themes/seven/templates/custom-block-add-list.html.twig
@@ -0,0 +1,29 @@
+{#
+/**
+ * @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.
+ *   Each type contains:
+ *   - type: The custom block type, containing all the items below.
+ *   - link: A link to add a block of this type.
+ *   - description: A description of this custom block type.
+ *   - label: The title of the custom block type.
+ *   - path: A path for the link to add a block of this type.
+ *
+ * @see template_preprocess_custom_block_add_list()
+ * @see seven_preprocess_custom_block_add_list()
+ *
+ * @ingroup themeable
+ */
+ #}
+<ul class="admin-list">
+  {% for type in types %}
+    <li class="clearfix">
+      <a href="{{ type.url }}"><span class="label">{{ type.label }}</span><div class="description">{{ type.description }}</div></a>
+    </li>
+  {% endfor %}
+</ul>
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..97640e1
--- /dev/null
+++ b/core/themes/seven/templates/node-add-list.html.twig
@@ -0,0 +1,27 @@
+{#
+/**
+ * @file
+ * Seven's theme implementation to list node types available for adding content.
+ *
+ * Available variables:
+ * - types: List of content types. Each content type contains:
+ *   - add_link: Link to create a piece of content of this type.
+ *   - description: Description of this type of content.
+ *
+ * @see template_preprocess_node_add_list()
+ * @see seven_preprocess_node_add_list()
+ *
+ * @ingroup themeable
+ */
+#}
+{% if content %}
+  <ul class="admin-list">
+    {% for type in types %}
+      <li class="clearfix"><a href="{{ type.url }}"><span class="label">{{ type.label }}</span><div class="description">{{ type.description }}</div></a></li>
+    {% endfor %}
+  </ul>
+{% else %}
+  {% trans %}
+    <p>You have not created any content types yet. Go to the <a href="{{ add_content_type_url }}">content type creation page</a> to add a new content type.</p>
+  {% endtrans %}
+{% endif %}
diff --git a/core/themes/seven/templates/tablesort-indicator.html.twig b/core/themes/seven/templates/tablesort-indicator.html.twig
new file mode 100644
index 0000000..5a679a6
--- /dev/null
+++ b/core/themes/seven/templates/tablesort-indicator.html.twig
@@ -0,0 +1,17 @@
+{#
+/**
+ * @file
+ * Default theme implementation for displaying a tablesort indicator.
+ *
+ * Available variables:
+ * - style: Either 'asc' or 'desc', indicating the sorting direction.
+ * - theme_path: Path to the theme.
+ *
+ * @ingroup themeable
+ */
+#}
+{% if style == 'asc' -%}
+  <img src="{{ arrow_asc }}" width="9" height="5" alt="{{ 'Sort ascending'|t }}" title="{{ 'Sort ascending'|t }}" />
+{% else -%}
+  <img src="{{ arrow_desc }}" width="9" height="5" alt="{{ 'Sort descending'|t }}" title="{{ 'Sort descending'|t }}" />
+{% endif %}
diff --git a/diff.txt b/diff.txt
new file mode 100644
index 0000000..803cefc
--- /dev/null
+++ b/diff.txt
@@ -0,0 +1,36 @@
+diff --git a/old.txt b/old.txt
+index 07b281a..76bbc0c 100644
+--- a/old.txt
++++ b/old.txt
+@@ -1,17 +1,22 @@
++<!-- BEGIN OUTPUT from 'core/themes/seven/templates/node-add-list.html.twig' -->
+ <ul class="admin-list">
+ <li class="clearfix"><a href="/node/add/article"><span class="label">Article</span><div class="description">Use <em>articles</em> for time-sensitive content like news, press releases or blog posts.</div></a></li>
+ <li class="clearfix"><a href="/node/add/page"><span class="label">Basic page</span><div class="description">Use <em>basic pages</em> for your static content, such as an 'About us' page.</div></a></li>
+ </ul>
++<!-- END OUTPUT from 'core/themes/seven/templates/node-add-list.html.twig' -->
+ <a href="/admin/content?status=All&amp;type=All&amp;title=&amp;order=changed&amp;sort=asc" title="sort by Updated">Updated
+ <!-- THEME DEBUG -->
+-<!-- CALL: _theme('image') -->
+-<!-- BEGIN OUTPUT from 'core/modules/system/templates/image.html.twig' -->
+-<img src="http://drupal8.dev/core/themes/seven/images/arrow-asc.png" width="9" height="5" alt="Sort ascending" title="Sort ascending" typeof="foaf:Image" />
+-<!-- END OUTPUT from 'core/modules/system/templates/image.html.twig' -->
++<!-- CALL: _theme('tablesort_indicator') -->
++<!-- BEGIN OUTPUT from 'core/themes/seven/templates/tablesort-indicator.html.twig' -->
++<img src="http://drupal8.dev/core/themes/seven/images/arrow-asc.png" width="9" height="5" alt="Sort ascending" title="Sort ascending" />
++<!-- END OUTPUT from 'core/themes/seven/templates/tablesort-indicator.html.twig' -->
+ </a>
++<!-- BEGIN OUTPUT from 'core/themes/seven/templates/custom-block-add-list.html.twig' -->
+ <ul class="admin-list">
+ <li class="clearfix"><a href="/block/add/basic"><span class="label">Basic block</span><div class="description">A basic block contains a title and a body.</div></a></li>
+ </ul>
++<!-- END OUTPUT from 'core/themes/seven/templates/custom-block-add-list.html.twig' -->
++<!-- BEGIN OUTPUT from 'core/themes/seven/templates/admin-block-content.html.twig' -->
+ <ul class="admin-list">
+ <li><a href="/admin/structure/display-modes/view/add/comment"><span class="label">Comment</span><div class="description"></div></a></li>
+ <li><a href="/admin/structure/display-modes/view/add/contact_message"><span class="label">Contact message</span><div class="description"></div></a></li>
+@@ -20,3 +25,4 @@
+ <li><a href="/admin/structure/display-modes/view/add/taxonomy_term"><span class="label">Taxonomy term</span><div class="description"></div></a></li>
+ <li><a href="/admin/structure/display-modes/view/add/user"><span class="label">User</span><div class="description"></div></a></li>
+ </ul>
++<!-- END OUTPUT from 'core/themes/seven/templates/admin-block-content.html.twig' -->
diff --git a/new.txt b/new.txt
new file mode 100644
index 0000000..76bbc0c
--- /dev/null
+++ b/new.txt
@@ -0,0 +1,28 @@
+<!-- BEGIN OUTPUT from 'core/themes/seven/templates/node-add-list.html.twig' -->
+<ul class="admin-list">
+<li class="clearfix"><a href="/node/add/article"><span class="label">Article</span><div class="description">Use <em>articles</em> for time-sensitive content like news, press releases or blog posts.</div></a></li>
+<li class="clearfix"><a href="/node/add/page"><span class="label">Basic page</span><div class="description">Use <em>basic pages</em> for your static content, such as an 'About us' page.</div></a></li>
+</ul>
+<!-- END OUTPUT from 'core/themes/seven/templates/node-add-list.html.twig' -->
+<a href="/admin/content?status=All&amp;type=All&amp;title=&amp;order=changed&amp;sort=asc" title="sort by Updated">Updated
+<!-- THEME DEBUG -->
+<!-- CALL: _theme('tablesort_indicator') -->
+<!-- BEGIN OUTPUT from 'core/themes/seven/templates/tablesort-indicator.html.twig' -->
+<img src="http://drupal8.dev/core/themes/seven/images/arrow-asc.png" width="9" height="5" alt="Sort ascending" title="Sort ascending" />
+<!-- END OUTPUT from 'core/themes/seven/templates/tablesort-indicator.html.twig' -->
+</a>
+<!-- BEGIN OUTPUT from 'core/themes/seven/templates/custom-block-add-list.html.twig' -->
+<ul class="admin-list">
+<li class="clearfix"><a href="/block/add/basic"><span class="label">Basic block</span><div class="description">A basic block contains a title and a body.</div></a></li>
+</ul>
+<!-- END OUTPUT from 'core/themes/seven/templates/custom-block-add-list.html.twig' -->
+<!-- BEGIN OUTPUT from 'core/themes/seven/templates/admin-block-content.html.twig' -->
+<ul class="admin-list">
+<li><a href="/admin/structure/display-modes/view/add/comment"><span class="label">Comment</span><div class="description"></div></a></li>
+<li><a href="/admin/structure/display-modes/view/add/contact_message"><span class="label">Contact message</span><div class="description"></div></a></li>
+<li><a href="/admin/structure/display-modes/view/add/custom_block"><span class="label">Custom Block</span><div class="description"></div></a></li>
+<li><a href="/admin/structure/display-modes/view/add/node"><span class="label">Content</span><div class="description"></div></a></li>
+<li><a href="/admin/structure/display-modes/view/add/taxonomy_term"><span class="label">Taxonomy term</span><div class="description"></div></a></li>
+<li><a href="/admin/structure/display-modes/view/add/user"><span class="label">User</span><div class="description"></div></a></li>
+</ul>
+<!-- END OUTPUT from 'core/themes/seven/templates/admin-block-content.html.twig' -->
diff --git a/urls.txt b/urls.txt
new file mode 100644
index 0000000..f4843ec
--- /dev/null
+++ b/urls.txt
@@ -0,0 +1,13 @@
+URLs to Twig template renders:
+
+node-add-list
+/node/add
+
+tablesort_indicator
+/admin/content
+
+custom-block-add-list
+/block/add?destination=admin%2Fstructure%2Fblock%2Fcustom-blocks
+
+admin-block-content
+/admin/structure/display-modes/view/add
