diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index d2fedf2..c4766cc 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -1312,6 +1312,19 @@ function template_preprocess_html(&$variables) {
  * variables.
  */
 function template_preprocess_page(&$variables) {
+
+  $variables['list'] = [
+    '#theme' => 'item_list',
+    '#items' => [
+      ['#markup' => 'woodpecker'],
+      'kittens','unicorns','llamas','bunnies','corgies',
+      [
+        '#theme' => 'item_list',
+        '#items' => ['kittens','unicorns','llamas','bunnies','corgies'],
+      ]
+    ],
+  ];
+
   $language_interface = \Drupal::languageManager()->getCurrentLanguage();
   $site_config = \Drupal::config('system.site');
 
diff --git a/core/lib/Drupal/Core/Render/Renderable.php b/core/lib/Drupal/Core/Render/Renderable.php
new file mode 100644
index 0000000..dfc6604
--- /dev/null
+++ b/core/lib/Drupal/Core/Render/Renderable.php
@@ -0,0 +1,139 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Core\Render\Renderable.
+ */
+
+namespace Drupal\Core\Render;
+
+use Drupal\Component\Utility\SafeStringInterface;
+use Exception;
+
+class Renderable implements \ArrayAccess, \IteratorAggregate, \Countable, SafeStringInterface {
+
+  /**
+   * Stores the renderable data.
+   *
+   * @var array
+   */
+  protected $storage = [];
+
+  /**
+   * Constructor
+   *
+   * @param array $input
+   */
+  public function __construct($input = []) {
+    // @todo if this a type or theme, have a #property key list to avoid element
+    // name key conflicts.
+    $this->storage = $input;
+  }
+
+  /**
+   * Implements ArrayAccess::offsetGet().
+   */
+  public function offsetGet($key) {
+    if (isset($this->storage[$key])) {
+      return $this->storage[$key];
+    }
+    elseif (isset($this->storage['#' . $key])) {
+      return $this->storage['#' . $key];
+    }
+  }
+
+  /**
+   * Implements ArrayAccess::offsetSet().
+   */
+  public function offsetSet($key, $value) {
+    if (isset($this->storage['#' . $key])) {
+      $this->storage['#' . $key] = $value;
+    }
+    else {
+      $this->storage[$key] = $value;
+    }
+  }
+
+  /**
+   * Implements ArrayAccess::offsetUnset().
+   */
+  public function offsetUnset($name) {
+    if (isset($this->storage[$name])) {
+      unset($this->storage[$name]);
+    }
+    else {
+      unset($this->storage['#' . $name]);
+    }
+  }
+
+  /**
+   * Implements ArrayAccess::offsetExists().
+   */
+  public function offsetExists($name) {
+    return isset($this->storage[$name]) || isset($this->storage['#' . $name]);
+  }
+
+  public function render() {
+    $storage = $this->storage;
+    if (isset($storage['#printed']) && $storage['#printed'] == TRUE
+      && isset($storage['#markup']) && strlen($storage['#markup']) > 0) {
+      return $storage['#markup'];
+    }
+    $result = '';
+    try {
+      // This is a render array, with special simple cases already handled.
+      // Early return if this element was pre-rendered (no need to re-render).
+
+      $storage['#printed'] = FALSE;
+      $result = \Drupal::service('renderer')->render($storage);
+    }
+    catch (Exception $e) {
+
+    }
+    return $result;
+  }
+
+  /**
+   * Implements the magic __toString() method.
+   */
+  public function __toString() {
+    return (string) $this->render();
+  }
+
+  /**
+   * Returns all storage elements as an array.
+   *
+   * @return array
+   *   An associative array of attributes.
+   */
+  public function toArray() {
+    $return = [];
+    foreach ($this->storage as $name => $value) {
+      $return[$name] = $value->value();
+    }
+
+    return $return;
+  }
+
+  /**
+   * Implements IteratorAggregate::getIterator().
+   */
+  public function getIterator() {
+    return new \ArrayIterator($this->storage);
+  }
+
+  /**
+   * Implements Countable::count().
+   */
+  public function count() {
+    $string = $this->render();
+    return function_exists('mb_get_info') ? mb_strlen($string, 'utf-8') : strlen($string);
+  }
+
+  /**
+   * Returns the whole array.
+   */
+  public function storage() {
+    return $this->storage;
+  }
+}
\ No newline at end of file
diff --git a/core/themes/bartik/templates/page.html.twig b/core/themes/bartik/templates/page.html.twig
index b5d9c08..88e812f 100644
--- a/core/themes/bartik/templates/page.html.twig
+++ b/core/themes/bartik/templates/page.html.twig
@@ -126,6 +126,16 @@
     <div id="main-wrapper" class="layout-main-wrapper layout-container clearfix">
       <div id="main" class="layout-main clearfix">
         {{ page.breadcrumb }}
+
+        {{ list }}
+
+        <ul style="float: right; font-size: 24px; padding: 20px">
+          {% for item in list.items %}
+            <li>{{ item }}</li>
+          {% endfor %}
+        </ul>
+        {{ dump(list.items) }}
+
         <main id="content" class="column main-content" role="main">
           <section class="section">
             <a id="main-content" tabindex="-1"></a>
diff --git a/core/themes/engines/twig/twig.engine b/core/themes/engines/twig/twig.engine
index 96d0124..2df7046 100644
--- a/core/themes/engines/twig/twig.engine
+++ b/core/themes/engines/twig/twig.engine
@@ -9,6 +9,7 @@
 use Drupal\Component\Utility\SafeMarkup;
 use Drupal\Core\Render\SafeString;
 use Drupal\Core\Extension\Extension;
+use Drupal\Core\Render\Renderable;
 
 /**
  * Implements hook_theme().
@@ -33,6 +34,27 @@ function twig_init(Extension $theme) {
   $theme->load();
 }
 
+function wrap_render_arrays(&$variables) {
+  foreach ($variables as $variable_key => $variable) {
+    $is_render_array = FALSE;
+    if (!is_array($variable)) {
+      continue;
+    }
+    // Check if array is a render array.
+    foreach ($variable as $key => $value) {
+      // Find a render array.
+      if (isset($key[0]) && $key[0] == '#') {
+        $is_render_array = TRUE;
+      }
+    }
+//    wrap_render_arrays($variable);
+    // If we have a render array, wrap it as an object.
+    if ($is_render_array) {
+      $variables[$variable_key] = new Renderable($variable);
+    }
+  }
+
+}
 /**
  * Implements hook_render_template().
  *
@@ -50,6 +72,8 @@ function twig_init(Extension $theme) {
  *   The output generated by the template, plus any debug information.
  */
 function twig_render_template($template_file, array $variables) {
+
+  wrap_render_arrays($variables);
   /** @var \Twig_Environment $twig_service */
   $twig_service = \Drupal::service('twig');
   $output = [
