diff --git a/content/contents.lr b/content/contents.lr
index 4775b03..b5f0c98 100644
--- a/content/contents.lr
+++ b/content/contents.lr
@@ -8,3 +8,16 @@ There is not much here - everything is stored below /u/.
 You should actually not be able to see this page below ungleich.ch. If
 you do, please let us know.
 ---
+slider:
+
+title:
+
+description:
+
+button_text:
+
+button_link:
+
+background_image:
+
+video_mp4:
diff --git a/content/u/blog/emacs-server-the-smart-way/contents.lr b/content/u/blog/emacs-server-the-smart-way/contents.lr
index e6afd69..80bb967 100644
--- a/content/u/blog/emacs-server-the-smart-way/contents.lr
+++ b/content/u/blog/emacs-server-the-smart-way/contents.lr
@@ -1,4 +1,4 @@
-title: Emacs, be my server
+title: Emacs server the fun way
 ---
 pub_date: 2020-04-23
 ---
@@ -57,13 +57,13 @@ much faster is the obvious advantage. However, there is a much bigger
 one:
 
 With the emacs server, you can connect to it from the terminal **and** X
-Windows. Because the emacs server also manages the buffers ("open
+Window. Because the emacs server also manages the buffers ("open
 files" for non-emacs users), you can view the same open file from the
 terminal or an x window.
 
 ## Turning the notebook into a server
 
-As you might now, we at ungleich are pretty much into IPv6. So all of
+As you might know, we at ungleich are pretty much into IPv6. So all of
 our devices are generally speaking world-wide reachable. Our work
 notebooks are no exception from that. In fact, most notebooks even
 have their own [/48 IPv6 network assigned via
@@ -118,3 +118,26 @@ window is the X11 window, the lower window is a terminal window (they
 happen to be configured to have the same nice background colour).
 
 ![](emacs.png)
+
+
+## Updates
+
+### 2020-04-23, 17:23
+
+[MutoShack](https://www.reddit.com/user/MutoShack/) pointed
+out on
+[reddit](https://www.reddit.com/r/emacs/comments/g6nqwv/emacs_server_the_fun_way/foazghz/)
+that using
+
+```
+emacsclient -a "" -c
+```
+
+is actually smarter than just using
+
+```
+emacsclient -c
+```,
+
+because it will start the daemon if it is not already running. No day
+that you don't learn something!
diff --git a/content/u/products/bgp-peering/contents.lr b/content/u/products/bgp-peering/contents.lr
index 62cb45c..622ad43 100644
--- a/content/u/products/bgp-peering/contents.lr
+++ b/content/u/products/bgp-peering/contents.lr
@@ -1,4 +1,4 @@
-_discoverable: no
+_discoverable: yes
 ---
 _hidden: no
 ---
@@ -6,3 +6,48 @@ title: BGP Peering
 ---
 subtitle: Manage your own address space
 ---
+---
+headline1: BGP Peering
+---
+headline2: Your own IP Space
+---
+headline3: At Data Center Light
+---
+header_background_color: #6298CB
+---
+header_text_color: text-light
+---
+content1_text:
+
+## For whom is BGP peering?
+
+If you have your own ASN with IPv6 or IPv4 address space, you can
+announce it in our data centers.
+
+## What is required for BGP peering
+
+To be able to peer with us, you will need to have IP addresses in our
+data center. This is the case if you have one of these products:
+
+* [A Data Center Light VM](../virtual-machine-hosting/)
+* [An IPv6 Only VM](../ipv6-only-hosting/)
+* [Physical co-located hardware](../colocation/)
+
+## How to setup BGP peering
+
+Send a mail to support -at- ungleich.ch containing the following
+information:
+
+* Your ASN and the list of networks you intend to announce
+* Your local IP addresses
+
+Before we can peer, ensure that all objects in the RIPE database are
+setup correctly. Specifically ensure that you have
+
+* route6 / route objects
+* inet6num / inetnum objects
+* ROA / RPKI configured
+
+## Pricing
+
+Setting up peering has a 42 CHF one time fee.
diff --git a/content/u/projects/ipv6-chat/contents.lr b/content/u/projects/ipv6-chat/contents.lr
index 268cdee..c5eeb5b 100644
--- a/content/u/projects/ipv6-chat/contents.lr
+++ b/content/u/projects/ipv6-chat/contents.lr
@@ -22,7 +22,7 @@ If you already have a matrix account, you can join
 
 If you don't have a matrix account, you find the instructions
 on [how to create a matrix account on our Open Chat
-page](../open-chat).
+page](/u/projects/open-chat/).
 
 ## Other chat rooms
 
diff --git a/content/u/projects/this-week-via-ipv6/contents.lr b/content/u/projects/this-week-via-ipv6/contents.lr
index 846b328..64ca9f5 100644
--- a/content/u/projects/this-week-via-ipv6/contents.lr
+++ b/content/u/projects/this-week-via-ipv6/contents.lr
@@ -2,6 +2,8 @@ title: This.week.via-IPv6.com
 ---
 subtitle: What happens in a week with IPv6?
 ---
+_discoverable: no
+---
 content:
 
 To be able to track what is going on in the IPv6 world, we created a
diff --git a/content/u/projects/ubookmark/contents.lr b/content/u/projects/ubookmark/contents.lr
new file mode 100644
index 0000000..b04cdfa
--- /dev/null
+++ b/content/u/projects/ubookmark/contents.lr
@@ -0,0 +1,29 @@
+title: ubookmark
+---
+subtitle:
+ubookmark is a simple link collecting website.
+---
+content:
+
+## Introduction
+
+ubookmark is based on Django, Bootstrap 4
+and uses LDAP authentication. It was written and designed for
+running [IPv6.blog](https://IPv6.blog), but should be re-usable in
+other situations.
+
+ubookmark is FOSS and its source code can be found on
+[code.ungleich.ch](https://code.ungleich.ch/ungleich-public/ubookmark/).
+
+## How to install
+
+* git clone above repository
+* Setup a local postgresql database named "ubookmark"
+* Copy ubookmark/sample_settings.py to ubookmark/local_settings.py
+* Modify settings as needed
+* Install requirements using `pip install -r requirements.txt`
+
+## How to run
+
+It is a standard Django app, so you can use uwsgi
+or the included server for testing: `python manage.py runserver`.
diff --git a/models/page-2020.ini b/models/page-2020.ini
index 2a9b653..b526442 100644
--- a/models/page-2020.ini
+++ b/models/page-2020.ini
@@ -17,3 +17,7 @@ type = markdown
 [fields.image]
 label = Image
 type = url
+
+[fields.slider]
+type = flow
+flow_blocks = slider
diff --git a/templates/blocks/slider.html b/templates/blocks/slider.html
new file mode 100644
index 0000000..1397967
--- /dev/null
+++ b/templates/blocks/slider.html
@@ -0,0 +1,3 @@
+<div class="text-block text-block-{{ this.class }}">
+  {{ this.text }}
+</div>
diff --git a/templates/layout-2020.html b/templates/layout-2020.html
index f257403..83686b1 100644
--- a/templates/layout-2020.html
+++ b/templates/layout-2020.html
@@ -99,6 +99,12 @@
         </form>
       </div>
     </nav>
+    {# Priority:
+    If slider given, take slider.
+    If headline1/2/3 given, take the headline.
+    Else default to boxed title + subtitle
+    #}
+
     {% if this.headline1 or this.headline2 or this.headline3 %}
     <div class="jumbotron jumbotron-fluid" style="background-color: {{this.header_background_color}};">
       <div class="container-fluid">
diff --git a/templates/summary-page.html b/templates/summary-page.html
index aed0ef0..a7a45e3 100644
--- a/templates/summary-page.html
+++ b/templates/summary-page.html
@@ -6,6 +6,22 @@
 
 <div class="container">
   {% for childpage in this.children %}
+
+  {# Setup default settings for the overview #}
+
+  {% if childpage.header_background_color %}
+      {% set div_style = 'background-color:' + childpage.header_background_color + ';' %}
+  {% else %}
+      {% set div_style = 'background-color: #6FB0E5;' %}
+  {% endif %}
+
+  {% if childpage.header_text_color %}
+      {% set div_classes = childpage.header_text_color %}
+  {% else %}
+      {% set div_classes = 'text-light' %}
+  {% endif %}
+
+
   {% if loop.first %}
   <div class="row mb-3">
     {% endif %}
@@ -16,8 +32,13 @@
         <img class="card-img-top" src="{{ childpage.image }}"
              alt="{{ childpage.title }}">
         {% else %}
-        <img class="card-img-top" src="/u/image/cards/placeholder.jpg"
-             alt="{{ childpage.title }}">
+        <div style="{{ div_style }} font-weight: bold; padding-left:
+        12px; padding-right: 6px; text-transform: uppercase;"
+             class="{{ div_classes }} display-4">
+          &nbsp;<br/>
+          {{ childpage.title }}<sup style="font-weight: normal;">≠</sup><br/>
+          &nbsp;<br/>
+        </div>
         {% endif %}
         </a>
         <div class="card-body">