diff --git a/django/website/tabbed_page/tab_pool.py b/django/website/tabbed_page/tab_pool.py
index f3aa1ee98c86eb18852e9dd1ee12d4cf843b7a11..cf8e2c7f826b14c50c8323f8f1a05a823635a3f5 100644
--- a/django/website/tabbed_page/tab_pool.py
+++ b/django/website/tabbed_page/tab_pool.py
@@ -24,3 +24,26 @@ def clear_tabs():
     global _pool
 
     _pool = {}
+
+
+class BasicHtmlTab(object):
+    """ A simple tab to display html
+
+    Settings:
+        title: The title of the tab
+            (in the header, not in
+             the tab)
+        body: The tab html
+    """
+    template_name = 'tabbed_page/basic_html_tab.html'
+
+    def get_context_data(self, **kwargs):
+        title = kwargs.get('title', '(no title)')
+        body = kwargs.get('body', '(no body)')
+        return {
+            'title': title,
+            'body': body
+        }
+
+
+register_tab('basic-html-tab', BasicHtmlTab())
diff --git a/django/website/tabbed_page/templates/tabbed_page/basic_html_tab.html b/django/website/tabbed_page/templates/tabbed_page/basic_html_tab.html
new file mode 100644
index 0000000000000000000000000000000000000000..c9542322538a214cbd945aa3642e929e4a918a49
--- /dev/null
+++ b/django/website/tabbed_page/templates/tabbed_page/basic_html_tab.html
@@ -0,0 +1,12 @@
+{% load i18n %}
+<div class="panel panel-default">
+    <div class="panel-heading container-fluid">
+        <div class="col-sm-5 col-xs-12">
+            <span class="fa fa-align-justify fa-fw"></span>
+            {% trans title %}
+            </div>
+        </div>
+    <div class="panel-body">
+        {{ body|safe }}
+    </div>
+</div>
diff --git a/django/website/tabbed_page/templates/tabbed_page/tabbed_page.html b/django/website/tabbed_page/templates/tabbed_page/tabbed_page.html
index 0e67aa8d761c1c8d02679a327385f83b9419eb99..a7c0781ed007a6917229ca2d691946baddbb716a 100644
--- a/django/website/tabbed_page/templates/tabbed_page/tabbed_page.html
+++ b/django/website/tabbed_page/templates/tabbed_page/tabbed_page.html
@@ -1,15 +1,27 @@
 {% extends "base_side.html" %}
 {% load i18n %}
-{% load bootstrap3 %}
-{% load render_widget %}
+{% load render_tab %}
 
 {% block maincontent %}
-    <h1 class="page-header"><span class="fa fa-tabbed-page fa-fw"></span>{% trans "Tabbed Page" %}</h1>
-    <h2>Page = {{ view.page }}</h2>
+<div class="row">
+    <div class="col-xs-12">
+        <h1 class="page-header header-tabs"><span class="fa fa-pencil fa-fw"></span>{% trans "View &amp; Edit" %}</h1>
+        <ul class="nav nav-tabs pull-right" role="tablist">
+            {% for tab in view.tabs %}
+                <li role="presentation"
+                    {% if tab == view.active_tab %}class="active"{% endif %}>
+                    <a href="#" aria-controls="..." role="tab" data-toggle="tab">
+                        {% trans tab.label %}
+                    </a>
+                </li>
+            {% endfor %}
+        </ul>
+    </div>
+</div>
 
-    <ul>
-    {% for tab in view.tabs %}
-    <li>{{ tab }}</li>
-    {% endfor %}
-    </ul>
+<div class='row'>
+    <div class="col-lg-12">
+        {{ view.active_tab|render_tab }}
+    </div>
+</div>
 {% endblock maincontent %}
diff --git a/django/website/tabbed_page/urls.py b/django/website/tabbed_page/urls.py
index 58eae80928ebd4202d6b541b7947b1fc018406d9..883261c485a4faa128e917ba9efdfe3899445f18 100644
--- a/django/website/tabbed_page/urls.py
+++ b/django/website/tabbed_page/urls.py
@@ -4,7 +4,9 @@ from django.contrib.auth.decorators import login_required
 from .views import TabbedPageView
 
 urlpatterns = [
-    url(r'^(?P<name>[^/]*)(/(?P<tab_name>.*))?$',
-        TabbedPageView.as_view(),
+    url(r'^/$', login_required(TabbedPageView.as_view())),
+    url(r'^(?P<name>\w+)/$', login_required(TabbedPageView.as_view())),
+    url(r'^(?P<name>\w+)/(?P<tab_name>\w+)/$',
+        login_required(TabbedPageView.as_view()),
         name='tabbed-page')
 ]
diff --git a/django/website/tabbed_page/views.py b/django/website/tabbed_page/views.py
index ffb1e34649bcd0eebc4588c833ff0838f12451d2..b6ba7901d929042f9b57dcf9763e9f8334463c40 100644
--- a/django/website/tabbed_page/views.py
+++ b/django/website/tabbed_page/views.py
@@ -6,6 +6,7 @@ from .models import TabbedPage
 class TabbedPageView(TemplateView):
     template_name = "tabbed_page/tabbed_page.html"
     _page = None
+    _active_tab = None
 
     @property
     def tabs(self):
@@ -24,3 +25,18 @@ class TabbedPageView(TemplateView):
             self._page = TabbedPage.objects.get(name=name)
 
         return self._page
+
+    @property
+    def active_tab(self):
+        if self._active_tab is None:
+            candidates = []
+            tab_name = self.kwargs.get('tab_name')
+            if tab_name:
+                candidates = self.page.tabs.all().filter(name=tab_name)
+            if len(candidates) == 0:
+                candidates = self.page.tabs.all().filter(default=True)
+            if len(candidates) == 0:
+                candidates = self.page.tabs.all()
+            if len(candidates) > 0:
+                self._active_tab = candidates[0]
+        return self._active_tab