diff --git a/core/themes/seven/seven.theme b/core/themes/seven/seven.theme
index 3dc83ac..49c5c94 100644
--- a/core/themes/seven/seven.theme
+++ b/core/themes/seven/seven.theme
@@ -39,105 +39,62 @@ function seven_preprocess_page(&$variables) {
 }
 
 /**
- * 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]['description'] = filter_xss_admin($type->description);
+      $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().
+ * Implements hook_preprocess_HOOK() 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]['description'] = filter_xss_admin($type->description);
+      $variables['types'][$type->id]['path'] = url('block/add/' . $type->id);
     }
-    $output .= '</ul>';
   }
-  return $output;
 }
 
 /**
- * Overrides theme_admin_block_content().
+ * Implements hook_preprocess_HOOK() for theme_admin_block_content().
  *
  * 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().
+ * Implements hook_preprocess_HOOK() for tablesort-indicator.html.twig.
  *
  * Uses Seven's image versions, so the arrows show up as black and not gray on
  * gray.
  */
-function seven_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);
+function seven_preprocess_tablesort_indicator(&$variables) {
+  $variables['uri'] = drupal_get_path('theme', 'seven') . '/images/arrow-' . ($variables['style'] == 'asc' ? 'asc' : 'desc') . '.png';
+  $variables['attributes']['src'] = file_create_url($variables['uri']);
 }
 
 /**
@@ -145,9 +102,6 @@ function seven_tablesort_indicator($variables) {
  */
 function seven_preprocess_install_page(&$variables) {
   drupal_add_js(drupal_get_path('theme', 'seven') . '/js/mobile.install.js');
-  drupal_add_css(drupal_get_path('theme', 'seven') . '/install-page.css', array('group' => CSS_AGGREGATE_THEME));
-  $variables['styles'] = new RenderWrapper('drupal_get_css');
-  $variables['scripts'] = new RenderWrapper('drupal_get_js');
 }
 
 /**
