diff --git a/SciPost_v1/settings/local_jorran.py b/SciPost_v1/settings/local_jorran.py
index 9740c928c59730c5e5e807600a23514eb6ea0d80..9b0833751e951b28d7e4727fbf642ed9a5ffd0b0 100644
--- a/SciPost_v1/settings/local_jorran.py
+++ b/SciPost_v1/settings/local_jorran.py
@@ -11,7 +11,6 @@ MIDDLEWARE_CLASSES += (
     'debug_toolbar.middleware.DebugToolbarMiddleware',
 )
 INTERNAL_IPS = ['127.0.0.1', '::1']
-DATABASES['default']['PORT'] = '5433'
 
 # Static and media
 STATIC_ROOT = '/Users/jorranwit/Develop/SciPost/scipost_v1/local_files/static/'
@@ -21,3 +20,5 @@ WEBPACK_LOADER['DEFAULT']['BUNDLE_DIR_NAME'] =\
 
 MAILCHIMP_API_USER = get_secret("MAILCHIMP_API_USER")
 MAILCHIMP_API_KEY = get_secret("MAILCHIMP_API_KEY")
+
+DATABASES['default']['PORT'] = '5433'
diff --git a/SciPost_v1/urls.py b/SciPost_v1/urls.py
index cb5b11d4bc6ea39ec73f242818ed3c5c5ebd5435..eaeb305c248143f2cd81d8aecb3ce5c75a3bab26 100644
--- a/SciPost_v1/urls.py
+++ b/SciPost_v1/urls.py
@@ -4,15 +4,27 @@ from django.conf.urls.static import static
 from django.contrib import admin
 
 from ajax_select import urls as ajax_select_urls
+from rest_framework import routers
 
+from news.viewsets import NewsItemViewSet
 from journals.constants import REGEX_CHOICES
 
+# Journal URL Regex
 JOURNAL_REGEX = '(?P<doi_label>%s)' % REGEX_CHOICES
 
+
+# API Routing
+router = routers.SimpleRouter()
+router.register(r'news', NewsItemViewSet)
+urlpatterns = router.urls
+
+
+# Base URLs
 urlpatterns = [
     url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
     url(r'^admin/', include(admin.site.urls)),
     url(r'^ajax_select/', include(ajax_select_urls)),
+    url(r'^api/', include(router.urls, namespace='api')),
     url(r'^docs/', include('sphinxdoc.urls')),
     url(r'^10.21468/%s/' % JOURNAL_REGEX, include('journals.urls.journal', namespace="journal")),
     url(r'^%s/' % JOURNAL_REGEX, include('journals.urls.journal', namespace="journal")),
diff --git a/commentaries/factories.py b/commentaries/factories.py
index 978352975fff10fa564883dbf0388a2e0ebbcda3..c908621441bff8715a7bbaf5cce7cd3833994445 100644
--- a/commentaries/factories.py
+++ b/commentaries/factories.py
@@ -42,10 +42,10 @@ class CommentaryFactory(factory.django.DjangoModelFactory):
     def add_authors(self, create, extracted, **kwargs):
         contributors = list(Contributor.objects.order_by('?')
                             .exclude(pk=self.requested_by.pk).all()[:4])
-        for contrib in contributors:
-            self.author_list += ', %s %s' % (contrib.user.first_name, contrib.user.last_name)
-            if create:
-                self.authors.add(contrib)
+        self.author_list = ', '.join(
+            ['%s %s' % (contrib.user.first_name,
+                        contrib.user.last_name) for contrib in contributors])
+        self.authors.add(*contributors)
 
 
 class VettedCommentaryFactory(CommentaryFactory):
diff --git a/commentaries/templates/commentaries/_commentary_card_content.html b/commentaries/templates/commentaries/_commentary_card_content.html
index 51a1a1a1b564cdf0340184576be620ef145512ea..33aee23fc70a3f14b779e034528259c8629f7a07 100644
--- a/commentaries/templates/commentaries/_commentary_card_content.html
+++ b/commentaries/templates/commentaries/_commentary_card_content.html
@@ -2,10 +2,10 @@
     <h3 class="card-title">
         <a href="{% url 'commentaries:commentary' commentary.arxiv_or_DOI_string %}">{{ commentary.title }}</a>
     </h3>
-    <p class="card-text">
-        by {{ commentary.author_list }}{% if commentary.type == 'published' %}, {{ commentary.journal }} {{ commentary.volume }}, {{ commentary.pages }}{% elif commentary.type == 'preprint' %} - <a href="{{ commentary.arxiv_link }}">{{ commentary.arxiv_link }}</a>{% endif %}
+    <p class="mt-0 mb-3">
+        by {{ commentary.author_list }}{% if commentary.type == 'published' %}, {{ commentary.journal }} {{ commentary.volume }}, {{ commentary.pages }}{% elif commentary.type == 'preprint' %} &middot; <a href="{{ commentary.arxiv_link }}">{{ commentary.arxiv_link }}</a>{% endif %}
     </p>
     <p class="card-text text-muted">
-        {% if commentary.pub_date %}(published {{ commentary.pub_date }}) - {% endif %}latest activity: {{ commentary.latest_activity }}
+        {% if commentary.pub_date %}(published {{ commentary.pub_date }}) &middot; {% endif %}latest activity: {{ commentary.latest_activity }}
     </p>
 </div>
diff --git a/commentaries/templates/commentaries/howto.html b/commentaries/templates/commentaries/howto.html
index e954e8030089b4d8a16a22868ad0e2da6d322aaa..eb2cc763336eefd9d600790b906b19dc3f2249b5 100644
--- a/commentaries/templates/commentaries/howto.html
+++ b/commentaries/templates/commentaries/howto.html
@@ -6,25 +6,27 @@
   <script type="text/javascript" async src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-MML-AM_CHTML"></script>
 {% endblock headsup %}
 
-{% block bodysup %}
-
-
-<section>
-  <hr class="hr12">
-  <h1>SciPost Commentaries how-to</h1>
-  <h3>Activation procedure</h3>
-  <p>A Commentary Page can be requested by any registered SciPost Contributor for any published scientific paper or arXiv preprint by filling the <a href="{% url 'commentaries:request_commentary' %}">Commentary request form</a>. After vetting by an Editor, the Commentary Page is activated and made open for Comments from registered SciPost Contributors. Authors can reply to Comments, and Contributors can add Comments to the chain.</p>
-  <ul>
-    <li><a href="{% url 'commentaries:request_commentary' %}">Request opening a SciPost Commentary Page</a></li>
-  </ul>
-  
-  <br/>
-  <h3>Standardized URLs</h3>
-  <p>In order to facilitate localization of commentaries on particular publications, within SciPost, all Commentary Pages have a standardized URL of the form</p>
-  <p>https://scipost.org/commentary/IDENTIFIER</p>
-  <p>where IDENTIFIER is either the (by definition unique and stable) DOI of the published paper, or the arXiv identifier in new (arXiv:####.#####v#) or old (cond-mat/#######v#) style. NOTE: for arXiv, we systematically require the presence of the version number in order to avoid confusion (and yes, we do so even if there exists only one version).</p>
-
-</section>
-
-
-{% endblock bodysup %}
+{% block content %}
+
+<div class="row">
+    <div class="col-12">
+        <h1 class="highlight">SciPost Commentaries how-to</h1>
+    </div>
+</div>
+<div class="row">
+    <div class="col-12">
+        <h2>Activation procedure</h2>
+          <p>A Commentary Page can be requested by any registered SciPost Contributor for any published scientific paper or arXiv preprint by filling the <a href="{% url 'commentaries:request_commentary' %}">Commentary request form</a>. After vetting by an Editor, the Commentary Page is activated and made open for Comments from registered SciPost Contributors. Authors can reply to Comments, and Contributors can add Comments to the chain.</p>
+          <ul>
+            <li><a href="{% url 'commentaries:request_commentary' %}">Request opening a SciPost Commentary Page</a></li>
+          </ul>
+
+          <br/>
+          <h3>Standardized URLs</h3>
+          <p>In order to facilitate localization of commentaries on particular publications, within SciPost, all Commentary Pages have a standardized URL of the form</p>
+          <p class="text-blue">https://scipost.org/commentary/IDENTIFIER</p>
+          <p>where IDENTIFIER is either the (by definition unique and stable) DOI of the published paper, or the arXiv identifier in new (arXiv:####.#####v#) or old (cond-mat/#######v#) style. NOTE: for arXiv, we systematically require the presence of the version number in order to avoid confusion (and yes, we do so even if there exists only one version).</p>
+    </div>
+</div>
+
+{% endblock %}
diff --git a/commentaries/views.py b/commentaries/views.py
index d638ff79a70e9cdcc43b8d7acf2250ec48fefc3b..dcbf31f3ff6c8fc1a92becea8812706c7e13e541 100644
--- a/commentaries/views.py
+++ b/commentaries/views.py
@@ -1,6 +1,6 @@
 from django.shortcuts import get_object_or_404, render
 from django.contrib import messages
-from django.contrib.auth.decorators import permission_required
+from django.contrib.auth.decorators import login_required, permission_required
 from django.core.mail import EmailMessage
 from django.core.urlresolvers import reverse, reverse_lazy
 from django.shortcuts import redirect
@@ -20,11 +20,13 @@ from comments.forms import CommentForm
 import strings
 
 
+@login_required
 @permission_required('scipost.can_request_commentary_pages', raise_exception=True)
 def request_commentary(request):
     return render(request, 'commentaries/request_commentary.html')
 
 
+@method_decorator(login_required, name='dispatch')
 @method_decorator(permission_required(
     'scipost.can_request_commentary_pages', raise_exception=True), name='dispatch')
 class RequestCommentary(CreateView):
diff --git a/comments/templates/comments/vet_submitted_comments.html b/comments/templates/comments/vet_submitted_comments.html
new file mode 100644
index 0000000000000000000000000000000000000000..caf4ef84035553431e5a93d6c5c5a97ad8c3f047
--- /dev/null
+++ b/comments/templates/comments/vet_submitted_comments.html
@@ -0,0 +1,96 @@
+{% extends 'scipost/_personal_page_base.html' %}
+
+{% block breadcrumb_items %}
+    {{block.super}}
+    <span class="breadcrumb-item">Vet submitted Comments</span>
+{% endblock %}
+
+{% load bootstrap %}
+{% load filename %}
+{% load file_extentions %}
+
+{% block pagetitle %}: vet comments{% endblock pagetitle %}
+
+{% block content %}
+
+{% if not comments_to_vet %}
+<div class="row">
+    <div class="col-12">
+        <h1>There are no comments for you to vet.</h1>
+        <h3><a href="{% url 'scipost:personal_page' %}">Return to personal page</a></h3>
+    </div>
+</div>
+{% else %}
+<div class="row">
+    <div class="col-12">
+        <h1 class="highlight">SciPost Comments to vet:</h1>
+    </div>
+</div>
+
+<div class="row">
+    <div class="col-12">
+        {% for comment_to_vet in comments_to_vet %}
+            <div class="card card-vetting">
+                <div class="card-header">
+
+                    {% if comment_to_vet.commentary %}
+                        <h2>From Commentary (<a href="{% url 'commentaries:commentary' arxiv_or_DOI_string=comment_to_vet.commentary.arxiv_or_DOI_string %}">link</a>)</h2>
+                        {% include 'commentaries/_commentary_summary.html' with commentary=comment_to_vet.commentary %}
+                    {% endif %}
+
+                    {% if comment_to_vet.submission %}
+                        <h2>From Submission (<a href="{% url 'submissions:submission' arxiv_identifier_w_vn_nr=comment_to_vet.submission.arxiv_identifier_w_vn_nr %}">link</a>)</h2>
+                        {% include 'submissions/_submission_summary_short.html' with submission=comment_to_vet.submission %}
+                    {% endif %}
+
+                    {% if comment_to_vet.thesislink %}
+                        <h2>From Thesis Link (<a href="{% url 'theses:thesis' comment_to_vet.thesislink.id %}">link</a>)</h2>
+                        {% include 'theses/_thesislink_information.html' with thesislink=comment_to_vet.thesislink %}
+                    {% endif %}
+                </div>
+                <div class="card-block">
+
+                    <h2 class="card-title">The Comment to be vetted:</h2>
+
+                    <div class="row">
+                        <div class="col-md-6">
+                            {% include 'comments/_comment_identifier_vetting.html' with comment=comment_to_vet %}
+                            <hr class="small">
+
+                            <h3>Comment text:</h3>
+                            <p>{{ comment_to_vet.comment_text }}</p>
+
+                            {% if comment_to_vet.file_attachment %}
+                                <h3>Attachment:</h3>
+                                <p>
+                                    <a target="_blank" href="{{ comment_to_vet.file_attachment.url }}">
+                                        {% if comment_to_vet.file_attachment|is_image %}
+                                            <img class="attachment attachment-comment" src="{{ comment_to_vet.file_attachment.url }}">
+                                        {% else %}
+                                            {{ comment_to_vet.file_attachment|filename }}<br><small>{{ comment_to_vet.file_attachment.size|filesizeformat }}</small>
+                                        {% endif %}
+                                    </a>
+                                </p>
+                            {% endif %}
+
+                            {% if comment_to_vet.remarks_for_editors %}
+                                <h3>Remarks for Editors only:</h3>
+                                <p>{{ comment_to_vet.remarks_for_editors }}</p>
+                            {% endif %}
+                        </div>
+                        <div class="col-md-6">
+                            <form action="{% url 'comments:vet_submitted_comment_ack' comment_id=comment_to_vet.id %}" method="post">
+                                {% csrf_token %}
+                                {{ form|bootstrap }}
+                                <input class="btn btn-primary" type="submit" value="Submit" />
+                            </form>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        {% endfor %}
+    </div>
+</div>
+{% endif %}
+
+{% endblock content %}
diff --git a/journals/managers.py b/journals/managers.py
index e9dafca3f66a675782236d1b897c886ebf4d0a1d..3d5c8e9168a1ca9800edae2e5e5a267efcc42670 100644
--- a/journals/managers.py
+++ b/journals/managers.py
@@ -5,6 +5,11 @@ from django.utils import timezone
 from .constants import STATUS_PUBLISHED, STATUS_DRAFT
 
 
+class JournalManager(models.Manager):
+    def active(self):
+        return self.filter(active=True)
+
+
 class IssueManager(models.Manager):
     def get_published(self, *args, **kwargs):
         try:
diff --git a/journals/models.py b/journals/models.py
index d539244250d48992603501f25ffc47f94ee73cdf..f472114235bed8485792f20c0e08e290ab5ad12d 100644
--- a/journals/models.py
+++ b/journals/models.py
@@ -10,7 +10,7 @@ from .constants import SCIPOST_JOURNALS, SCIPOST_JOURNALS_DOMAINS,\
                        STATUS_DRAFT, STATUS_PUBLISHED, ISSUE_STATUSES,\
                        CCBY4, CC_LICENSES, CC_LICENSES_URI
 from .helpers import paper_nr_string, journal_name_abbrev_citation
-from .managers import IssueManager, PublicationManager
+from .managers import IssueManager, PublicationManager, JournalManager
 
 from scipost.constants import SCIPOST_DISCIPLINES, SCIPOST_SUBJECT_AREAS
 from scipost.fields import ChoiceArrayField
@@ -36,6 +36,8 @@ class Journal(models.Model):
     issn = models.CharField(max_length=16, default='2542-4653')
     active = models.BooleanField(default=True)
 
+    objects = JournalManager()
+
     def __str__(self):
         return self.get_name_display()
 
@@ -188,41 +190,6 @@ class Publication(models.Model):
                 + ', ' + self.get_paper_nr()
                 + ' (' + self.publication_date.strftime('%Y') + ')')
 
-    def citations_as_ul(self):
-        output = '<ul>'
-        context = Context({})
-        nr = 0
-        for cit in self.citedby:
-            output += '<li>{{ auth_' + str(nr) + ' }}'
-            context['auth_' + str(nr)] = (cit['first_author_given_name']
-                                          + ' ' + cit['first_author_surname'])
-            if cit['multiauthors']:
-                output += ' <em>et al.</em>'
-            output += (', <em>{{ title_' + str(nr) + ' }}</em>, <br/>'
-                       '{{ journal_abbrev_' + str(nr) + ' }}')
-            context['title_' + str(nr)] = cit['article_title']
-            context['journal_abbrev_' + str(nr)] = cit['journal_abbreviation']
-            if cit['volume']:
-                context['volume_' + str(nr)] = cit['volume']
-                output += ' <strong>{{ volume_' + str(nr) + ' }}</strong>'
-            output += ', '
-            if cit['first_page']:
-                output += '{{ first_page_' + str(nr) + ' }}'
-                context['first_page_' + str(nr)] = cit['first_page']
-            elif cit['item_number']:
-                output += '{{ item_number_' + str(nr) + ' }}'
-                context['item_number_' + str(nr)] = cit['item_number']
-            output += (' ({{ year_' + str(nr) + ' }}) '
-                       '<a href="https://doi.org/{{ doi_' + str(nr) + ' }}" '
-                       'target="_blank">[Crossref]</a>')
-            context['year_' + str(nr)] = cit['year']
-            context['doi_' + str(nr)] = cit['doi']
-            output += '</li>'
-            nr += 1
-        output += '</ul>'
-        template = Template(output)
-        return template.render(context)
-
 
 class Deposit(models.Model):
     """
diff --git a/journals/templates/journals/_base.html b/journals/templates/journals/_base.html
index d1813d03f65b98262441e431460898f13a213ba8..190ee0e1868bafdd7d58d65264b552ba037c03b6 100644
--- a/journals/templates/journals/_base.html
+++ b/journals/templates/journals/_base.html
@@ -6,7 +6,7 @@
 {% block body_class %}{{block.super}} journals{% endblock %}
 
 {% block breadcrumb %}
-    <nav class="breadcrumb py-md-2 px-0">
+    <nav class="breadcrumb py-md-2 px-0 hidden-sm-down">
         <div class="container">
             {% block breadcrumb_items %}
                 <a href="{% url 'journals:journals' %}" class="breadcrumb-item">Journals</a>
@@ -17,7 +17,7 @@
 
 {% block secondary_navbar %}
 <div class="container my-2">
-    <nav class="navbar navbar-secondary px-0">
+    <nav class="navbar navbar-secondary px-0 pt-3">
         <div>
             <h2 class="banner d-inline-block mr-2"><a href="{% url 'scipost:landing_page' journal.doi_label %}">{{journal}}</a></h2>
             <ul class="links">
diff --git a/journals/templates/journals/_publication_card_content.html b/journals/templates/journals/_publication_card_content.html
index 34689d4384a4dc7cade039f57f3216a113dd250b..53231d986a807f0b3dee3cf3bafc8c613e7e36bf 100644
--- a/journals/templates/journals/_publication_card_content.html
+++ b/journals/templates/journals/_publication_card_content.html
@@ -1,6 +1,14 @@
+<div class="card-header mx-0 px-2">
+    <h3 class="card-title mb-0 "><a href="{{publication.get_absolute_url}}">{{ publication.title }}</a></h3>
+</div>
 <div class="card-block publication-{{publication.id}}">
-    <h3 class="card-title"><a href="{{publication.get_absolute_url}}">{{ publication.title }}</a></h3>
-    <p class="card-text">{{ publication.author_list }}</p>
-    <p class="card-text text-muted">{{ publication.citation }} - published {{ publication.publication_date|date:'j F Y' }} | <a href="javascript:;" class="mx-2" data-toggle="toggle" data-target=".card-block.publication-{{publication.id}} .abstract">Toggle abstract</a> <a href="{{publication.get_absolute_url}}/pdf" target="_blank">pdf</a></p>
-    <p class="abstract mb-0 py-2" style="display:none;">{{ publication.abstract }}</p>
+    <p class="card-text mb-2">{{ publication.author_list }}</p>
+    <p class="card-text text-muted">
+        {{ publication.citation }} &middot;
+        <span class="font-weight-light">published {{ publication.publication_date|date:'j F Y' }}</span>
+        <span class="mx-1">|</span>
+        <a href="javascript:;" data-toggle="toggle" data-target=".card-block.publication-{{publication.id}} .abstract">Toggle abstract</a>
+        &middot; <a href="{{publication.get_absolute_url}}/pdf" target="_blank">pdf</a>
+    </p>
+    <p class="abstract mb-0 mt-2 py-2" style="display:none;">{{ publication.abstract }}</p>
 </div>
diff --git a/journals/templates/journals/_publication_citations.html b/journals/templates/journals/_publication_citations.html
index 355d008552537c5a70eec3db1b156406089db734..7e47e1448d34865c403c03c79259978d36004437 100644
--- a/journals/templates/journals/_publication_citations.html
+++ b/journals/templates/journals/_publication_citations.html
@@ -1,49 +1,8 @@
-{# TO BE USED IN FUTURE #}
-
-
-
-{% comment %}
-output = '<ul>'
-context = Context({})
-nr = 0
-{
-    first_author_given_name: 'John',
-    first_author_surname: 'Doe',
-    multiauthors: true
-    article_title: 'Phase transitions on 2D Ising model',
-    journal_abbreviation: 'SciPostPhys',
-    vol: ''
-
-}
-for cit in self.citedby:
-    output += '<li>{{ auth_' + str(nr) + ' }}'
-    context['auth_' + str(nr)] = (cit['first_author_given_name']
-                                  + ' ' + cit['first_author_surname'])
-    if cit['multiauthors']:
-        output += ' <em>et al.</em>'
-    output += (', <em>{{ title_' + str(nr) + ' }}</em>, <br/>'
-               '{{ journal_abbrev_' + str(nr) + ' }}')
-    context['title_' + str(nr)] = cit['article_title']
-    context['journal_abbrev_' + str(nr)] = cit['journal_abbreviation']
-    if cit['volume']:
-        context['volume_' + str(nr)] = cit['volume']
-        output += ' <strong>{{ volume_' + str(nr) + ' }}</strong>'
-    output += ', '
-    if cit['first_page']:
-        output += '{{ first_page_' + str(nr) + ' }}'
-        context['first_page_' + str(nr)] = cit['first_page']
-    elif cit['item_number']:
-        output += '{{ item_number_' + str(nr) + ' }}'
-        context['item_number_' + str(nr)] = cit['item_number']
-    output += (' ({{ year_' + str(nr) + ' }}) '
-               '<a href="https://doi.org/{{ doi_' + str(nr) + ' }}" '
-               'target="_blank">[Crossref]</a>')
-    context['year_' + str(nr)] = cit['year']
-    context['doi_' + str(nr)] = cit['doi']
-    output += '</li>'
-    nr += 1
-output += '</ul>'
-template = Template(output)
-return template.render(context)
-
-{% endcomment %}
+<ul>
+    {% for cite in publication.citedby %}
+        <li>
+            {{cite.first_author_given_name}} {{cite.first_author_surname}}{% if cite.multiauthors %} <em>et al.</em>{% endif %}, <em>{{cite.article_title}}</em><br>
+            {{cite.journal_abbreviation}}{% if cite.volume %} <strong>{{cite.volume}}</strong>{% endif %}, {{cite.first_page|default_if_none:''}} {{cite.item_number|default_if_none:''}} ({{cite.year}}) <a href="https://doi.org/{{cite.doi}}" target="_blank">[Crossref]</a>
+        </li>
+    {% endfor %}
+</ul>
diff --git a/journals/templates/journals/_publication_details.html b/journals/templates/journals/_publication_details.html
index b91b561f69b9ceb9f5f964b548f4ea37537ff1ae..03e1a66d1a285e4c84b6b181a2a11cd19ed31fc0 100644
--- a/journals/templates/journals/_publication_details.html
+++ b/journals/templates/journals/_publication_details.html
@@ -4,8 +4,8 @@
     <div class="col-12">
         <h2 class="pb-1 text-blue">{{publication.title}}</h2>
 
-        <p class="font-weight-bold mb-1">{{ publication.author_list }}</p>
-        <p class="text-muted">{{ publication.citation }} | published {{ publication.publication_date|date:'j F Y' }}</p>
+        <p class="mb-1">{{ publication.author_list }}</p>
+        <p class="text-muted">{{ publication.citation }} &middot; published {{ publication.publication_date|date:'j F Y' }}</p>
 
         <ul class="publicationClickables">
             <li>doi:  {{publication.doi_string}}</li>
@@ -32,7 +32,7 @@
 
 
 <div class="modal" id="bibtextmodal" tabindex="-1" role="dialog" aria-hidden="true">
-    <div class="modal-dialog" role="document">
+    <div class="modal-dialog modal-lg" role="document">
         <div class="modal-content">
             <div class="modal-body">
                 <div class="pb-4">
diff --git a/journals/templates/journals/_publication_details_small.html b/journals/templates/journals/_publication_details_small.html
new file mode 100644
index 0000000000000000000000000000000000000000..1d8b2537ac01a18064d756c14be71c556985e252
--- /dev/null
+++ b/journals/templates/journals/_publication_details_small.html
@@ -0,0 +1,5 @@
+<h5 class="pb-0">{{publication.get_subject_area_display}}</h5>
+<h3><a href="{{publication.get_absolute_url}}">{{publication.title}}</a></h3>
+
+<p class="mt-0 mb-3">{{ publication.author_list }}</p>
+<p class="text-muted mb-0">{{ publication.citation }} &middot; <span class="font-weight-light">published {{ publication.publication_date|date:'j F Y' }}</span></p>
diff --git a/journals/templates/journals/add_author.html b/journals/templates/journals/add_author.html
index 1be0c6ec70ab651b7199a365944bf59fa65046de..89686e236c86c06fe66a52372e098f01f4922d0b 100644
--- a/journals/templates/journals/add_author.html
+++ b/journals/templates/journals/add_author.html
@@ -2,6 +2,18 @@
 
 {% block pagetitle %}: add author to publication{% endblock pagetitle %}
 
+{% block breadcrumb %}
+    <nav class="breadcrumb py-md-2 px-0 hidden-sm-down">
+        <div class="container">
+            <a href="{% url 'journals:journals' %}" class="breadcrumb-item">Journals</a>
+            <a href="{{publication.in_issue.in_volume.in_journal.get_absolute_url}}" class="breadcrumb-item">{{publication.in_issue.in_volume.in_journal}}</a>
+            <a href="{{publication.in_issue.get_absolute_url}}" class="breadcrumb-item">{{publication.in_issue.short_str}}</a>
+            <a href="{{publication.get_absolute_url}}" class="breadcrumb-item">{{publication.citation}}</a>
+            <span class="breadcrumb-item active">Add author to publication</span>
+        </div>
+    </nav>
+{% endblock %}
+
 {% load scipost_extras %}
 {% load bootstrap %}
 
diff --git a/journals/templates/journals/create_citation_list_metadata.html b/journals/templates/journals/create_citation_list_metadata.html
index c42b5f44725791918c62da5621955c2a570fef52..292301ee572ebbf850624e07462cd3f5a4fb0d5c 100644
--- a/journals/templates/journals/create_citation_list_metadata.html
+++ b/journals/templates/journals/create_citation_list_metadata.html
@@ -2,40 +2,56 @@
 
 {% block pagetitle %}: Create citation list metadata{% endblock pagetitle %}
 
-{% block bodysup %}
-
-
-<section>
-  <div class="flex-greybox">
-    <h1>Create citation list metadata page</h1>
+{% block breadcrumb %}
+    <nav class="breadcrumb py-md-2 px-0 hidden-sm-down">
+        <div class="container">
+            <a href="{% url 'journals:journals' %}" class="breadcrumb-item">Journals</a>
+            <a href="{{publication.in_issue.in_volume.in_journal.get_absolute_url}}" class="breadcrumb-item">{{publication.in_issue.in_volume.in_journal}}</a>
+            <a href="{{publication.in_issue.get_absolute_url}}" class="breadcrumb-item">{{publication.in_issue.short_str}}</a>
+            <a href="{{publication.get_absolute_url}}" class="breadcrumb-item">{{publication.citation}}</a>
+            <span class="breadcrumb-item active">Create citation list metadata</span>
+        </div>
+    </nav>
+{% endblock %}
+
+{% load bootstrap %}
+
+{% block content %}
+
+<div class="row">
+  <div class="col-12">
+    <h1 class="highlight">Create citation list metadata page</h1>
   </div>
+</div>
 
-  {% if errormessage %}
-    <h2 style="color: red;">{{ errormessage }}</h2>
-  {% endif %}
-
-  <form action="{% url 'journals:create_citation_list_metadata' publication.doi_label %}" method="post">
-    {% csrf_token %}
-    {{ bibitems_form.as_p }}
-    <input type="submit" value="Submit">
-  </form>
 
-  <hr class="hr6"/>
+<div class="row">
+  <div class="col-12">
+      {% if errormessage %}
+        <h2 class="text-danger">{{ errormessage }}</h2>
+      {% endif %}
 
-  <h3>Current citation list metadata:</h3>
-  <table>
-    {% for citation in citation_list %}
-      <tr>
-        <td>{{ citation.key }}</td><td>{{ citation.doi }}</td>
-      </tr>
-    {% endfor %}
-  </table>
+      <form action="{% url 'journals:create_citation_list_metadata' publication.doi_label %}" method="post">
+        {% csrf_token %}
+        {{ bibitems_form|bootstrap }}
+        <input type="submit" class="btn btn-secondary" value="Submit">
+      </form>
 
-  <hr class="hr6"/>
+      <hr>
 
-  <h3>Once you're happy with this metadata, you can <a href="{{publication.get_absolute_url}}">return to the publication's page</a> or to the <a href="{% url 'journals:manage_metadata' %}">metadata management page</a> or to <a href="{% url 'journals:manage_metadata' doi_label=publication.doi_label %}">this publication's metadata management page</a></h3>
+      <h3>Current citation list metadata:</h3>
+      <table>
+        {% for citation in citation_list %}
+          <tr>
+            <td>{{ citation.key }}</td><td>{{ citation.doi }}</td>
+          </tr>
+        {% endfor %}
+      </table>
 
-</section>
+      <hr>
 
+      <h3>Once you're happy with this metadata, you can <a href="{{publication.get_absolute_url}}">return to the publication's page</a> or to the <a href="{% url 'journals:manage_metadata' %}">metadata management page</a> or to <a href="{% url 'journals:manage_metadata' doi_label=publication.doi_label %}">this publication's metadata management page</a></h3>
+    </div>
+</div>
 
-{% endblock bodysup %}
+{% endblock %}
diff --git a/journals/templates/journals/create_funding_info_metadata.html b/journals/templates/journals/create_funding_info_metadata.html
index 790a54f46e235a2ca6b25ed4a5dd8190e4bec563..b11cb1c864927ebdb7abe0e66168c41295a256a2 100644
--- a/journals/templates/journals/create_funding_info_metadata.html
+++ b/journals/templates/journals/create_funding_info_metadata.html
@@ -2,34 +2,52 @@
 
 {% block pagetitle %}: Create funding info metadata{% endblock pagetitle %}
 
-{% block bodysup %}
+{% block breadcrumb %}
+    <nav class="breadcrumb py-md-2 px-0 hidden-sm-down">
+        <div class="container">
+            <a href="{% url 'journals:journals' %}" class="breadcrumb-item">Journals</a>
+            <a href="{{publication.in_issue.in_volume.in_journal.get_absolute_url}}" class="breadcrumb-item">{{publication.in_issue.in_volume.in_journal}}</a>
+            <a href="{{publication.in_issue.get_absolute_url}}" class="breadcrumb-item">{{publication.in_issue.short_str}}</a>
+            <a href="{{publication.get_absolute_url}}" class="breadcrumb-item">{{publication.citation}}</a>
+            <span class="breadcrumb-item active">Create funding info metadata</span>
+        </div>
+    </nav>
+{% endblock %}
 
+{% load bootstrap %}
 
-<section>
-  <div class="flex-greybox">
-    <h1>Create funding info metadata page</h1>
-  </div>
+{% block content %}
 
-  {% if errormessage %}
-    <h2 style="color: red;">{{ errormessage }}</h2>
-  {% endif %}
+<div class="row">
+    <div class="col-12">
+        <h1 class="highlight">Create funding info metadata page</h1>
+    </div>
+</div>
 
-  <form action="{% url 'journals:create_funding_info_metadata' publication.doi_label %}" method="post">
-    {% csrf_token %}
-    {{ funding_info_form.as_p }}
-    <input type="submit" value="Submit">
-  </form>
 
-  <hr class="hr6"/>
+<div class="row">
+    <div class="col-12">
 
-  <h3>Current funding info metadata:</h3>
-  <p>{{ funding_statement }}</p>
+      {% if errormessage %}
+        <h2 class="text-danger">{{ errormessage }}</h2>
+      {% endif %}
 
-  <hr class="hr6"/>
+      <form action="{% url 'journals:create_funding_info_metadata' publication.doi_label %}" method="post">
+        {% csrf_token %}
+        {{ funding_info_form|bootstrap }}
+        <input type="submit" class="btn btn-secondary" value="Submit">
+      </form>
 
-  <h3>Once you're happy with this metadata, you can <a href="{{publication.get_absolute_url}}">return to the publication's page</a> or to the <a href="{% url 'journals:manage_metadata' %}">metadata management page</a> or to <a href="{% url 'journals:manage_metadata' doi_label=publication.doi_label %}">this publication's metadata management page</a></h3>
+     <hr>
+        <h3 class="mt-3">Current funding info metadata:</h3>
+        <p>{{funding_statement|linebreaks}}</p>
 
-</section>
+      <hr>
 
+      <h3>Once you're happy with this metadata, you can <a href="{{publication.get_absolute_url}}">return to the publication's page</a> or to the <a href="{% url 'journals:manage_metadata' %}">metadata management page</a> or to <a href="{% url 'journals:manage_metadata' doi_label=publication.doi_label %}">this publication's metadata management page</a></h3>
 
-{% endblock bodysup %}
+    </div>
+</div>
+
+
+{% endblock %}
diff --git a/journals/templates/journals/create_metadata_xml.html b/journals/templates/journals/create_metadata_xml.html
index 8e772ab695d824230202c7ae1172c32d7bb9465c..f3fef831804f54439c2bc9c56553e12761afa422 100644
--- a/journals/templates/journals/create_metadata_xml.html
+++ b/journals/templates/journals/create_metadata_xml.html
@@ -2,6 +2,60 @@
 
 {% block pagetitle %}: Create metadata xml{% endblock pagetitle %}
 
+<<<<<<< HEAD
+{% block breadcrumb %}
+    <nav class="breadcrumb py-md-2 px-0 hidden-sm-down">
+        <div class="container">
+            <a href="{% url 'journals:journals' %}" class="breadcrumb-item">Journals</a>
+            <a href="{{publication.in_issue.in_volume.in_journal.get_absolute_url}}" class="breadcrumb-item">{{publication.in_issue.in_volume.in_journal}}</a>
+            <a href="{{publication.in_issue.get_absolute_url}}" class="breadcrumb-item">{{publication.in_issue.short_str}}</a>
+            <a href="{{publication.get_absolute_url}}" class="breadcrumb-item">{{publication.citation}}</a>
+            <span class="breadcrumb-item active">Create metadata XML</span>
+        </div>
+    </nav>
+{% endblock %}
+
+{% load bootstrap %}
+
+{% block content %}
+
+<div class="row">
+    <div class="col-12">
+        <h1 class="highlight">Create metadata XML (for Crossref deposit)</h1>
+    </div>
+</div>
+
+<div class="row">
+    <div class="col-12">
+      {% if errormessage %}
+          <h2 class="text-danger">{{ errormessage }}</h2>
+      {% endif %}
+
+      <form action="{% url 'journals:create_metadata_xml' publication.doi_label %}" method="post">
+        {% csrf_token %}
+        {{ create_metadata_xml_form|bootstrap }}
+        <input type="submit" class="btn btn-secondary" value="Accept the metadata">
+      </form>
+
+      <hr class="hr6"/>
+
+      <h3>Current metadata xml:</h3>
+      <div>
+          <pre><code>
+              {{ publication.metadata_xml|linebreaks }}
+          </code></pre>
+      </div>
+
+      <hr class="hr6"/>
+
+      <h3>Once you're happy with this metadata, you can <a href="{{publication.get_absolute_url}}">return to the publication's page</a> or to the <a href="{% url 'journals:manage_metadata' %}">metadata management page</a></h3>
+
+    </div>
+</div>
+
+
+{% endblock content %}
+=======
 {% block bodysup %}
 
 
@@ -33,3 +87,4 @@
 
 
 {% endblock bodysup %}
+>>>>>>> development
diff --git a/journals/templates/journals/journal_issue_detail.html b/journals/templates/journals/journal_issue_detail.html
index b40532c958aaa37ac84fdef0097a6fbc8a94bb47..1d7c2fd8cdb120f812917f8887d098962df81891 100644
--- a/journals/templates/journals/journal_issue_detail.html
+++ b/journals/templates/journals/journal_issue_detail.html
@@ -29,7 +29,7 @@
 
     <div class="row">
         <div class="col-12">
-            <ul class="list-group list-group-flush">
+            <ul class="list-group list-group-flush list-group-noborder">
                 {% for paper in papers %}
                     <li class="list-group-item">
                         <div class="card card-grey card-publication">
diff --git a/journals/templates/journals/journal_landing_page.html b/journals/templates/journals/journal_landing_page.html
index 3a4a011d2f613c539b6e3672be97599110d53ef9..f1c4a81e3cbee7d5e45e6b252a848305b77e2951 100644
--- a/journals/templates/journals/journal_landing_page.html
+++ b/journals/templates/journals/journal_landing_page.html
@@ -19,7 +19,7 @@
 
         <div class="row">
             <div class="col-12">
-                <ul class="list-group list-group-flush">
+                <ul class="list-group list-group-flush list-group-noborder">
                     {% for paper in current_issue.publication_set.all|dictsort:"paper_nr" %}
                         <li class="list-group-item">
                             <div class="card card-grey card-publication">
@@ -44,7 +44,7 @@
         </div>
         <div class="row">
             <div class="col-12">
-                <ul class="list-group list-group-flush">
+                <ul class="list-group list-group-flush list-group-noborder">
                     {% for paper in latest_issue.publication_set.all|dictsort:"paper_nr" %}
                         <li class="list-group-item">
                             <div class="card card-grey card-publication">
diff --git a/journals/templates/journals/journal_recent.html b/journals/templates/journals/journal_recent.html
index 679e9cceb7a1cb811302b806147c3f9d6f1e5ad0..fc34bb5f940a894a8211fd16956bf94f13a34d5e 100644
--- a/journals/templates/journals/journal_recent.html
+++ b/journals/templates/journals/journal_recent.html
@@ -18,7 +18,7 @@
 
     <div class="row">
         <div class="col-12">
-            <ul class="list-group list-group-flush">
+            <ul class="list-group list-group-flush list-group-noborder">
                 {% for paper in recent_papers %}
                     <li class="list-group-item">
                         <div class="card card-grey card-publication">
diff --git a/journals/templates/journals/journals.html b/journals/templates/journals/journals.html
index 857c9f1b053ac44d8db1bc6cb65a6d923d7ae5fe..33940701b942ba18c7fc8f0b7c2fa3efc316ce38 100644
--- a/journals/templates/journals/journals.html
+++ b/journals/templates/journals/journals.html
@@ -2,6 +2,15 @@
 
 {% block pagetitle %}: Journals{% endblock pagetitle %}
 
+{% block breadcrumb %}
+    <nav class="submenu">
+        <span class="item">Go directly to Journal:</span>
+        {% for journal in journals %}
+            <a href="{{journal.get_absolute_url}}" class="item">{{journal}}</a>
+        {% endfor %}
+    </nav>
+{% endblock %}
+
 {% block content %}
 
 <div class="row">
@@ -32,7 +41,7 @@
 
     <div class="col-md-6">
         <h1 class="banner">
-            <a href="{% url 'journal:about' 'SciPostPhysProc' %}">SciPost Physics Proceedings</a> <span class="d-inline text-danger">New!</span>
+            <a href="{% url 'journal:about' 'SciPostPhysProc' %}">SciPost Physics Proceedings</a>
         </h1>
         <div class="py-2">
             <h3 class="d-inline-block text-danger mb-2"><b>New!</b>&nbsp;&nbsp;&nbsp;<a href="{% url 'journal:about' 'SciPostPhysProc' %}">Go directly to SciPost Physics Proceedings</a></h3>
diff --git a/journals/templates/journals/metadata_xml_deposit.html b/journals/templates/journals/metadata_xml_deposit.html
index e8fbc3a40e48695ecd2cc9a47be694f8773709c4..5d3f4871132092d3ddce2e4bd263f27de49f76ac 100644
--- a/journals/templates/journals/metadata_xml_deposit.html
+++ b/journals/templates/journals/metadata_xml_deposit.html
@@ -2,29 +2,47 @@
 
 {% block pagetitle %}: metadata XML deposit{% endblock pagetitle %}
 
-{% block bodysup %}
-
-
-<section>
-  <div class="flex-greybox">
-    <h1>Metadata deposit</h1>
+{% block breadcrumb %}
+    <nav class="breadcrumb py-md-2 px-0 hidden-sm-down">
+        <div class="container">
+            <a href="{% url 'journals:journals' %}" class="breadcrumb-item">Journals</a>
+            <a href="{{publication.in_issue.in_volume.in_journal.get_absolute_url}}" class="breadcrumb-item">{{publication.in_issue.in_volume.in_journal}}</a>
+            <a href="{{publication.in_issue.get_absolute_url}}" class="breadcrumb-item">{{publication.in_issue.short_str}}</a>
+            <a href="{{publication.get_absolute_url}}" class="breadcrumb-item">{{publication.citation}}</a>
+            <span class="breadcrumb-item active">Metadata XML deposit</span>
+        </div>
+    </nav>
+{% endblock %}
+
+{% block content %}
+
+
+<div class="row">
+  <div class="col-12">
+    <h1 class="highlight">Metadata deposit <small>(using the {{ option }} server)</small></h1>
   </div>
+</div>
 
-  <h2>(using the {{ option }} server)</h2>
 
+<div class="row">
+  <div class="col-12">
   {% if errormessage %}
-    <h2 style="color: red;">{{ errormessage }}</h2>
+    <h2 class="text-danger">{{ errormessage }}</h2>
   {% endif %}
 
-  <h3>Response headers:</h3>
-  <p>{{ response_headers|linebreaks }}</p>
+  <h3 class="my-1">Response headers:</h3>
+  <div>
+      <pre><code>{{ response_headers|linebreaks }}</code></pre>
+  </div>
 
-  <h3>Response text:</h3>
+  <h3 class="mt-3">Response text:</h3>
   <p>{{ response_text|linebreaks }}</p>
 
   <h3><a href="{{publication.get_absolute_url}}">return to the publication's page</a>, to the <a href="{% url 'journals:manage_metadata' %}">general metadata management page</a> or to <a href="{% url 'journals:manage_metadata' doi_label=publication.doi_label %}">this publication's metadata management page</a></h3>
 
-</section>
+
+    </div>
+</div>
 
 
-{% endblock bodysup %}
+{% endblock %}
diff --git a/journals/templates/journals/publication_detail.html b/journals/templates/journals/publication_detail.html
index fb2fa570aa16d3d442a9372580c39c22c652b3d9..908822960bceac29efb26de3962514d67abc1508 100644
--- a/journals/templates/journals/publication_detail.html
+++ b/journals/templates/journals/publication_detail.html
@@ -49,49 +49,79 @@
 
     {% include 'journals/_publication_details.html' with publication=publication %}
 
+    <hr>
     {% if publication.citedby|length >= 1 %}
-        <hr>
+
         <div class="row">
             <div class="col-6 col-md-2">
                 <h3 class="mb-2">Cited by {{ publication.citedby|length }}</h3>
-                <button class="btn btn-sm btn-secondary" id="citationslistbutton">Toggle view</button>
+                <a href="javascript:;" data-toggle="toggle" data-target="#citationslist">Toggle view</a>
             </div>
             <div class="col-6 col-md-2">
                 <img src="{% static 'scipost/images/citedby.gif' %}" alt="Crossref Cited-by" width="64" />
             </div>
         </div>
-        <div class="row" id="citationslist">
+        <div class="row" id="citationslist" style="display: none;">
             <div class="col-12">
-                {# {% include 'journals/_publication_citations.html' with publication=publication %}#}
-                {{ publication.citations_as_ul }}
+                {% include 'journals/_publication_citations.html' with publication=publication %}
             </div>
         </div>
     {% endif %}
 
     <div class="row">
         <div class="col-12">
-            <hr>
             <h3>View more material from these authors:</h3>
             <p>
             {% for author in publication.authors.all %}
-              <a href="/contributor/{{ author.id }}">{{ author }}</a>&nbsp;&nbsp;
+              <a href="{{author.get_absolute_url}}">{{ author }}</a> {% if not forloop.last %}&nbsp;&middot;&nbsp;{% endif %}
             {% endfor %}
             {% for author in publication.authors_unregistered.all %}
-              {{ author }}&nbsp;&nbsp;
+              {{ author }} {% if not forloop.last %}&nbsp;&middot;&nbsp;{% endif %}
             {% endfor %}
             </p>
         </div>
     </div>
 
     {% if request.user|is_in_group:'Editorial Administrators' %}
+    <hr>
     <div class="row">
         <div class="col-12">
-            <hr>
-	    <h3>Editorial Administration tools: </h3>
-	    <ul>
-	      <li><a href="{% url 'journals:manage_metadata' %}">metadata management page</a></li>
-	      <li><a href="{% url 'journals:manage_metadata' doi_label=publication.doi_label %}">this publication's metadata management page</a></li>
-	    </ul>
+            <h3>Editorial Administration tools: </h3>
+            <ul>
+              <li>Mark the first author (currently: {% if publication.first_author %}{{ publication.first_author }} {% elif publication.first_author_unregistered %}{{ publication.first_author_unregistered }} (unregistered){% endif %})
+                <div class="row">
+                    <div class="col-md-5">
+                      <p>registered authors:</p>
+                      <ul>
+                        {% for author in publication.authors.all %}
+                          <li>
+                            <a href="{% url 'journals:mark_first_author' publication_id=publication.id contributor_id=author.id %}">{{ author }}</a>
+                          </li>
+                        {% endfor %}
+                      </ul>
+                    </div>
+                    <div class="col-md-5">
+                      <p>unregistered authors:</p>
+                      <ul>
+                        {% for author_unreg in publication.authors_unregistered.all %}
+                          <li>
+                            <a href="{% url 'journals:mark_first_author_unregistered' publication_id=publication.id unregistered_author_id=author_unreg.id %}">{{ author_unreg }}</a>
+                          </li>
+                        {% endfor %}
+                      </ul>
+                    </div>
+                </div>
+              </li>
+              <li><a href="{% url 'journals:add_author' publication.id %}">Add a missing author</a></li>
+              <li><a href="{% url 'journals:create_citation_list_metadata' publication.doi_label %}">Create/update citation list metadata</a></li>
+              <li><a href="{% url 'journals:create_funding_info_metadata' publication.doi_label %}">Create/update funding info metadata</a></li>
+              <li><a href="{% url 'journals:create_metadata_xml' publication.doi_label %}">Create/update the XML metadata</a></li>
+              <li><a href="{% url 'journals:metadata_xml_deposit' publication.doi_label 'test' %}">Test metadata deposit (via Crossref test server)</a></li>
+              <li><a href="{% url 'journals:metadata_xml_deposit' publication.doi_label 'deposit' %}">Deposit the metadata to Crossref</a></li>
+              <li><a href="{% url 'journals:harvest_citedby_links' publication.doi_label %}">Update Crossref cited-by links</a></li>
+              <li><a href="{% url 'journals:manage_metadata' %}">Metadata management page</a></li>
+    	      <li><a href="{% url 'journals:manage_metadata' doi_label=publication.doi_label %}">This publication's metadata management page</a></li>
+            </ul>
         </div>
     </div>
     {% endif %}
diff --git a/journals/urls/general.py b/journals/urls/general.py
index 648fb35f2d89db923389106052575bee397b09a5..478572c2a241c0572bffea2ac26ed3b8c91fae81 100644
--- a/journals/urls/general.py
+++ b/journals/urls/general.py
@@ -6,7 +6,7 @@ from journals import views as journals_views
 
 urlpatterns = [
     # Journals
-    url(r'^$', TemplateView.as_view(template_name='journals/journals.html'), name='journals'),
+    url(r'^$', journals_views.journals, name='journals'),
     url(r'scipost_physics', RedirectView.as_view(url=reverse_lazy('scipost:landing_page',
                                                  args=['SciPostPhys']))),
     url(r'^journals_terms_and_conditions$',
diff --git a/journals/views.py b/journals/views.py
index cfad3589f08b7122be94564f8018183be665b3ff..6dbf0f2d7188ecbefad6f81675997141db67bcec 100644
--- a/journals/views.py
+++ b/journals/views.py
@@ -35,6 +35,12 @@ from guardian.decorators import permission_required
 # Journals
 ############
 
+def journals(request):
+    '''Main landing page for Journals application.'''
+    context = {'journals': Journal.objects.active().order_by('name')}
+    return render(request, 'journals/journals.html', context)
+
+
 def landing_page(request, doi_label):
     journal = get_object_or_404(Journal, doi_label=doi_label)
 
@@ -124,7 +130,7 @@ def issue_detail(request, doi_label):
     journal = issue.in_volume.in_journal
 
     papers = issue.publication_set.order_by('paper_nr')
-    next_issue = (Issue.objects.published(journal=journal,
+    next_issue = (Issue.objects.published(in_volume__in_journal=journal,
                                           start_date__gt=issue.start_date)
                                .order_by('start_date').first())
     prev_issue = (Issue.objects.published(in_volume__in_journal=journal,
diff --git a/news/admin.py b/news/admin.py
index 43253c6cc5b48d7b606f34ea7e5f57f639625ee2..6b8247d5b8259ff183cad3368b21c1724ab9be10 100644
--- a/news/admin.py
+++ b/news/admin.py
@@ -5,6 +5,7 @@ from .models import NewsItem
 
 class NewsItemAdmin(admin.ModelAdmin):
     search_fields = ['blurb', 'followup_link_text']
+    list_display = ['__str__', 'on_homepage']
 
 
 admin.site.register(NewsItem, NewsItemAdmin)
diff --git a/news/managers.py b/news/managers.py
new file mode 100644
index 0000000000000000000000000000000000000000..456c26cacb4156cba454993f05a37c30dd36d267
--- /dev/null
+++ b/news/managers.py
@@ -0,0 +1,6 @@
+from django.db import models
+
+
+class NewsManager(models.Manager):
+    def homepage(self):
+        return self.filter(on_homepage=True)
diff --git a/news/migrations/0002_newsitem_on_homepage.py b/news/migrations/0002_newsitem_on_homepage.py
new file mode 100644
index 0000000000000000000000000000000000000000..63a77ba1e3ac5ff1de43e51a6f93dfab1c596a55
--- /dev/null
+++ b/news/migrations/0002_newsitem_on_homepage.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.3 on 2017-08-01 16:18
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('news', '0001_initial'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='newsitem',
+            name='on_homepage',
+            field=models.BooleanField(default=True),
+        ),
+    ]
diff --git a/news/models.py b/news/models.py
index a8992a3e7c5464b359a81208f4240c589e901320..0961cbe72c6a1c31e6a449044d3e5cef6191fe18 100644
--- a/news/models.py
+++ b/news/models.py
@@ -1,5 +1,7 @@
 from django.db import models
 
+from .managers import NewsManager
+
 
 class NewsItem(models.Model):
     date = models.DateField()
@@ -7,6 +9,9 @@ class NewsItem(models.Model):
     blurb = models.TextField()
     followup_link = models.URLField(blank=True, null=True)
     followup_link_text = models.CharField(max_length=300, blank=True, null=True)
+    on_homepage = models.BooleanField(default=True)
+
+    objects = NewsManager()
 
     class Meta:
         db_table = 'scipost_newsitem'
diff --git a/news/serializers.py b/news/serializers.py
new file mode 100644
index 0000000000000000000000000000000000000000..b15e000ef0734648b5370535df4021654b924db7
--- /dev/null
+++ b/news/serializers.py
@@ -0,0 +1,18 @@
+from rest_framework import serializers
+
+from .models import NewsItem
+
+
+class NewsItemSerializer(serializers.ModelSerializer):
+    date = serializers.DateField(format='%-d %B %Y')
+
+    class Meta:
+        model = NewsItem
+        fields = (
+            'id',
+            'date',
+            'headline',
+            'blurb',
+            'followup_link',
+            'followup_link_text',
+        )
diff --git a/news/templates/news/news_card_content.html b/news/templates/news/news_card_content.html
index c034d9e95700453c0e1f6b47e330bf0541ba2b1a..e8e7c611190571a378eaea59bb53ceafbe01d371 100644
--- a/news/templates/news/news_card_content.html
+++ b/news/templates/news/news_card_content.html
@@ -1,7 +1,7 @@
-<div class="card-block px-0 pt-1 news-item">
+<div class="card-block news-item" id="news_{{news.id}}">
     <h3 class="card-title mb-0">{{news.headline}}</h3>
     <div class="px-1 mt-1">
-        <h4 class="text-muted font-weight-bold">{{news.date|date:'Y-n-j'}}</h4>
+        <h4 class="text-muted">{{news.date|date:'Y-n-j'}}</h4>
         <div>{{news.blurb|linebreaks}}</div>
 
         {% if news.followup_link %}
diff --git a/news/templates/news/news_card_content_for_api.html b/news/templates/news/news_card_content_for_api.html
new file mode 100644
index 0000000000000000000000000000000000000000..37e55edb21ba3131115cc549fe48d0aeea2d0bbd
--- /dev/null
+++ b/news/templates/news/news_card_content_for_api.html
@@ -0,0 +1,12 @@
+<div class="card-block px-0 py-2 news-item">
+    <h3 class="card-title mb-0 pb-0">{{headline}}</h3>
+    <div>
+        <h5 class="text-muted mb-2">{{date}}</h5>
+        <div>
+            {{blurb|slice:":90"}} (...)
+
+            <br>
+            <a href="{% url 'news:news' %}#news_{{id}}" class="my-1 d-inline-block">Read more</a>
+        </div>
+    </div>
+</div>
diff --git a/news/templates/news/news_card_content_short.html b/news/templates/news/news_card_content_short.html
new file mode 100644
index 0000000000000000000000000000000000000000..8565202ba8833c425769a0f073fd5a8338a47832
--- /dev/null
+++ b/news/templates/news/news_card_content_short.html
@@ -0,0 +1,12 @@
+<div class="card-block px-0 py-2 news-item">
+    <h3 class="card-title mb-0 pb-0">{{news.headline}}</h3>
+    <div>
+        <h5 class="text-muted mb-2">{{news.date|date:'j F Y'}}</h5>
+        <div>
+            {{news.blurb|slice:":90"}} (...)
+
+            <br>
+            <a href="{% url 'news:news' %}#news_{{news.id}}" class="my-1 d-inline-block">Read more</a>
+        </div>
+    </div>
+</div>
diff --git a/news/templates/news/newsitem_list.html b/news/templates/news/newsitem_list.html
new file mode 100644
index 0000000000000000000000000000000000000000..01b17aa4c0a1b932bffa869585ae4c24686f4d9a
--- /dev/null
+++ b/news/templates/news/newsitem_list.html
@@ -0,0 +1,54 @@
+{% extends 'scipost/base.html' %}
+
+{% block pagetitle %}: News{% endblock pagetitle %}
+
+{% load request_filters %}
+{% load staticfiles %}
+
+{% block content %}
+
+<div class="row">
+    <div class="col-12">
+        <h1 class="highlight">SciPost News</h1>
+    </div>
+</div>
+
+<div class="row">
+    <div class="col-12">
+        {% if is_paginated %}
+              <p>
+              {% if page_obj.has_previous %}
+                <a href="?{% url_replace page=page_obj.previous_page_number %}">Previous</a>
+              {% endif %}
+              Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
+              {% if page_obj.has_next %}
+                <a href="?{% url_replace page=page_obj.next_page_number %}">Next</a>
+              {% endif %}
+              <span class="float-right"><a href="{% url 'scipost:index' %}">Go back to the homepage.</a></span>
+              </p>
+          {% endif %}
+
+        {% for item in object_list %}
+            <div class="card card-grey card-news">
+                {% include 'news/news_card_content.html' with news=item %}
+            </div>
+        {% empty %}
+            <div>No news found.</div>
+        {% endfor %}
+
+        {% if is_paginated %}
+              <p class="mt-4">
+              {% if page_obj.has_previous %}
+                <a href="?{% url_replace page=page_obj.previous_page_number %}">Previous</a>
+              {% endif %}
+              Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
+              {% if page_obj.has_next %}
+                <a href="?{% url_replace page=page_obj.next_page_number %}">Next</a>
+              {% endif %}
+              <span class="float-right"><a href="{% url 'scipost:index' %}">Go back to the homepage.</a></span>
+              </p>
+          {% endif %}
+    </div>
+</div>
+
+{% endblock content %}
diff --git a/news/urls.py b/news/urls.py
index a84f2906bb39ef2937fe1a6ca284e8e6a77368e7..039616e4e21fa70543e8320d79a6601f495e906f 100644
--- a/news/urls.py
+++ b/news/urls.py
@@ -3,5 +3,5 @@ from django.conf.urls import url
 from . import views
 
 urlpatterns = [
-    url(r'^$', views.news, name='news'),
+    url(r'^$', views.NewsListView.as_view(), name='news'),
 ]
diff --git a/news/views.py b/news/views.py
index 6e6773d73118132b4eeeb2ca1c21b4aa6b1dd138..d1b9f775678f474db67de2e18a5b90dd9e32f4a6 100644
--- a/news/views.py
+++ b/news/views.py
@@ -1,9 +1,8 @@
-from django.shortcuts import render
+from django.views.generic.list import ListView
 
 from .models import NewsItem
 
 
-def news(request):
-    newsitems = NewsItem.objects.all().order_by('-date')
-    context = {'newsitems': newsitems}
-    return render(request, 'scipost/news.html', context)
+class NewsListView(ListView):
+    model = NewsItem
+    paginate_by = 10
diff --git a/news/viewsets.py b/news/viewsets.py
new file mode 100644
index 0000000000000000000000000000000000000000..bdf382b77d18fce73ac245f7761658e028d019c3
--- /dev/null
+++ b/news/viewsets.py
@@ -0,0 +1,26 @@
+from django.http import Http404
+
+from rest_framework import viewsets, renderers
+from rest_framework.response import Response
+
+from .models import NewsItem
+from .serializers import NewsItemSerializer
+
+
+class NewsItemViewSet(viewsets.ReadOnlyModelViewSet):
+    queryset = NewsItem.objects.all().order_by('-date')
+    serializer_class = NewsItemSerializer
+    template_name = 'news/news_card_content_for_api.html'
+    renderer_classes = (renderers.TemplateHTMLRenderer, renderers.JSONRenderer)
+
+    def get(self, request, *args, **kwargs):
+        response = super().get(request, *args, **kwargs)
+        if request.accepted_renderer.format == 'html':
+            return Response({'news': self.get_object()})
+        return response
+
+    def list(self, request, *args, **kwargs):
+        response = super().list(request, *args, **kwargs)
+        if request.accepted_renderer.format == 'html':
+            raise Http404
+        return response
diff --git a/partners/migrations/0012_auto_20170618_2024.py b/partners/migrations/0012_auto_20170618_2024.py
new file mode 100644
index 0000000000000000000000000000000000000000..ba95541ad753e64e18663622967dd9ee05157f31
--- /dev/null
+++ b/partners/migrations/0012_auto_20170618_2024.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.3 on 2017-06-18 18:24
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('partners', '0011_auto_20170609_2234'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='prospectivepartnerevent',
+            name='event',
+            field=models.CharField(choices=[('requested', 'Requested (from online form)'), ('comment', 'Comment added'), ('email_sent', 'Email sent'), ('negotiating', 'Initiated negotiation'), ('marked_as_uninterested', 'Marked as uninterested'), ('promoted', 'Promoted to Partner')], max_length=64),
+        ),
+    ]
diff --git a/partners/migrations/0027_merge_20170708_0941.py b/partners/migrations/0027_merge_20170708_0941.py
new file mode 100644
index 0000000000000000000000000000000000000000..39238261ecc5cb01fbdf7fabc602408e9c2cf0a8
--- /dev/null
+++ b/partners/migrations/0027_merge_20170708_0941.py
@@ -0,0 +1,16 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.3 on 2017-07-08 07:41
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('partners', '0026_auto_20170627_1809'),
+        ('partners', '0012_auto_20170618_2024'),
+    ]
+
+    operations = [
+    ]
diff --git a/partners/migrations/0028_merge_20170721_1419.py b/partners/migrations/0028_merge_20170721_1419.py
new file mode 100644
index 0000000000000000000000000000000000000000..bd6c80cd3245adf269ee2f67480dd988275169a2
--- /dev/null
+++ b/partners/migrations/0028_merge_20170721_1419.py
@@ -0,0 +1,16 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.3 on 2017-07-21 12:19
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('partners', '0027_membershipagreement_end_date'),
+        ('partners', '0027_merge_20170708_0941'),
+    ]
+
+    operations = [
+    ]
diff --git a/partners/migrations/0030_merge_20170730_0935.py b/partners/migrations/0030_merge_20170730_0935.py
new file mode 100644
index 0000000000000000000000000000000000000000..547d6f7eea65604c4114c40b7f9dd7349d9a4b68
--- /dev/null
+++ b/partners/migrations/0030_merge_20170730_0935.py
@@ -0,0 +1,16 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.3 on 2017-07-30 07:35
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('partners', '0028_merge_20170721_1419'),
+        ('partners', '0029_merge_20170726_0945'),
+    ]
+
+    operations = [
+    ]
diff --git a/scipost/managers.py b/scipost/managers.py
index cd9344ef5b99d97a7825d57016b24e9b6638e260..1a4a401fd640f2c8ebea93397a852044e9cecae7 100644
--- a/scipost/managers.py
+++ b/scipost/managers.py
@@ -3,7 +3,8 @@ import datetime
 from django.db import models
 from django.db.models import Q
 
-from .constants import CONTRIBUTOR_NORMAL, CONTRIBUTOR_NEWLY_REGISTERED
+from .constants import CONTRIBUTOR_NORMAL, INVITATION_EDITORIAL_FELLOW,\
+                       CONTRIBUTOR_NEWLY_REGISTERED
 
 
 class FellowManager(models.Manager):
@@ -23,3 +24,13 @@ class ContributorManager(models.Manager):
 
     def awaiting_validation(self):
         return self.filter(user__is_active=False, status=CONTRIBUTOR_NEWLY_REGISTERED)
+
+
+class RegistrationInvitationManager(models.Manager):
+    def pending_invited_fellows(self):
+        return self.filter(invitation_type=INVITATION_EDITORIAL_FELLOW,
+                           responded=False, declined=False)
+
+    def declined_invited_fellows(self):
+        return self.filter(invitation_type=INVITATION_EDITORIAL_FELLOW,
+                           responded=False, declined=True)
diff --git a/scipost/migrations/0056_auto_20170618_2024.py b/scipost/migrations/0056_auto_20170618_2024.py
new file mode 100644
index 0000000000000000000000000000000000000000..42133a4d72948a7e09cf84cbf61ca52146e929a2
--- /dev/null
+++ b/scipost/migrations/0056_auto_20170618_2024.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.3 on 2017-06-18 18:24
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('scipost', '0055_auto_20170519_0937'),
+    ]
+
+    operations = [
+        migrations.AlterModelOptions(
+            name='registrationinvitation',
+            options={'ordering': ['last_name']},
+        ),
+        migrations.AlterField(
+            model_name='remark',
+            name='date',
+            field=models.DateTimeField(auto_now_add=True),
+        ),
+    ]
diff --git a/scipost/migrations/0060_merge_20170708_0941.py b/scipost/migrations/0060_merge_20170708_0941.py
new file mode 100644
index 0000000000000000000000000000000000000000..3e51492281a5f3fe94df787ff4683e20d66e3f9a
--- /dev/null
+++ b/scipost/migrations/0060_merge_20170708_0941.py
@@ -0,0 +1,16 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.3 on 2017-07-08 07:41
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('scipost', '0056_auto_20170618_2024'),
+        ('scipost', '0059_auto_20170701_1356'),
+    ]
+
+    operations = [
+    ]
diff --git a/scipost/migrations/0061_merge_20170730_0935.py b/scipost/migrations/0061_merge_20170730_0935.py
new file mode 100644
index 0000000000000000000000000000000000000000..2869252d98ca3ac9991106222b74948825845473
--- /dev/null
+++ b/scipost/migrations/0061_merge_20170730_0935.py
@@ -0,0 +1,16 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.3 on 2017-07-30 07:35
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('scipost', '0060_auto_20170726_1612'),
+        ('scipost', '0060_merge_20170708_0941'),
+    ]
+
+    operations = [
+    ]
diff --git a/scipost/models.py b/scipost/models.py
index b12640ca23c0e4a93349e5f742f586829e52875d..0ff51058b6f3eeee82f21da2eb3649443b170765 100644
--- a/scipost/models.py
+++ b/scipost/models.py
@@ -3,6 +3,7 @@ import hashlib
 import random
 import string
 
+from django.core.urlresolvers import reverse
 from django.contrib.auth.models import User
 from django.contrib.postgres.fields import ArrayField
 from django.db import models
@@ -19,7 +20,7 @@ from .constants import SCIPOST_DISCIPLINES, SCIPOST_SUBJECT_AREAS,\
                        INVITATION_CONTRIBUTOR, INVITATION_FORMAL,\
                        AUTHORSHIP_CLAIM_PENDING, AUTHORSHIP_CLAIM_STATUS
 from .fields import ChoiceArrayField
-from .managers import FellowManager, ContributorManager
+from .managers import FellowManager, ContributorManager, RegistrationInvitationManager
 
 
 def get_sentinel_user():
@@ -189,7 +190,7 @@ class Remark(models.Model):
     recommendation = models.ForeignKey('submissions.EICRecommendation',
                                        on_delete=models.CASCADE,
                                        blank=True, null=True)
-    date = models.DateTimeField()
+    date = models.DateTimeField(auto_now_add=True)
     remark = models.TextField()
 
     def __str__(self):
@@ -265,6 +266,11 @@ class RegistrationInvitation(models.Model):
     responded = models.BooleanField(default=False)
     declined = models.BooleanField(default=False)
 
+    objects = RegistrationInvitationManager()
+
+    class Meta:
+        ordering = ['last_name']
+
     def __str__(self):
         return (self.first_name + ' ' + self.last_name
                 + ' on ' + self.date_sent.strftime("%Y-%m-%d"))
diff --git a/scipost/static/scipost/SciPost.css b/scipost/static/scipost/SciPost.css
index dcf61c72299b4effd98a80fe37cc3b62853d6bac..b4248ef268dc319dae35282531fdc524dc3133d1 100644
--- a/scipost/static/scipost/SciPost.css
+++ b/scipost/static/scipost/SciPost.css
@@ -553,26 +553,28 @@ table.tablePadded10 td {
 }
 
 .reportRatings {
-  font-family: 'Merriweather Sans';
-  font-size: 10px;
-  margin: 0px 4px;
-  padding: 1px;
-  display: inline-block;
-  box-shadow: 1px 1px 1px #888888;
-  background: linear-gradient(to right,#fcfcfc, #f0f0f0);
+    font-family: 'Merriweather Sans';
+    font-size: 11px;
+    margin: 0 4px;
+    padding: 0;
+    display: inline-block;
+    box-shadow: 0 1px 0 1px #ccc;
+    background: #f4f4f4;
 }
 .reportRatings ul {
-  display: inline-block;
-  font-family: 'Merriweather Sans';
-  margin: 0px;
-  padding: 2px 1px;
+    display: inline-block;
+    font-family: 'Merriweather Sans';
+    margin: 0;
+    padding: 2px 1px;
 }
 .reportRatings ul li {
-  border: 1px solid black;
-  display: inline-block;
-  font-family: 'Merriweather Sans';
-  margin: 1px 2px;
-  padding: 3px 6px;
+    border: 1px solid #002b49;
+    display: inline-block;
+    font-family: 'Merriweather Sans';
+    margin: 0 3px;
+    padding: 4px 7px;
+    border-radius: 1px;
+    background-color: #f1f1f1;
 }
 
 
@@ -718,26 +720,6 @@ p.publicationAuthors {
   font-weight: bold;
 }
 
-ul.publicationClickables {
-  background-color: #f8f8f8;
-  display: inline-block;
-  list-style-type: none;
-  margin: 0px;
-  padding: 0px;
-}
-
-ul.publicationClickables li {
-  display: inline-block;
-  margin: 0px 10px;
-  padding: 5px;
-}
-
-li.publicationPDF {
-  font-size: 16px;
-  font-weight: bold;
-  padding: 2px;
-}
-
 
 /* For modal boxes (e.g. BiBTeX) */
 .modalDialog {
diff --git a/scipost/static/scipost/assets/config/preconfig.scss b/scipost/static/scipost/assets/config/preconfig.scss
index e5b43ec35c21350f2adfc6ed11242801f0096bce..22d35899b0be9815cfbb938ecb5a197d8f580dd9 100644
--- a/scipost/static/scipost/assets/config/preconfig.scss
+++ b/scipost/static/scipost/assets/config/preconfig.scss
@@ -1,6 +1,7 @@
 // General variable structure
 //
 //
+$border-radius-base: 0;
 
 // Grid
 //
@@ -12,27 +13,37 @@ $container-max-widths: (
     xl: 1200px
 );
 
-.row {
-    margin-bottom: 1rem;
-}
-
-// Cards
-//
-$card-spacer-x: 0.75rem;
-$card-border-radius: 0.15rem;
-$card-border-color: rgba(238, 238, 238, 0.5);
-
 // Colors
 //
 $scipost-light: #C3D7EE;
 $scipost-lightblue: #6884C2;
 $scipost-darkblue: #002b49;
 $scipost-orange: #FFA300;
+$scipost-white: #f9f9f9;
 $green: #6ebb6e;
+$sidebar-border-color: #dfe0e4;
 
 $blue: $scipost-lightblue !default;
 $body-color: $scipost-darkblue !default;
 
+// Alerts
+//
+$alert-success-text: $scipost-darkblue;
+$alert-warning-text: $scipost-darkblue;
+$alert-danger-text: $scipost-darkblue;
+$alert-border-radius: $border-radius-base;
+
+// Cards
+//
+$card-spacer-x: 0.75rem;
+$card-border-radius: 2px;
+$card-border-color: #fff;
+$card-cap-bg: transparent;
+$btn-secondary-border-color: #f1f1f1;
+$card-shadow-color: #ccc;
+$card-grey-border-bottom-color: #d0d1d5;
+$card-grey-border-color: #e5e6e9 #dfe0e4 $card-grey-border-bottom-color;
+
 // breadcrumb
 //
 $breadcrumb-bg: #f9f9f9;
@@ -53,7 +64,7 @@ $input-padding-y: .25rem;
 $list-group-bg: transparent;
 $list-group-item-padding-x: 0;
 $list-group-item-padding-y: 0;
-$list-group-border-color: #f1f1f1;
+$list-group-border-color: #ddd;
 
 // Fonts
 //
@@ -67,7 +78,7 @@ $font-size-sm: 0.75rem;
 
 $font-size-h1: 2.0em;
 $font-size-h2: 1.5em;
-$font-size-h3: 1.17em;
+$font-size-h3: 1.25em;
 $font-size-h4: 0.8rem;
 $font-size-h5: 0.8rem;
 $font-size-h6: 0.8rem;
@@ -84,5 +95,13 @@ $table-cell-padding: 0.25rem 0.5rem;
 $navbar-light-color: $scipost-darkblue !default;
 $navbar-light-hover-color: $scipost-darkblue !default;
 
-$input-border-radius: 2px !default;
-$btn-border-radius: 2px !default;
+$input-border-radius: 0;
+$btn-border-radius: 0;
+$btn-border-radius-sm: 2px;
+$btn-border-radius-lg: 0;
+
+
+// Block quote
+//
+$blockquote-font-size: $font-size-base;
+$blockquote-border-color: #ececec;
diff --git a/scipost/static/scipost/assets/css/_alert.scss b/scipost/static/scipost/assets/css/_alert.scss
index 9f4b86666baf1d6db74a0ae31726a4dee4c7adae..395845eaaa7ee9cb89be5c18455c349ec681b35b 100644
--- a/scipost/static/scipost/assets/css/_alert.scss
+++ b/scipost/static/scipost/assets/css/_alert.scss
@@ -1,3 +1,25 @@
+.alert {
+    padding: 0.75rem 3rem 0.75rem 1.25rem;
+    margin-bottom: 0.5rem;
+    position: relative;
+    clear: both;
+    float: left;
+
+    &:last-child {
+        margin-bottom: 1rem;
+    }
+}
+
 .alert-error {
   @include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text);
 }
+
+.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.
+.alert-dismissible {
+  // Adjust close link position
+  .close {
+      position: absolute;
+    top: 0;
+    right: 0;
+  }
+}
diff --git a/scipost/static/scipost/assets/css/_breadcrumb.scss b/scipost/static/scipost/assets/css/_breadcrumb.scss
index ffba7ecbbfde1ebc67e2064dc4b175b400e31c6e..1da897ebf0d61707eb8641737dd725d427597d1f 100644
--- a/scipost/static/scipost/assets/css/_breadcrumb.scss
+++ b/scipost/static/scipost/assets/css/_breadcrumb.scss
@@ -1,8 +1,18 @@
 .breadcrumb {
     margin-top: -0.75rem;
     margin-bottom: 0.75rem;
+    border-top: 1px solid #fff;
+    border-bottom: 1px solid #ddd;
 
     .breadcrumb-item {
         margin-bottom: 0;
     }
 }
+
+nav.as-submenu .breadcrumb-item + .breadcrumb-item::before {
+    content: '|';
+}
+
+.breadcrumb-item.no-divider::before {
+    content: none !important;
+}
diff --git a/scipost/static/scipost/assets/css/_buttons.scss b/scipost/static/scipost/assets/css/_buttons.scss
index 3646c5181e9edd3179e727450cadb28d9ebdb5d3..cdf1a4f7068d6a6b77225cc8001e89f01268ef6f 100644
--- a/scipost/static/scipost/assets/css/_buttons.scss
+++ b/scipost/static/scipost/assets/css/_buttons.scss
@@ -9,25 +9,31 @@
 
 .category-group,
 .voting-group {
-    border-radius: 0.05rem;
+    border-radius: $card-border-radius;
+    background-color: #ddd;
+    color: $scipost-darkblue;
+    box-shadow: 0 1px 0 0 #ccc;
 
     .btn {
-        color: #fff;
-        box-shadow: 0 1px 1px 0 #ccc;
-        border-color: #ccc;
         margin: 0;
-        font-size: 0.7rem;
-        border-radius: 0.05rem;
         cursor: default;
 
+        &.name {
+            background-color: #ddd;
+            color: #002b49;
+        }
+
         &.agree {
             background-color: $scipost-darkblue;
+            color: #fff;
         }
         &.neutral {
             background-color: $scipost-lightblue;
+            color: #fff;
         }
         &.disagree {
             background-color: $red;
+            color: #fff;
         }
     }
 
@@ -49,13 +55,3 @@
         }
     }
 }
-
-.category-group .btn {
-    color: #333;
-    background-color: #fafafa;
-
-    &.name {
-        background-color: #ddd;
-        color: #002b49;
-    }
-}
diff --git a/scipost/static/scipost/assets/css/_cards.scss b/scipost/static/scipost/assets/css/_cards.scss
index a8625fded65fb44c56709bf4d3829627cf888a69..3445743bcf0b178f8d1ac0e09fc0f335572dae06 100644
--- a/scipost/static/scipost/assets/css/_cards.scss
+++ b/scipost/static/scipost/assets/css/_cards.scss
@@ -3,20 +3,40 @@
 
     &.card-grey {
         background-color: #F4F4F4;
-        border-color: #f1f1f1;
+        border-color: $card-grey-border-color;
+        box-shadow: 0 1px 0 0 $card-shadow-color;
     }
 
     &.card-publication {
+        box-shadow: 0 1px 0 0 #ddd;
+        border-color: #ddd;
+
         .card-header {
             background-color: #eee;
+            border-bottom: 1px solid #ddd;
         }
 
         .card-block {
+            border-top: 1px solid #fff;
             background-color: #f8f8f8;
         }
     }
 }
 
+.card-outline-secondary {
+    border-color: #f1f1f1;
+}
+
+.card-header {
+    padding: 0.5rem 0;
+    margin: 0 0.75rem 0 0.75rem;
+}
+
+.card-footer {
+    padding: 0.75rem 0 0 0;
+    margin: 0 0.75rem 0.75rem 0.75rem;
+}
+
 .list-group-item > .card-block {
     padding: 0.5rem;
 }
@@ -35,7 +55,6 @@
         background-color: $scipost-darkblue;
         color: $scipost-light;
         padding: 0.5rem;
-        border-radius: 1.4px;
     }
 }
 
diff --git a/scipost/static/scipost/assets/css/_form.scss b/scipost/static/scipost/assets/css/_form.scss
index 62172b512ef1273cd62cd0b38255881f6c72d7d5..33a9f6b430bed5efa164b3e3a5bc0e156857c435 100644
--- a/scipost/static/scipost/assets/css/_form.scss
+++ b/scipost/static/scipost/assets/css/_form.scss
@@ -52,6 +52,30 @@ input[type="file"] {
     border-radius: 0.15rem;
 }
 
+.search-nav-form {
+    input {
+        // border-top-right-radius: 0;
+        // border-bottom-right-radius: 0;
+        margin-right: 0 !important;
+        border-right: 0;
+        // border-color: #ddd;
+        min-width: 200px;
+    }
+
+    > * {
+        border-color: #ddd !important;
+        outline: 0;
+        line-height: 1.75;
+
+        &:hover {
+            border-color: #ccc !important;
+        }
+    }
+
+    button:hover {
+        background-color: #f0f0f0;
+    }
+}
 // Formset
 //
 .delete-form-group {
diff --git a/scipost/static/scipost/assets/css/_general.scss b/scipost/static/scipost/assets/css/_general.scss
index e1758c796a62474c882946a3ea259288fc6dc0a1..146bc7345cd37e78a879524c69e51d9c1fd5ef63 100644
--- a/scipost/static/scipost/assets/css/_general.scss
+++ b/scipost/static/scipost/assets/css/_general.scss
@@ -2,7 +2,7 @@
     background-color: #002b49;
     padding: 0.9rem 1rem;
     text-align: center;
-    border-radius: 1.4px;
+    border-radius: $card-border-radius;
 
     &,
     a {
@@ -19,7 +19,12 @@ body #MathJax_Message {
     bottom: 1rem;
     background-color: #f9f9f9;
     border: 1px solid #f4f4f4;
-    border-radius: 2px;
+    border-radius: $card-border-radius;
     color: #002b49;
     opacity: 0.9;
 }
+
+.inner-container-smaller {
+    max-width: 1100px;
+    margin: 0 auto;
+}
diff --git a/scipost/static/scipost/assets/css/_grid.scss b/scipost/static/scipost/assets/css/_grid.scss
index 9b9a5b24333cad1289b845ce194aba8e34fcfc8c..e7ef90aaf393c8ec59f20056ba1c6ec87fa6fe0a 100644
--- a/scipost/static/scipost/assets/css/_grid.scss
+++ b/scipost/static/scipost/assets/css/_grid.scss
@@ -3,6 +3,10 @@
     min-height: 190px;
 }
 
+.row {
+    margin-bottom: 1rem;
+}
+
 .panel {
     padding: 0.75rem;
     height: 100%;
@@ -21,6 +25,10 @@ img {
 footer.secondary {
     color: $scipost-darkblue;
     background: transparent;
-    border-top: 1px solid $scipost-darkblue;
+    border-top: 2px solid $scipost-darkblue;
     text-align: center;
+
+    a {
+        color: $scipost-lightblue;
+    }
 }
diff --git a/scipost/static/scipost/assets/css/_homepage.scss b/scipost/static/scipost/assets/css/_homepage.scss
new file mode 100644
index 0000000000000000000000000000000000000000..a7d4f973288b8f9d762524d9e51f1295ea72b2f4
--- /dev/null
+++ b/scipost/static/scipost/assets/css/_homepage.scss
@@ -0,0 +1,113 @@
+.has-sidebar {
+    .submenu {
+        margin-bottom: 0;
+    }
+
+    .content-wrapper {
+        display: flex;
+        flex-wrap: wrap;
+        position: relative;
+    }
+
+    .container {
+        position: relative;
+        z-index: 2;
+        float: left;
+        width: calc(100% - 400px);
+        min-height: 100%;
+    }
+
+    .sidebar,
+    .main-panel {
+        padding-top: 1.5rem;
+        overflow: auto;
+        max-height: 100%;
+        height: 100%;
+        -webkit-overflow-scrolling: touch;
+        padding-left: 1rem;
+        padding-right: 1rem;
+    }
+
+    .main-panel {
+        position: relative;
+        z-index: 2;
+        float: left;
+        min-height: 100%;
+    }
+
+    .sidebar {
+        width: 100%;
+        border-top: 2px solid $card-grey-border-bottom-color;
+        background-size: cover;
+        background-position: center center;
+        background-color: $white;
+        border-left: 1px solid #ddd;
+        position: relative;
+        padding-top: 0.25rem;
+        margin-top: 2rem;
+
+        .card {
+            padding-top: 1rem;
+            padding-bottom: 1rem;
+            background: none;
+            border: 0;
+            margin-bottom: 0;
+            box-shadow: none;
+            border-radius: 0;
+            border-bottom: 1px solid $card-grey-border-bottom-color;
+        }
+        .card:last-child {
+            border-bottom: 0;
+        }
+
+        .card-header,
+        .card-block,
+        .card-footer {
+            border: 0;
+            margin-left: 0;
+            margin-right: 0;
+            padding-left: 0;
+            padding-right: 0;
+        }
+    }
+
+    @media (min-width: 768px) {
+        .main-panel {
+            width: calc(100% - 350px);
+        }
+        .sidebar {
+            width: 350px;
+            border-top: 0;
+            padding-bottom: 3rem;
+            padding-left: 40px;
+            margin-top: 0;
+
+            height: 100%;
+            position: absolute;
+            right: 0;
+            top: 0;
+
+            &:before {
+                content: '';
+                left: 0;
+                top: 0;
+                position: absolute;
+                height: 100%;
+                width: 20px;
+                background: $scipost-white;
+            }
+        }
+    }
+
+    @media (min-width: 1280px) {
+        .main-panel {
+            width: calc(100% - 400px);
+        }
+
+        .sidebar {
+            width: 400px;
+            padding-left: 3rem;
+            padding-right: 2rem;
+        }
+    }
+}
diff --git a/scipost/static/scipost/assets/css/_icons.scss b/scipost/static/scipost/assets/css/_icons.scss
index 9f68baa05b0d0fa19482957e13d22c4a28a22dc3..15f34d8024781d6f69f720a44297de0d8792feff 100644
--- a/scipost/static/scipost/assets/css/_icons.scss
+++ b/scipost/static/scipost/assets/css/_icons.scss
@@ -16,3 +16,9 @@
         transform: rotate(180deg);
     }
 }
+
+.floating-rss-icon {
+    position: absolute;
+    top: 0.75rem;
+    right: 0.75rem;
+}
diff --git a/scipost/static/scipost/assets/css/_journals.scss b/scipost/static/scipost/assets/css/_journals.scss
index 0ec7c0ef26bd3cccb08f7418e972aa37a86f79cb..a2f1946f4558a8964fab6ceb18be41f0224f4d4a 100644
--- a/scipost/static/scipost/assets/css/_journals.scss
+++ b/scipost/static/scipost/assets/css/_journals.scss
@@ -52,3 +52,25 @@
     padding: 0.75rem;
     margin-bottom: .5rem;
 }
+
+
+ul.publicationClickables {
+    background-color: #f9f9f9;
+    display: inline-block;
+    list-style-type: none;
+    margin: 0;
+    padding: 2px 0;
+    border: 1px solid #eee;
+    border-bottom: 1px solid #ddd;
+
+    li {
+        display: inline-block;
+        margin: 0 10px;
+        padding: 5px;
+
+        &.publicationPDF {
+            font-size: 130%;
+            font-weight: 600;
+        }
+    }
+}
diff --git a/scipost/static/scipost/assets/css/_list_group.scss b/scipost/static/scipost/assets/css/_list_group.scss
index 53b101c3fca8f20a15148c8065f733cd8ea12217..835bd38a5a4b649a88d37390a38d5e0f7d622602 100644
--- a/scipost/static/scipost/assets/css/_list_group.scss
+++ b/scipost/static/scipost/assets/css/_list_group.scss
@@ -3,6 +3,11 @@
      border: 0;
  }
 
+
+.list-group-item {
+    margin-bottom: 0;
+    border-top-color: #f9f9f9;
+}
 ul.events-list {
     padding-left: 30px;
 
diff --git a/scipost/static/scipost/assets/css/_nav.scss b/scipost/static/scipost/assets/css/_nav.scss
index d24c006ea7a694569a49d013d17df2846bfae1b0..9f69a08b97a0434fa678082f00991d336ae44663 100644
--- a/scipost/static/scipost/assets/css/_nav.scss
+++ b/scipost/static/scipost/assets/css/_nav.scss
@@ -7,15 +7,29 @@
 }
 
 .tab-nav-container {
-    border-bottom: 3px solid $scipost-darkblue;
     text-align: center;
     white-space: nowrap;
     overflow-x: auto;
     overflow-y: hidden;
+    position: relative;
     -webkit-overflow-scrolling: touch;
 
+    &:after {
+        content: "";
+        display: block;
+        height: 3px;
+        width: 100%;
+        position: absolute;
+        background-color: $scipost-darkblue;
+        z-index: 1;
+        bottom: 1px;
+        border-radius: 99px;
+        box-shadow: 0 1px 0 0 $scipost-lightblue;
+    }
+
     .tab-nav-inner {
         display: inline-block;
+        padding-bottom: 2px;
     }
 }
 
@@ -48,3 +62,22 @@
         }
     }
 }
+
+nav.submenu {
+    margin-top: -0.75rem;
+    margin-bottom: 1rem;
+    padding: 0.75rem 1rem;
+    background-color: $scipost-white;
+    border-radius: 0;
+    border-top: 1px solid #fff;
+    border-bottom: 1px solid #ddd;
+
+    .item {
+        padding: 0 0.5rem;
+        border-right: 2px solid #fff;
+    }
+    .item:first-child,
+    .item:last-child {
+        border-right: 0;
+    }
+}
diff --git a/scipost/static/scipost/assets/css/_navbar.scss b/scipost/static/scipost/assets/css/_navbar.scss
index 302993352ba812300a5f38972268bed0c3e2b81e..6fa3d115318e741b69b899c7bccf9c422fe71ab0 100644
--- a/scipost/static/scipost/assets/css/_navbar.scss
+++ b/scipost/static/scipost/assets/css/_navbar.scss
@@ -5,11 +5,15 @@
 .navbar {
     margin-bottom: 0.75rem;
 
+    &.main-nav {
+        border-bottom: 1px solid #ddd;
+    }
+
     .nav-link {
         padding-right: .5rem;
         padding-left: .5rem;
         border: 1px solid transparent;
-        border-radius: 0.1rem;
+        border-radius: $card-border-radius;
         word-wrap: break-word;
         white-space: nowrap;
         -webkit-transition: all 0.1s ease-in-out;
@@ -27,6 +31,7 @@
 
     .active > .nav-link {
         border-color: $scipost-darkblue;
+        box-shadow: 0 1px 0 0 #ccc;
     }
 
     .highlighted > .nav-link {
diff --git a/scipost/static/scipost/assets/css/_submissions.scss b/scipost/static/scipost/assets/css/_submissions.scss
index 0b8166e69f7fbc3991d9dcf59e17a1c753f89d2d..5669ab5fe5025f97d11c8d2aa04cba130f7f705f 100644
--- a/scipost/static/scipost/assets/css/_submissions.scss
+++ b/scipost/static/scipost/assets/css/_submissions.scss
@@ -15,6 +15,7 @@ table.submission_header {
         padding: 0.5rem 1rem;
         background: #f4f4f4;
         margin-left: -1rem;
+        border-bottom: 1px solid #ccc;
     }
 }
 
diff --git a/scipost/static/scipost/assets/css/_type.scss b/scipost/static/scipost/assets/css/_type.scss
index 56cb21439ca7be62e555a0a424125cc56722291a..47d2ee08d44b92cdecbbf268576a6b3f2bcc1ea4 100644
--- a/scipost/static/scipost/assets/css/_type.scss
+++ b/scipost/static/scipost/assets/css/_type.scss
@@ -16,13 +16,39 @@ h1, h2, h3, h4, h5, h6 {
     margin: 0;
     padding: 5px 0;
     text-shadow: none;
-    font-weight: 500;
+}
+
+h1 > a {
+    color: $scipost-darkblue;
+}
+
+h3 {
+    line-height: normal;
+}
+
+h5, h6 {
+    font-weight: 300;
+}
+
+.text-black {
+    color: $scipost-darkblue;
+}
+
+.orange-underline {
+    line-height: 1.3;
+    border-bottom: 2px solid $scipost-orange;
+    padding-bottom: 0.75rem;
+}
+
+.font-weight-light {
+    font-weight: 300;
 }
 
 .highlight {
     background-color: #f4f4f4;
-    border-radius: 1.4px;
-    border: 1px solid #f1f1f1;
+    border-radius: $card-border-radius;
+    border: 1px solid #ececec;
+    box-shadow: 0 1px 0 0 $card-shadow-color;
 
     &.tight {
         display: inline-block;
@@ -53,13 +79,20 @@ h3.highlight-empty {
     padding: 10px;
 }
 
+h5,
+.h5 {
+    color: #636c72;
+}
+
 hr,
 hr.hr12 {
-    height: 3px;
+    height: 2px;
     border: 0;
-    box-shadow: none !important;
-    background: rgba(0, 43, 73, 0.73);
+    background: rgb(0, 43, 73);
     margin-bottom: 1rem;
+    border-radius: 99px;
+    box-shadow: 0 1px 0 0 #d3e3f6;
+    width: 100%;
 
     &.small {
         height: 1px;
@@ -69,3 +102,7 @@ hr.hr12 {
 .text-blue {
     color: $scipost-lightblue;
 }
+
+.blockquote > p:last-child {
+    margin-bottom: 0;
+}
diff --git a/scipost/static/scipost/assets/css/scipost-physics.scss b/scipost/static/scipost/assets/css/scipost-physics.scss
index 2ef6f06c4c2a5c37552e7e18bd940d3181fcd211..f7736c11633c6f614b3ee0fa5e93b90c67b93605 100644
--- a/scipost/static/scipost/assets/css/scipost-physics.scss
+++ b/scipost/static/scipost/assets/css/scipost-physics.scss
@@ -1,9 +1,10 @@
 .journals .navbar-secondary ul.links {
-    background-color: #dddddd;
+    background-color: #ddd;
     display: inline-block;
     font-size: 16px;
     padding: 0;
-    border-radius: 1.4px;
+    border-radius: $card-border-radius;
+    border: 1px solid #c5c5c5;
     margin: 0;
 
     > li {
@@ -13,12 +14,13 @@
 
         a {
             padding: 0.25rem 0.75rem;
-            border-radius: 1.4px;
+            border-radius: $card-border-radius;
             display: block;
 
             &.active {
                 color: #002b49;
                 background: rgba(255, 255, 255, 0.5);
+                box-shadow: 0 1px 0 0 #ccc;
             }
         }
     }
diff --git a/scipost/static/scipost/assets/css/style.scss b/scipost/static/scipost/assets/css/style.scss
index 860452d8c4ad327739acf3d66f3a890cac8f2327..5d7150221dccd61915beaad5a837bc80e2a7dccc 100644
--- a/scipost/static/scipost/assets/css/style.scss
+++ b/scipost/static/scipost/assets/css/style.scss
@@ -24,6 +24,7 @@
 @import "code";
 @import "form";
 @import "grid";
+@import "homepage";
 @import "labels";
 @import "list_group";
 @import "messages";
diff --git a/scipost/static/scipost/assets/js/newsticker.js b/scipost/static/scipost/assets/js/newsticker.js
new file mode 100644
index 0000000000000000000000000000000000000000..298452931cd935596d551e873acaf2cb78a72184
--- /dev/null
+++ b/scipost/static/scipost/assets/js/newsticker.js
@@ -0,0 +1,82 @@
+/*!
+    SciPost NewsTicker
+
+ */
+
+var NewsTicker;
+
+
+NewsTicker = (function() {
+    NewsTicker.prototype.items = [];
+
+    NewsTicker.prototype.cached_items = [];
+
+    NewsTicker.prototype.defaults = {
+        url: '/api',
+        interval: 10000,
+    };
+
+    function NewsTicker(element, options) {
+        this.element = element;
+        this.options = $.extend({}, this.defaults, options);
+
+        // Start building...
+        this.start_ticker()
+    };
+
+    NewsTicker.prototype.set_item = function(item_id) {
+        var self = this
+
+        this.element.fadeOut(function() {
+            self.element.html(self.cached_items[item_id]).fadeIn()
+        })
+    };
+
+    NewsTicker.prototype.get_item = function(item) {
+        var self = this
+
+        if(typeof(this.cached_items[item.id]) == 'undefined') {
+            $.get(this.options.url + '/' + item.id + '/?format=html')
+            .done(function(data) {
+                self.cached_items[item.id] = data
+                self.set_item(item.id)
+            })
+        } else {
+            self.set_item(item.id)
+        }
+    };
+
+    NewsTicker.prototype.start_ticker = function() {
+        var self = this
+        var time = 0;
+
+        $.get(this.options.url + '?format=json')
+        .done(function(data) {
+            var counter = 1
+            var total = data.length
+
+            setInterval(function(){
+                self.get_item(data[counter % total]);
+                counter += 1
+            }, self.options.interval);
+        })
+    };
+
+    return NewsTicker;
+})();
+
+
+(function($) {
+    // Extend jQuery
+    $.fn.scipost_newsticker = function(options) {
+        var ticker = new NewsTicker(this, options)
+        console.log('SciPost NewTicker')
+        return this;
+    }
+
+    // Start
+    $('#news ul').scipost_newsticker({
+        url: 'api/news',
+        interval: 6000
+    })
+}(jQuery));
diff --git a/scipost/templates/scipost/EdCol_by-laws.html b/scipost/templates/scipost/EdCol_by-laws.html
index 83706b9d46dae99ac69a718184aa3eff3ad82d00..900240e4c719b11962c6052d84b172dd8b93c3a3 100644
--- a/scipost/templates/scipost/EdCol_by-laws.html
+++ b/scipost/templates/scipost/EdCol_by-laws.html
@@ -2,44 +2,22 @@
 
 {% block pagetitle %}: Editorial College By-laws{% endblock pagetitle %}
 
-{% block bodysup %}
+{% block content %}
 
 {% load scipost_extras %}
 
-<script>
-  $(document).ready(function(){
 
-  $("#Composition").hide();
-  $("#Meetings").hide();
-  $("#SubmissionsProcessing").hide();
-  $("#Amendments").hide();
 
-  $("#CompositionButton").click(function(){
-  $("#Composition").toggle();
-  });
-  $("#MeetingsButton").click(function(){
-  $("#Meetings").toggle();
-  });
-  $("#SubmissionsProcessingButton").click(function(){
-  $("#SubmissionsProcessing").toggle();
-  });
-  $("#AmendmentsButton").click(function(){
-  $("#Amendments").toggle();
-  });
-
-});
-</script>
-
-
-<section>
-  <h1>SciPost Editorial College By-laws</h1>
+<div class="row">
+    <div class="col-12">
+        <h1 class="highlight">SciPost Editorial College By-laws</h1>
 
   <p>Functioning of the SciPost Editorial College is governed by the following set of by-laws.</p>
   <p>These complement and are subsidiary to the legal statutes of Stichting SciPost (hereafter: the Foundation).</p>
   <ol>
-    <hr class="hr6"/>
-    <li>Composition of the Editorial College <button id="CompositionButton">(view/hide)</button>
-      <div id="Composition">
+    <hr>
+    <li>Composition of the Editorial College <a href="javascript:;" class="btn btn-secondary" data-toggle="toggle" data-target="#Composition">view/hide</a>
+      <div id="Composition" class="py-2" style="display: none;">
 	<ol>
 	  <li>Eligibility
 	    <p>Fellows of the Editorial College must be professionally active academics
@@ -105,9 +83,9 @@
       </div>
     </li>
 
-    <hr class="hr6"/>
-    <li>Meetings <button id="MeetingsButton">(view/hide)</button>
-      <div id="Meetings">
+    <hr>
+    <li>Meetings <a href="javascript:;" class="btn btn-secondary" data-toggle="toggle" data-target="#Meetings">view/hide</a>
+      <div id="Meetings" class="py-2" style="display: none;">
 	<p>The Editorial College, consisting of internationally-renowned scientists with a broad
 	  geographic distribution, does not physically meet. Meetings are instead organized
 	  using online facilities.</p>
@@ -141,9 +119,9 @@
       </div>
     </li>
 
-    <hr class="hr6"/>
-    <li>Submissions processing <button id="SubmissionsProcessingButton">(view/hide)</button>
-      <div id="SubmissionsProcessing">
+    <hr>
+    <li>Submissions processing <a href="javascript:;" class="btn btn-secondary" data-toggle="toggle" data-target="#SubmissionsProcessing">view/hide</a>
+      <div id="SubmissionsProcessing" class="py-2" style="display: none;">
 	<p>The primary responsibility of the Editorial College is to run the editorial process
 	  for all SciPost Journals. The College shall strive for the very highest standards of
 	  professionalism achievable in the refereeing process.</p>
@@ -349,9 +327,9 @@
       </div>
     </li>
 
-    <hr class="hr6"/>
-    <li>Amendments <button id="AmendmentsButton">(view/hide)</button>
-      <div id="Amendments">
+    <hr>
+    <li>Amendments <a href="javascript:;" class="btn btn-secondary" data-toggle="toggle" data-target="#Amendments">view/hide</a>
+      <div id="Amendments" class="py-2" style="display: none;">
 	<p>The present By-laws can be amended by:
 	  <ul>
 	    <li>the Foundation, with veto right (by majority vote) from the Advisory Board</li>
@@ -363,7 +341,7 @@
     </li>
   </ol>
 
-</section>
-
+    </div>
+</div>
 
-{% endblock bodysup %}
+{% endblock %}
diff --git a/scipost/templates/scipost/FAQ.html b/scipost/templates/scipost/FAQ.html
index fb3f7f91c91b41a66f8d5a421a3bf0a9a9d27e77..3c6d8e5b7f7c607bd293755115fad5d2498d3b4d 100644
--- a/scipost/templates/scipost/FAQ.html
+++ b/scipost/templates/scipost/FAQ.html
@@ -143,7 +143,7 @@
 
             <h3>Who is behind SciPost?</h3>
             <ul>
-                <li>SciPost was founded by <a target="_blank" href="http://staff.fnwi.uva.nl/j.s.caux">J.-S. Caux</a>, Professor of Theoretical Physics at the University of Amsterdam.</li>
+                <li>SciPost was founded by <a target="_blank" href="//jscaux.org/">J.-S. Caux</a>, Professor of Theoretical Physics at the University of Amsterdam.</li>
                 <li>The legal entity behind SciPost is <a href="{% url 'scipost:foundation' %}">Stichting SciPost</a>, a not-for-profit Foundation established in Amsterdam. Its (non-remunerated) personnel consists in Prof. J.-S. Caux (chairman), Dr J. van Mameren (secretary) and Dr J. van Wezel (treasurer). The portal is run by a team of volunteer officers coordinated by the Foundation.</li>
             </ul>
 
@@ -163,7 +163,7 @@
             <hr>
             <h3>How is SciPost funded?</h3>
             <p>SciPost operates non-commercially, incurring minimal costs. Contributors, who are by definition all academically employed, provide all the content and perform all editorial tasks as part of their normal institutional academic duties. Operations are kept running by a team of volunteer officers, themselves academically employed.</p>
-            <p>Support for operational costs is initially provided by the <a target="_blank" href="http://www.nwo.nl/en">NWO</a> in the Netherlands. Long-term operations will be financed by donations from national funding agencies, universities, societies, foundations and individuals. If you are interested in financially supporting SciPost, <a href="mailto:J.S.Caux@uva.nl">contact us</a>.</p>
+            <p>Support for operational costs is initially provided by the <a target="_blank" href="http://www.nwo.nl/en">NWO</a> in the Netherlands. Long-term operations will be financed by donations from national funding agencies, universities, societies, foundations and individuals. If you are interested in financially supporting SciPost, <a href="mailto:jscaux@scipost.org">contact us</a>.</p>
     </div>
 </div>
 
diff --git a/scipost/templates/scipost/VGM_detail.html b/scipost/templates/scipost/VGM_detail.html
deleted file mode 100644
index 69b5a224772da1497dd1b1040cb97344f42e3f5b..0000000000000000000000000000000000000000
--- a/scipost/templates/scipost/VGM_detail.html
+++ /dev/null
@@ -1,352 +0,0 @@
-{% extends 'scipost/base.html' %}
-
-{% block pagetitle %}: VGM detail{% endblock pagetitle %}
-
-{% load staticfiles %}
-
-{% block bodysup %}
-
-<script>
-$(document).ready(function(){
-
-  $("#submitFeedbackForm").hide();
-  $("#submitFeedbackButton").click( function() {
-     $(this).next("form").toggle();
-  });
-
-  $("#FellowshipListing").hide();
-  $("#FellowshipListingButton").click( function() {
-      $("#FellowshipListing").toggle();
-  });
-
-  $("#submitNominationForm").hide();
-  $("#submitNominationButton").click( function() {
-     $(this).next("form").toggle();
-  });
-
-  $("#submitMotionForm").hide();
-  $("#submitMotionButton").click( function() {
-     $(this).next("form").toggle();
-  });
-
-  $(".submitRemarkForm").hide();
-
-  $(".submitRemarkButton").click( function() {
-     $(this).next("div").toggle();
-  });
-  });
-
-</script>
-
-<section>
-  <div class="flex-container">
-    <div class="flex-greybox">
-      <h1>SciPost Virtual General Meeting</h1>
-    </div>
-  </div>
-  <div class="flex-container">
-    <div class="flex-whitebox">
-      <h2>On this page:</h2>
-      <ul>
-	<li><a href="#Information">Information message</a></li>
-	<li><a href="#Feedback">Feedback</a></li>
-	<li><a href="#Nominations">Nominations</a></li>
-	<li><a href="#Motions">Motions</a></li>
-      </ul>
-    </div>
-  </div>
-  <hr class="hr12"/>
-</section>
-
-
-<section id="Information">
-  <div class="flex-container">
-    <div class="flex-greybox">
-      <h2>Information message from SciPost Administration</h2>
-    </div>
-  </div>
-  <div class="flex-whitebox">
-    {{ VGM_information }}
-  </div>
-  <br/>
-  <div class="flex-whitebox">
-    <h3>Quick bullet points:</h3>
-    <ul>
-      <li>This VGM is scheduled from {{ VGM.start_date|date:'Y-m-d' }} to {{ VGM.end_date|date:'Y-m-d' }}.</li>
-      <li>Your feedback/suggestions/criticisms on any aspect of SciPost are greatly valued. Provide them by filling the <a href="#FeedbackBox">feedback form</a>.</li>
-      <li>Your nominations to the Editorial College are welcome. Simply fill the <a href="#NominationBox">nomination form</a>, and cast your vote on current nominations.</li>
-      <li>For substantial changes, for example to the by-laws, new Motions can be put forward until the end of the meeting using the <a href="#MotionBox">form</a>.</li>
-      <li>Voting on Motions is open until one week after the meeting.</li>
-      <li>You a referred to the <a href="{% url 'scipost:EdCol_by-laws' %}">by-laws</a>, section 2 for further details about the procedures.</li>
-    </ul>
-  </div>
-  <br/>
-  <hr class="hr12"/>
-</section>
-
-<section id="Feedback">
-  <div class="flex-container">
-    <div class="flex-greybox" id="FeedbackBox">
-      <h2>Feedback on SciPost</h2>
-      <button id="submitFeedbackButton">Provide feedback</button>
-      <form id="submitFeedbackForm" action="{% url 'scipost:feedback' VGM_id=VGM.id %}" method="post">
-	{% csrf_token %}
-	{{ feedback_form.as_p }}
-	<input type="submit" value="Submit"/>
-      </form>
-    </div>
-  </div>
-  <div class="flex-container">
-    <div class="flex-greybox">
-      <h2>General Feedback provided</h2>
-    </div>
-  </div>
-  <div class="row">
-    <div class="col-1"></div>
-    <div class="col-10">
-      <ul>
-	{% for feedback in feedback_received %}
-	<li>{{ feedback.as_li }}</li>
-	<button class="submitRemarkButton" id="remarkButton{{ nomination.id }}">Add a remark on this Feedback</button>
-	<div class="submitRemarkForm" id="remarkForm{{ feedback.id }}">
-	  <form action="{% url 'scipost:add_remark_on_feedback' VGM_id=VGM.id feedback_id=feedback.id %}" method="post">
-	    {% csrf_token %}
-	    {{ remark_form.as_p }}
-	    <input type="submit" value="Submit" />
-	  </form>
-	</div>
-	{% if feedback.remark_set.all %}
-	<h3>Remarks on this feedback:</h3>
-	<ul>
-	  {% for rem in feedback.remark_set.all %}
-	  {{ rem.as_li }}
-	  {% endfor %}
-	</ul>
-	{% endif %}
-	{% endfor %}
-      </ul>
-    </div>
-  </div>
-  <hr class="hr12"/>
-</section>
-
-<section id="Nominations">
-  <div class="flex-container">
-    <div class="flex-greybox" id="NominationBox">
-      <h2>Nominations to the Editorial College</h2>
-      <button id="submitNominationButton">Nominate an Editorial Fellow candidate</button>
-      <form id="submitNominationForm" action="{% url 'scipost:nominate_Fellow' VGM_id=VGM.id %}" method="post">
-	{% csrf_token %}
-	{{ nomination_form.as_p }}
-        <input type="submit" value="Submit"/>
-      </form>
-    </div>
-  </div>
-  <button id="FellowshipListingButton">View/hide Fellows and Invitations listings</button>
-  <div class="row" id="FellowshipListing">
-    <div class="col-6">
-      <div class="flex-container">
-	<div class="flex-greybox">
-	  <h3>Current Fellows</h3>
-	</div>
-      </div>
-      <div class="flex-container">
-	<div class="flex-whitebox">
-	  <table class="tableofInviteesResponded">
-	    {% for Fellow in current_Fellows %}
-	    <tr><td>{{ Fellow }}</td><td>{{ Fellow.discipline_as_string }}</td>
-	      <td>{{ Fellow.expertises_as_string }}</td></tr>
-	    {% endfor %}
-	  </table>
-	</div>
-      </div>
-    </div>
-    <div class="col-6">
-      <div class="flex-container">
-	<div class="flex-greybox">
-	  <h3>Invitations currently outstanding</h3>
-	</div>
-      </div>
-      <div class="flex-container">
-	<div class="flex-whitebox">
-	  <table class="tableofInvitees">
-	    {% for invitee in pending_inv_Fellows %}
-	    <tr><td>{{ invitee.first_name }} {{ invitee.last_name }}</td></tr>
-	    {% endfor %}
-	  </table>
-	</div>
-      </div>
-      <div class="flex-container">
-	<div class="flex-greybox">
-	  <h3>Invitations which have been turned down</h3>
-	</div>
-      </div>
-      <div class="flex-container">
-	<div class="flex-whitebox">
-	  <table class="tableofInviteesDeclined">
-	    {% for invitee in declined_inv_Fellows %}
-	    <tr><td>{{ invitee.first_name }} {{ invitee.last_name }}</td></tr>
-	    {% endfor %}
-	  </table>
-	</div>
-      </div>
-    </div>
-  </div>
-
-  {% if nominations %}
-  <div class="row">
-    <div class="flex-container">
-      <div class="flex-greybox">
-	<h2>Nominations under consideration</h2>
-      </div>
-    </div>
-  </div>
-  <div class="row">
-    <div class="col-1"></div>
-    <div class="col-10">
-    <ul style="list-style-type: none;">
-      {% for nomination in nominations %}
-      <li>
-	{{ nomination.as_li }}
-	<br/>
-	<div class="opinionsDisplay">
-	  <h4>Your opinion on this Nomination (voting deadline: {{ nomination.voting_deadline|date:'y-m-d' }}):</h4>
-	  <form action="{% url 'scipost:vote_on_nomination' nomination_id=nomination.id vote='A' %}" method="post">
-            {% csrf_token %}
-            <input type="submit" class="agree" value="Agree {{ nomination.nr_A }} "/>
-	  </form>
-	  <form action="{% url 'scipost:vote_on_nomination' nomination_id=nomination.id vote='N' %}" method="post">
-            {% csrf_token %}
-            <input type="submit" class="notsure" value="Not sure {{ nomination.nr_N }}"/>
-	  </form>
-	  <form action="{% url 'scipost:vote_on_nomination' nomination_id=nomination.id vote='D'%}" method="post">
-            {% csrf_token %}
-            <input type="submit" class="disagree" value="Disagree {{ nomination.nr_D }}"/>
-	  </form>
-	  {% if request.user.contributor in nomination.in_agreement.all %}
-	  <strong>(you have voted: Agreed)</strong>
-	  {% elif request.user.contributor in nomination.in_notsure.all %}
-	  <strong>(you have voted: Not sure)</strong>
-	  {% elif request.user.contributor in nomination.in_disagreement.all %}
-	  <strong>(you have voted: Disagree)</strong>
-	  {% endif %}
-	</div>
-	<br/><br/>
-	<button class="submitRemarkButton" id="remarkButton{{ nomination.id }}">Add a remark on this Nomination</button>
-	<div class="submitRemarkForm" id="remarkForm{{ nomination.id }}">
-	  <form action="{% url 'scipost:add_remark_on_nomination' VGM_id=VGM.id nomination_id=nomination.id %}" method="post">
-	    {% csrf_token %}
-	    {{ remark_form.as_p }}
-	    <input type="submit" value="Submit" />
-	  </form>
-	</div>
-	{% if nomination.remark_set.all %}
-	<h3>Remarks on this nomination:</h3>
-	<ul>
-	  {% for rem in nomination.remark_set.all %}
-	  {{ rem.as_li }}
-	  {% endfor %}
-	</ul>
-	{% endif %}
-	<hr class="hr6"/>
-	<br/>
-      </li>
-      {% endfor %}
-    </ul>
-    </div>
-  </div>
-  {% endif %}
-
-  <hr class="hr12"/>
-
-</section>
-
-<section id="Motions">
-  <div class="flex-container">
-    <div class="flex-greybox" id="MotionBox">
-      <h2>Submit a new Motion</h2>
-      <button id="submitMotionButton">Put a new Motion forward</button>
-      <form id="submitMotionForm" action="{% url 'scipost:put_motion_forward' VGM_id=VGM.id %}" method="post">
-	{% csrf_token %}
-	{% load crispy_forms_tags %}
-	{% crispy motion_form %}
-      </form>
-    </div>
-  </div>
-
-  <div class="row">
-    <div class="flex-container">
-      <div class="flex-greybox">
-	<h2>Motions under consideration</h2>
-      </div>
-    </div>
-  </div>
-  {% for key, val in motion_categories_dict.items %}
-  <div class="row">
-    <div class="col-1"></div>
-    <div class="flex-container">
-      <div class="flex-greybox">
-	<h3>{{ val }}:</h3>
-      </div>
-    </div>
-    <div class="col-1"></div>
-    <div class="col-10">
-    <ul>
-      {% for motion in VGM.motion_set.all %}
-      {% if motion.category == key %}
-      <li>
-	{{ motion.as_li }}
-	<br/>
-	<div class="opinionsDisplay">
-	  <h4>Your opinion on this Motion (voting deadline: {{ motion.voting_deadline|date:'y-m-d' }}):</h4>
-	  <form action="{% url 'scipost:vote_on_motion' motion_id=motion.id vote='A' %}" method="post">
-            {% csrf_token %}
-            <input type="submit" class="agree" value="Agree {{ motion.nr_A }} "/>
-	  </form>
-	  <form action="{% url 'scipost:vote_on_motion' motion_id=motion.id vote='N' %}" method="post">
-            {% csrf_token %}
-            <input type="submit" class="notsure" value="Not sure {{ motion.nr_N }}"/>
-	  </form>
-	  <form action="{% url 'scipost:vote_on_motion' motion_id=motion.id vote='D'%}" method="post">
-            {% csrf_token %}
-            <input type="submit" class="disagree" value="Disagree {{ motion.nr_D }}"/>
-	  </form>
-	  {% if request.user.contributor in motion.in_agreement.all %}
-	  <strong>(you have voted: Agreed)</strong>
-	  {% elif request.user.contributor in motion.in_notsure.all %}
-	  <strong>(you have voted: Not sure)</strong>
-	  {% elif request.user.contributor in motion.in_disagreement.all %}
-	  <strong>(you have voted: Disagree)</strong>
-	  {% endif %}
-	</div>
-	<br/><br/>
-	<button class="submitRemarkButton" id="remarkButton{{ motion.id }}">Add a remark on this Motion</button>
-	<div class="submitRemarkForm" id="remarkForm{{ motion.id }}">
-	  <form action="{% url 'scipost:add_remark_on_motion' motion_id=motion.id %}" method="post">
-	    {% csrf_token %}
-	    {{ remark_form.as_p }}
-	    <input type="submit" value="Submit" />
-	  </form>
-	</div>
-	{% if motion.remark_set.all %}
-	<h3>Remarks on this motion:</h3>
-	<ul>
-	  {% for rem in motion.remark_set.all %}
-	  {{ rem.as_li }}
-	  {% endfor %}
-	</ul>
-	{% endif %}
-	<hr class="hr6"/>
-	<br/>
-      </li>
-      {% endif %}
-      {% endfor %}
-    </ul>
-    </div>
-  </div>
-  {% endfor %}
-
-</section>
-
-
-{% endblock bodysup %}
diff --git a/scipost/templates/scipost/VGMs.html b/scipost/templates/scipost/VGMs.html
deleted file mode 100644
index a482a21dfadd11a7121e88458dd9bdb2df7ef9a0..0000000000000000000000000000000000000000
--- a/scipost/templates/scipost/VGMs.html
+++ /dev/null
@@ -1,26 +0,0 @@
-{% extends 'scipost/base.html' %}
-
-{% block pagetitle %}: VGMs{% endblock pagetitle %}
-
-{% load staticfiles %}
-
-{% block bodysup %}
-
-
-<section>
-  <div class="flex-container">
-    <div class="flex-greybox">
-      <h1>SciPost Virtual General Meetings</h1>
-    </div>
-  </div>
-
-  <ul>
-    {% for VGM in VGM_list %}
-    <li><a href="{% url 'virtualmeetings:VGM_detail' VGM_id=VGM.id %}">{{ VGM }}</a></li>
-    {% endfor %}
-  </ul>
-
-</section>
-
-
-{% endblock bodysup %}
diff --git a/scipost/templates/scipost/_personal_page_base.html b/scipost/templates/scipost/_personal_page_base.html
index a60e5b5b1129a08d124e3bc4a5c52d9719eee89f..d49b0b375cca3ea9c00f41f6f7052379a5403476 100644
--- a/scipost/templates/scipost/_personal_page_base.html
+++ b/scipost/templates/scipost/_personal_page_base.html
@@ -1,7 +1,7 @@
 {% extends 'scipost/base.html' %}
 
 {% block breadcrumb %}
-    <nav class="breadcrumb py-md-2 px-0">
+    <nav class="breadcrumb py-md-2 px-0 hidden-sm-down">
         <div class="container">
             {% block breadcrumb_items %}
                 <a href="{% url 'scipost:personal_page' %}" class="breadcrumb-item">Personal Page</a>
diff --git a/scipost/templates/scipost/about.html b/scipost/templates/scipost/about.html
index 8b00039cb17953c06ea44bb670510d41a13f6bf7..eb6f866f1309ef2daf8f9ace35206b52e700b331 100644
--- a/scipost/templates/scipost/about.html
+++ b/scipost/templates/scipost/about.html
@@ -11,16 +11,8 @@
 
 <div class="row">
     <div class="col-md-6">
-        <div class="row">
-            <div class="col-12">
-              <div class="panel">
-                  <h2>About SciPost</h2>
-              </div>
-            </div>
-            <div class="col-12">
-                <a href="{% url 'scipost:FAQ' %}">Frequently asked questions</a>
-            </div>
-        </div>
+        <h2 class="highlight">About SciPost</h2>
+        <a href="{% url 'scipost:FAQ' %}">Frequently asked questions</a>
 
         <p>SciPost is a complete scientific publication portal.</p>
         <p>It is purely online-based, and offers freely, openly, globally and perpetually accessible science.</p>
@@ -28,14 +20,7 @@
         <p>SciPost Commentaries allow Contributors to seamlessly comment on all existing literature.</p>
     </div>
     <div class="col-md-6">
-
-        <div class="row">
-            <div class="col-12">
-                <div class="panel">
-                    <h2>Acknowledgements</h2>
-                </div>
-            </div>
-        </div>
+        <h2 class="highlight">Acknowledgements</h2>
 
         <h2>SciPost is endorsed by</h2>
 
@@ -55,9 +40,7 @@
 <hr>
 <div class="row">
   <div class="col-12">
-    <div class="panel">
-      <h2>Guiding principles</h2>
-    </div>
+      <h2 class="highlight">Guiding principles</h2>
   </div>
 </div>
 
@@ -86,9 +69,7 @@
 <hr>
 <div class="row">
     <div class="col-12">
-        <div class="panel">
-      <h2>The SciPost Team</h2>
-        </div>
+      <h2 class="highlight">The SciPost Team</h2>
     </div>
 </div>
 <div class="row">
@@ -112,9 +93,7 @@
 <hr>
 <div class="row">
   <div class="col-12">
-    <div class="panel">
-      <h2 id="advisory_board">Advisory Board</h2>
-    </div>
+      <h2 class="highlight" id="advisory_board">Advisory Board</h2>
   </div>
 </div>
 
@@ -149,9 +128,7 @@
 
     <div class="row">
         <div class="col-12">
-            <div class="panel">
-              <h2 id="editorial_college_{{ college|lower }}">Editorial College ({{ college }})</h2>
-            </div>
+              <h2 class="highlight" id="editorial_college_{{ college|lower }}">Editorial College ({{ college }})</h2>
         </div>
     </div>
 
diff --git a/scipost/templates/scipost/bare_base.html b/scipost/templates/scipost/bare_base.html
new file mode 100644
index 0000000000000000000000000000000000000000..418706259b790f51a857a6136e7c9f07edacf0c5
--- /dev/null
+++ b/scipost/templates/scipost/bare_base.html
@@ -0,0 +1,55 @@
+{% load render_bundle from webpack_loader %}
+
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+
+    {% load staticfiles %}
+
+    <link href="https://fonts.googleapis.com/css?family=Merriweather+Sans:300,400,700" rel="stylesheet">
+    <link rel="stylesheet" type="text/css" href="{% static 'scipost/SciPost.css' %}" />
+
+    {% render_bundle 'bootstrap' 'css' %}
+    {% render_bundle 'main' 'css' %}
+
+    <link rel="shortcut icon" href="{% static 'scipost/images/scipost_favicon.png' %}"/>
+
+    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+
+    <title>SciPost{% block pagetitle %}{% endblock pagetitle %}</title>
+
+    <script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
+    <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
+    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
+
+    {% block headsup %}
+    {% endblock headsup %}
+  </head>
+
+  <body class="{% block body_class %}{% endblock %}">
+    {% include 'scipost/header.html' %}
+    {% include 'scipost/navbar.html' %}
+    {% block breadcrumb %}{% endblock breadcrumb %}
+    {% block secondary_navbar %}{% endblock secondary_navbar %}
+    {% include 'scipost/messages.html' %}
+
+
+    {% block base %}{% endblock base %}
+
+    <script type="text/x-mathjax-config">
+      MathJax.Hub.Config({
+      tex2jax: {
+      inlineMath: [['$','$'], ['\\(','\\)']],
+      processEscapes: true
+      }});
+    </script>
+    <script type="text/javascript" async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML"></script>
+
+    {% render_bundle 'main' 'js' %}
+    {% render_bundle 'bootstrap' 'js' %}
+
+    {% block footer_script %}
+    {% endblock footer_script %}
+</body>
+
+</html>
diff --git a/scipost/templates/scipost/base.html b/scipost/templates/scipost/base.html
index 662e803287db4231527d994c9ae1813a9cbbd93e..c223d7c9a461da9988ee6e44efb9e435813dceff 100644
--- a/scipost/templates/scipost/base.html
+++ b/scipost/templates/scipost/base.html
@@ -1,39 +1,7 @@
-{% load render_bundle from webpack_loader %}
+{% extends 'scipost/bare_base.html' %}
 
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-
-    {% load staticfiles %}
-
-    <link rel="stylesheet" type="text/css" href="{% static 'scipost/SciPost.css' %}" />
-
-    {% render_bundle 'bootstrap' 'css' %}
-    {% render_bundle 'main' 'css' %}
-
-    <link rel="shortcut icon" href="{% static 'scipost/images/scipost_favicon.png' %}"/>
-
-    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
-
-    <title>SciPost{% block pagetitle %}{% endblock pagetitle %}</title>
-
-    <script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
-    <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
-    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
-
-    {% block headsup %}
-    {% endblock headsup %}
-  </head>
-
-  <body class="{% block body_class %}{% endblock %}">
-    {% include 'scipost/header.html' %}
-    {% include 'scipost/navbar.html' %}
-    {% block breadcrumb %}{% endblock breadcrumb %}
-    {% block secondary_navbar %}{% endblock secondary_navbar %}
-    {% include 'scipost/messages.html' %}
-
-
-    <div class="container">
+{% block base %}
+    <div class="{% block container_class %}container{% endblock %}">
         {% block page_header %}{% endblock page_header %}
 
         {% block content %}{% endblock content %}
@@ -48,20 +16,4 @@
 
     {% include 'scipost/footer.html' %}
 
-    <script type="text/x-mathjax-config">
-      MathJax.Hub.Config({
-      tex2jax: {
-      inlineMath: [['$','$'], ['\\(','\\)']],
-      processEscapes: true
-      }});
-    </script>
-    <script type="text/javascript" async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML"></script>
-
-    {% render_bundle 'main' 'js' %}
-    {% render_bundle 'bootstrap' 'js' %}
-
-    {% block footer_script %}
-    {% endblock footer_script %}
-</body>
-
-</html>
+{% endblock base %}
diff --git a/scipost/templates/scipost/base_for_sidebar.html b/scipost/templates/scipost/base_for_sidebar.html
new file mode 100644
index 0000000000000000000000000000000000000000..86d25e5bace4d9fcf476e55640bb601c80f07ec1
--- /dev/null
+++ b/scipost/templates/scipost/base_for_sidebar.html
@@ -0,0 +1,28 @@
+{% extends 'scipost/bare_base.html' %}
+
+{% block base %}
+    <div class="content-wrapper">
+        <div class="main-panel">
+            <div class="{% block container_class %}container-fluid{% endblock %}">
+                {% block page_header %}{% endblock page_header %}
+
+                {% block content %}{% endblock content %}
+
+                {% block content_footer %}{% endblock content_footer %}
+            </div>
+
+            {% block bodysup %}
+            {% endblock bodysup %}
+
+            {% block secondary_footer %}{% endblock secondary_footer %}
+
+        </div>
+
+        <div class="sidebar">
+            {% block sidebar %}{% endblock %}
+        </div>
+    </div>
+
+    {% include 'scipost/footer.html' %}
+
+{% endblock base %}
diff --git a/scipost/templates/scipost/call.html b/scipost/templates/scipost/call.html
index 83dfa06907da18ee22ad0de290a3a77cb2155cf9..2da3051c915782e9a72ae95c5c7374c936af6b32 100644
--- a/scipost/templates/scipost/call.html
+++ b/scipost/templates/scipost/call.html
@@ -4,17 +4,15 @@
 
 {% load staticfiles %}
 
-{% block bodysup %}
+{% block content %}
 
-
-<section>
-  <div class="flex-container">
-    <div class="flex-greybox320">
-      <h1><a href="{% url 'scipost:about' %}">A call for openness</a></h1>
+<div class="row">
+    <div class="col-12">
+      <h1 class="highlight"><a href="{% url 'scipost:about' %}">A call for openness</a></h1>
     </div>
-    <div class="row">
-      <div class="col-1"></div>
-      <div class="col-10">
+</div>
+<div class="row">
+    <div class="col-md-10 offset-md-1">
       <p>
 	Scientific publishing is currently making the news headlines.
 	With the recent <a href="http://english.eu2016.nl/documents/reports/2016/04/04/amsterdam-call-for-action-on-open-science">Amsterdam call for action on open science</a>
@@ -67,6 +65,7 @@
 
   </div>
 
-</section>
+    </div>
+</div>
 
-{% endblock bodysup %}
+{% endblock %}
diff --git a/scipost/templates/scipost/comments_block.html b/scipost/templates/scipost/comments_block.html
index 14d9eb94e68ba256201b29b32c26563290eac3eb..ba9a2e069b566a3b13c7b599494bc8dd355a22bd 100644
--- a/scipost/templates/scipost/comments_block.html
+++ b/scipost/templates/scipost/comments_block.html
@@ -4,8 +4,8 @@
     <div class="col-12">
         <div class="card card-grey">
             <div class="card-block">
-                <h2 class="card-title">Comments{% if type_of_object %} on this {{type_of_object}}{% endif %}</h2>
-                <button class="btn btn-secondary" data-toggle="toggle" data-target="#commentslist">Toggle comments view</button>
+                <h2 class="card-title mb-0">{% if type_of_object %} on this {{type_of_object}}{% endif %}</h2>
+                <a href="javascript:;" data-toggle="toggle" data-target="#commentslist">Toggle comments view</a>
             </div>
         </div>
     </div>
diff --git a/scipost/templates/scipost/disabled_account.html b/scipost/templates/scipost/disabled_account.html
deleted file mode 100644
index 5598d5b9294055eeb3d83efe2b30b284c63d045b..0000000000000000000000000000000000000000
--- a/scipost/templates/scipost/disabled_account.html
+++ /dev/null
@@ -1,9 +0,0 @@
-{% extends 'scipost/base.html' %}
-
-{% block pagetitle %}: account disabled{% endblock pagetitle %}
-
-{% block bodysup %}
-
-<p>Your account is disabled.</p>
-
-{% endblock bodysup %}
diff --git a/scipost/templates/scipost/email_group_members.html b/scipost/templates/scipost/email_group_members.html
index 9342b9e4281ada56d73d37d562b94f729d1f2ebd..c91fd98618ea113df9d5f966aa5373724191adcd 100644
--- a/scipost/templates/scipost/email_group_members.html
+++ b/scipost/templates/scipost/email_group_members.html
@@ -1,29 +1,27 @@
-{% extends 'scipost/base.html' %}
+{% extends 'scipost/_personal_page_base.html' %}
 
-{% block pagetitle %}: email group members{% endblock pagetitle %}
-
-{% block headsup %}
+{% block breadcrumb_items %}
+    {{block.super}}
+    <span class="breadcrumb-item">Email group members</span>
+{% endblock %}
 
-{% load scipost_extras %}
+{% block pagetitle %}: email group members{% endblock pagetitle %}
 
-{% endblock headsup %}
+{% load bootstrap %}
 
-{% block bodysup %}
+{% block content %}
 
-<section>
-  {% if errormessage %}
-    <p>{{ errormessage }}</p>
-  {% endif %}
-  <div class="flex-greybox">
-    <h1>Email a Group of Contributors</h1>
-  </div>
+<div class="row">
+    <div class="col-12">
+        <h1 class="highlight">Email a Group of Contributors</h1>
 
-  <form action="{% url 'scipost:email_group_members' %}" method="post">
-    {% csrf_token %}
-    {{ form.as_p }}
-    <input type="submit" value="Send email"/>
-  </form>
+      <form action="{% url 'scipost:email_group_members' %}" method="post">
+        {% csrf_token %}
+        {{ form|bootstrap }}
+        <input type="submit" class="btn btn-secondary" value="Send email"/>
+      </form>
 
-</section>
+    </div>
+</div>
 
-{% endblock bodysup %}
+{% endblock %}
diff --git a/scipost/templates/scipost/email_particular.html b/scipost/templates/scipost/email_particular.html
index f6a3e8cdee6888ebbca9409b221900eb4a07c6df..35ca4b7b650b540f3f54d44c210faf57119a8f6f 100644
--- a/scipost/templates/scipost/email_particular.html
+++ b/scipost/templates/scipost/email_particular.html
@@ -1,30 +1,29 @@
-{% extends 'scipost/base.html' %}
+{% extends 'scipost/_personal_page_base.html' %}
 
-{% block pagetitle %}: email particular{% endblock pagetitle %}
-
-{% block headsup %}
+{% load bootstrap %}
 
-{% load scipost_extras %}
+{% block breadcrumb_items %}
+    {{block.super}}
+    <span class="breadcrumb-item">Email a particular individual/address</span>
+{% endblock %}
 
-{% endblock headsup %}
+{% block pagetitle %}: email particular{% endblock pagetitle %}
 
-{% block bodysup %}
 
-<section>
-  {% if errormessage %}
-    <p>{{ errormessage }}</p>
-  {% else %}
-  <div class="flex-greybox">
-    <h1>Email a particular</h1>
-  </div>
+{% block content %}
 
-  <form action="{% url 'scipost:email_particular' %}" method="post">
-    {% csrf_token %}
-    {{ form.as_p }}
-    <input type="submit" value="Send email"/>
-  </form>
-  {% endif %}
+<div class="row">
+    <div class="col-12">
+        <h1 class="highlight">Email a particular</h1>
+    </div>
+    <div class="col-md-8 offset-md-2">
+        <form action="{% url 'scipost:email_particular' %}" method="post">
+            {% csrf_token %}
+            {{ form|bootstrap:'0,12' }}
+            <input type="submit" class="btn btn-secondary" value="Send email"/>
+        </form>
 
-</section>
+    </div>
+</div>
 
-{% endblock bodysup %}
+{% endblock %}
diff --git a/scipost/templates/scipost/feeds.html b/scipost/templates/scipost/feeds.html
index 336b807b220abd776222bcd0330dd0e8ae58f9e2..e0f84121905f0a6def7ac31a8f11083b61b4cdc0 100644
--- a/scipost/templates/scipost/feeds.html
+++ b/scipost/templates/scipost/feeds.html
@@ -4,83 +4,64 @@
 
 {% load staticfiles %}
 
-{% block bodysup %}
+{% block content %}
 
+<div class="row">
+    <div class="col-12">
+        <h1 class="highlight">SciPost Feeds</h1>
 
-<section>
-  <div class="flex-container">
-    <div class="flex-greybox">
-      <h1>SciPost Feeds</h1>
-    </div>
-  </div>
+        <h2>News feeds</h2>
+          <p>
+              We provide both RSS (2.0) and Atom feeds for latest news and announcements.
+              The URL of the RSS feed is <a href="https://scipost.org/rss/news/">https://scipost.org/rss/news/</a>.
+              The URL of the Atom feed is <a href="https://scipost.org/atom/news/">https://scipost.org/atom/news/</a>.
+          </p>
 
-  <div class="flex-container">
-    <div class="flex-greybox">
-      <h3>News feeds</h3>
-    </div>
-  </div>
-  <div class="flex-container">
-    <div class="flex-whitebox">
-      <p>We provide both RSS (2.0) and Atom feeds for latest news and announcements.</p>
-      <p>The URL of the RSS feed is <a href="https://scipost.org/rss/news/">https://scipost.org/rss/news/</a>.</p>
-      <p>The URL of the Atom feed is <a href="https://scipost.org/atom/news/">https://scipost.org/atom/news/</a>.</p>
-    </div>
-  </div>
-  <div class="flex-container">
-    <div class="flex-greybox">
-      <h3>Publications feeds</h3>
-    </div>
-  </div>
-  <div class="flex-container">
-    <div class="flex-whitebox">
-      <p>Similarly, we provide feeds for the latest publications.</p>
-      <p>The URL of the general RSS feed is <a href="https://scipost.org/rss/publications/">https://scipost.org/rss/publications</a>.</p>
-      <p>The URL of the general Atom feed is <a href="https://scipost.org/atom/publications/">https://scipost.org/atom/publications/</a>.</p>
-      <br/>
-      <p>You can also obtain feeds only for any specific specialization by using the links in the table below.</p>
-    </div>
-  </div>
-  <div class="flex-container">
-    <div class="flex-greybox">
-      <h3>Submissions feeds</h3>
-    </div>
-  </div>
-  <div class="flex-container">
-    <div class="flex-whitebox">
-      <p>We also provide feeds for the latest submissions.</p>
-      <p>The URL of the general RSS feed is <a href="https://scipost.org/rss/submissions/">https://scipost.org/rss/submissions</a>.</p>
-      <p>The URL of the general Atom feed is <a href="https://scipost.org/atom/submissions/">https://scipost.org/atom/submissions/</a>.</p>
-      <br/>
-      <p>You can also obtain feeds only for any specific specialization by using the links in the table below.</p>
-    </div>
-  </div>
-  <div class="flex-container">
-    <div class="flex-greybox">
-      <h3>Feeds by specific subject area</h3>
-    </div>
-  </div>
-  <div class="flex-container">
-    <div class="flex-whitebox">
-      <h3>Physics:</h3>
-      <table class="tablePadded10">
-	<thead>
-	<th>Subject area</th><th>Submissions</th><th>Publications</th>
-	</thead>
-	<tbody>
-	  {% for key, val in subject_areas_physics %}
-	  <tr>
-	    <td>{{ val }}</td>
-	    <td><a href="{% url 'scipost:sub_feed_spec_rss' subject_area=key %}">RSS</a>
-	    &nbsp;<a href="{% url 'scipost:sub_feed_spec_atom' subject_area=key %}">Atom</a></td>
-	    <td><a href="{% url 'scipost:pub_feed_spec_rss' subject_area=key %}">RSS</a>
-	    &nbsp;<a href="{% url 'scipost:pub_feed_spec_atom' subject_area=key %}">Atom</a></td>
-	  </tr>
-	  {% endfor %}
-	</tbody>
+        <h2>Publications feeds</h2>
+          <p>
+              Similarly, we provide feeds for the latest publications.
+              The URL of the general RSS feed is <a href="https://scipost.org/rss/publications/">https://scipost.org/rss/publications</a>.
+              The URL of the general Atom feed is <a href="https://scipost.org/atom/publications/">https://scipost.org/atom/publications/</a>.
+          </p>
+          <p>You can also obtain feeds only for any specific specialization by using the links in the table below.</p>
+
+        <h2>Submissions feeds</h2>
+          <p>
+              We also provide feeds for the latest submissions.
+              The URL of the general RSS feed is <a href="https://scipost.org/rss/submissions/">https://scipost.org/rss/submissions</a>.
+              The URL of the general Atom feed is <a href="https://scipost.org/atom/submissions/">https://scipost.org/atom/submissions/</a>.
+          </p>
+          <p>You can also obtain feeds only for any specific specialization by using the links in the table below.</p>
+
+        <h2>Feeds by specific subject area</h2>
+        <h3>Physics:</h3>
+
+      <table class="table">
+    	<thead>
+        	<th>Subject area</th>
+            <th>Submissions</th>
+            <th>Publications</th>
+    	</thead>
+    	<tbody>
+    	  {% for key, val in subject_areas_physics %}
+        	  <tr>
+        	    <td>{{ val }}</td>
+        	    <td>
+                    <a href="{% url 'scipost:sub_feed_spec_rss' subject_area=key %}">RSS</a> &middot;
+                    <a href="{% url 'scipost:sub_feed_spec_atom' subject_area=key %}">Atom</a>
+                </td>
+        	    <td>
+                    <a href="{% url 'scipost:pub_feed_spec_rss' subject_area=key %}">RSS</a> &middot;
+            	    <a href="{% url 'scipost:pub_feed_spec_atom' subject_area=key %}">Atom</a>
+                </td>
+        	  </tr>
+    	  {% endfor %}
+    	</tbody>
       </table>
     </div>
   </div>
-</section>
 
+    </div>
+</div>
 
-{% endblock bodysup %}
+{% endblock %}
diff --git a/scipost/templates/scipost/footer.html b/scipost/templates/scipost/footer.html
index d48aa8a3e5be17204832db5d715ac10013990f5f..a69ef2bf8bd2ab871184b3708c9a2ca4e0620da1 100644
--- a/scipost/templates/scipost/footer.html
+++ b/scipost/templates/scipost/footer.html
@@ -1,11 +1,11 @@
 {% load staticfiles %}
 <footer class="container-fluid py-2">
-  <div class="row">
+  <div class="row mt-2">
 
     <div class="col-md-4">
       Copyright &copy; <a href="{% url 'scipost:foundation' %}" target="_">SciPost Foundation</a>.
       <br/>
-      <a href="mailto:admin@scipost.org">Contact the administrators</a> or <a href="mailto:techsupport@scipost.org">tech support</a>.
+      Contact the <a href="mailto:admin@scipost.org">administrators</a> or <a href="mailto:techsupport@scipost.org">tech support</a>
       <br/>
       <a href="{% url 'scipost:terms_and_conditions' %}">Terms and conditions.</a>
     </div>
diff --git a/scipost/templates/scipost/foundation.html b/scipost/templates/scipost/foundation.html
index e167cd6979fb69c204743f75d92ddecb7d786c21..0344ceac5bd2ccc754130e3d082c4248415ef6cf 100644
--- a/scipost/templates/scipost/foundation.html
+++ b/scipost/templates/scipost/foundation.html
@@ -4,91 +4,104 @@
 
 {% load staticfiles %}
 
-{% block bodysup %}
+{% block content %}
 
-
-<section>
-  <div class="flex-container">
-    <div class="flex-greybox">
-      <h1>The SciPost Foundation (Stichting SciPost)</h1>
+<div class="row">
+    <div class="col-12">
+      <h1 class="highlight">The SciPost Foundation (Stichting SciPost)</h1>
     </div>
-  </div>
+</div>
 
-  <div class="flex-whitebox">
-    <p>
-      The SciPost Foundation, Inc. is a nonprofit organization dedicated to developing,
-      implementing and maintaining innovative forms of electronic scientific
-      communication and publishing.
-      The SciPost Foundation operates the <a href="{% url 'scipost:index' %}">SciPost.org</a>
-      interactive online portal for the benefit of the international scientific community
-      and further interested parties.
-    </p>
-    <p>You can consult the
-      <a href="{% static 'scipost/info/afschrift_OPR_St_SciPost.pdf' %}">Act of Foundation</a> (official version, in Dutch).</p>
-    <p>You can also consult our most recent <a href="{% static 'scipost/info/SciPost_Business_Plan_2016_08.pdf' %}">business plan</a>.
-    </p>
+<div class="row">
+    <div class="col-12">
+        <p>
+          The SciPost Foundation, Inc. is a nonprofit organization dedicated to developing,
+          implementing and maintaining innovative forms of electronic scientific
+          communication and publishing.
+          The SciPost Foundation operates the <a href="{% url 'scipost:index' %}">SciPost.org</a>
+          interactive online portal for the benefit of the international scientific community
+          and further interested parties.
+        </p>
+        <p>You can consult the
+          <a href="{% static 'scipost/info/afschrift_OPR_St_SciPost.pdf' %}">Act of Foundation</a> (official version, in Dutch).</p>
+        <p>You can also consult our most recent <a href="{% static 'scipost/info/SciPost_Business_Plan_2016_08.pdf' %}">business plan</a>.
+        </p>
   </div>
+</div>
 
-  <hr class="hr6"/>
+<div class="row">
+    <div class="col-12">
+        <div class="card-deck">
+            <div class="card">
+                <div class="card-block">
+                	<h2 class="highlight">SciPost Board</h2>
+                    <ul>
+                	  <li>Chairman: Prof. J.-S. Caux</li>
+                	  <li>Secretary: Dr J. van Mameren</li>
+                	  <li>Treasurer: Dr J. van Wezel</li>
+                	</ul>
+                	<p class="px-2">Board members do not receive any salary or financial compensation of any form for their work for the Foundation.</p>
+                </div>
+            </div>
 
-  <div class="flex-container">
-    <div class="flex-whitebox320">
-      <div class="flex-greybox">
-	<h2>SciPost Board:</h2>
-      </div>
-      <div class="flex-whitebox">
-	<ul>
-	  <li>Chairman: Prof. J.-S. Caux</li>
-	  <li>Secretary: Dr J. van Mameren</li>
-	  <li>Treasurer: Dr J. van Wezel</li>
-	</ul>
-	<p>Board members do not receive any salary or financial compensation of any form for their work for the Foundation.</p>
-      </div>
-    </div>
-    <div class="flex-whitebox320">
-      <div class="flex-greybox">
-	<h2>Contact details</h2>
-      </div>
-      <div class="flex-whitebox">
-	<p>c/o Prof. <a href="mailto:jscaux@scipost.org">J.-S. Caux</a></p>
-	<p>Institute of Physics</p>
-	<p>University of Amsterdam</p>
-	<p>Science Park 904</p>
-	<p>1098 XH</p>
-	<p>Amsterdam</p>
-	<p>The Netherlands</p>
-	<p>+31(0)20 525 5775</p>
-      </div>
-    </div>
-    <div class="flex-whitebox320">
-      <div class="flex-greybox">
-	<h2>Registration</h2>
-      </div>
-      <div class="flex-whitebox">
-	<p>Dutch Chamber of Commerce nr 65280083.</p>
-	<p>RSIN 856049487.</p>
-	<p><a href="{% static 'scipost/info/uittreksel_Stichting_SciPost.pdf' %}">Registration extract</a>.
-      </div>
-    </div>
-    <div class="flex-whitebox320">
-      <div class="flex-greybox">
-	<h2>Yearly Reports</h2>
-      </div>
-      <div class="flex-whitebox">
-	<p>2016 (to be published)</p>
-      </div>
-    </div>
-    <div class="flex-whitebox320">
-      <div class="flex-greybox">
-	<h2>Financial Reports</h2>
-      </div>
-      <div class="flex-whitebox">
-	<p>2016-7 (to be published)</p>
-      </div>
+            <div class="card">
+                <div class="card-block">
+                	<h2 class="highlight">Contact details</h2>
+
+                    <address class="px-2">
+                        c/o Prof. <a href="mailto:jscaux@scipost.org">J.-S. Caux</a></br>
+                    	Institute of Physics</br>
+                    	University of Amsterdam</br>
+                    	Science Park 904</br>
+                    	1098 XH</br>
+                    	Amsterdam</br>
+                    	The Netherlands</br>
+                    	+31(0)20 525 5775</br>
+                    </address>
+                </div>
+            </div>
+
+            <div class="card">
+                <div class="card-block">
+                	<h2 class="highlight">Registration</h2>
+
+                    <div class="px-2">
+                      	<p>
+                            Dutch Chamber of Commerce nr 65280083.</br>
+                      	    RSIN 856049487.<br>
+                      	    <a href="{% static 'scipost/info/uittreksel_Stichting_SciPost.pdf' %}">Registration extract</a>.
+                         </p>
+                    </div>
+                </div>
+            </div>
+        </div>
     </div>
-  </div>
+</div>
+
+<div class="row">
+    <div class="col-12">
+        <div class="card-deck">
+            <div class="card">
+                <div class="card-block">
+                	<h2 class="highlight">Registration</h2>
+                </div>
+            </div>
 
-</section>
+            <div class="card">
+                <div class="card-block">
+                	<h2 class="highlight">Yearly Reports</h2>
+                    <p class="px-2">2016 (to be published)</p>
+                </div>
+            </div>
 
+            <div class="card">
+                <div class="card-block">
+                	<h2 class="highlight">Financial Reports</h2>
+                    <p class="px-2">2016-7 (to be published)</p>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
 
-{% endblock bodysup %}
+{% endblock %}
diff --git a/scipost/templates/scipost/howto.html b/scipost/templates/scipost/howto.html
index f01dfda26dbd2a5a387fb77e4b2463485c38f77a..6826cd39a14dd3295a8fae081b6d5cb481477172 100644
--- a/scipost/templates/scipost/howto.html
+++ b/scipost/templates/scipost/howto.html
@@ -2,13 +2,14 @@
 
 {% block pagetitle %}: Howto Guides{% endblock pagetitle %}
 
-{% block bodysup %}
+{% block content %}
 
 {% load scipost_extras %}
 
 
-<section>
-  <h1>SciPost Howto Guides</h1>
+<div class="row">
+    <div class="col-12">
+      <h1 class="highlight">SciPost Howto Guides</h1>
 
   <ul>
     <li>
@@ -18,8 +19,8 @@
       </ul>
     </li>
   </ul>
+    </div>
+</div>
 
-</section>
 
-
-{% endblock bodysup %}
+{% endblock %}
diff --git a/scipost/templates/scipost/howto_production.html b/scipost/templates/scipost/howto_production.html
index d5fe13f22ab35ee5919adfc486e2f095b9909076..231b31f75bea6422bcdbe292ea929e41af2e4a26 100644
--- a/scipost/templates/scipost/howto_production.html
+++ b/scipost/templates/scipost/howto_production.html
@@ -2,13 +2,14 @@
 
 {% block pagetitle %}: Howto: Production{% endblock pagetitle %}
 
-{% block bodysup %}
-
 {% load scipost_extras %}
 
+{% block content %}
+
 
-<section>
-  <h1>SciPost Publications: Production</h1>
+<div class="row">
+    <div class="col-12">
+        <h1 class="highlight">SciPost Publications: Production</h1>
   <ul><li>Go back to the <a href="{% url 'scipost:howto' %}">Howto Guides</a> Page</li></ul>
 
   <p>This guide is meant for <strong>Editorial Administrators</strong> and <strong>Production Officers</strong>. It describes the post-acceptance workflow from paper acceptance to publication.</p>
@@ -70,7 +71,7 @@
 	<li>
 	  <h4>Implementing the SciPost style</h4>
 	  <ol>
-	    <li>
+	    <li><br>
 	      <pre><code>
 %%%%%%%% Begin SciPost Production addition
 
@@ -128,8 +129,7 @@ urlcolor={blue!80!black}
 
   </ol>
 
+    </div>
+</div>
 
-</section>
-
-
-{% endblock bodysup %}
+{% endblock %}
diff --git a/scipost/templates/scipost/index.html b/scipost/templates/scipost/index.html
index 5fe4f0ff137e5b697b8ab8b94e6d94b59de0cbbf..839508d7cdcd54945a2c025afb4b129cbe46ebdf 100644
--- a/scipost/templates/scipost/index.html
+++ b/scipost/templates/scipost/index.html
@@ -1,189 +1,160 @@
-{% extends 'scipost/base.html' %}
+{% extends 'scipost/base_for_sidebar.html' %}
 
+{% load render_bundle from webpack_loader %}
 {% load staticfiles %}
 
-{% block content %}
-
-    <div class="row">
-        <div class="col-12">
-            <div class="card-deck mb-2">
-                <!-- News -->
-                <div class="card card-grey card-news">
-                    <div class="card-block">
-                        <h1 class="card-title mb-0"><a href="{% url 'news:news' %}">News</a><a style="float: right;" href="{% url 'scipost:feeds' %}"><img src="{% static 'scipost/images/feed-icon-14x14.png' %}" alt="Feed logo" width="14"></a></h1>
-                        <h4 class="card-subtitle mb-0 pb-0 text-muted">Latest news and announcements.</h4>
-                        <ul class="list-group list-group-flush">
-                            {% for item in latest_newsitems %}
-                                <li class="list-group-item">
-                                    {% include 'news/news_card_content.html' with news=item %}
-                                </li>
-                            {% empty %}
-                                <li class="list-group-item">
-                                    No current newsitems found.
-                                </li>
-                            {% endfor %}
-                        <ul>
-                    </div>
-                </div><!-- End news -->
-
-
-
-                {% if not user.is_authenticated %}
-                    <!-- Register -->
-                    <div class="card card-grey">
-                        <div class="card-block">
-                            <h1 class="card-title mb-0"><a href="{% url 'scipost:register' %}">Register</a></h1>
-                            <p>Professional scientists (PhD students and above) can become Contributors to SciPost by filling the
-                            <a href="{% url 'scipost:register' %}">registration form</a>.</p>
-                            <h4>Registered contributors can among others:</h4>
-                            <ul>
-                                <li>Submit manuscripts to SciPost Journals</li>
-                                <li>Post reports and comments</li>
-                                <li>Express opinions on contributions</li>
-                                <li>Subscribe to feeds</li>
-                                <li>Use productivity tools</li>
-                            </ul>
-                        </div>
-                    </div><!-- End register -->
-                {% else %}
-                    <!-- About -->
-                    <div class="card card-grey">
-                        <div class="card-block">
-                            <h1 class="card-title mb-0"><a href="{% url 'scipost:about' %}">About SciPost</a></h1>
-                            <h4 class="card-subtitle mb-2 text-muted">SciPost is a complete scientific publication portal managed by active professional scientists.</h4>
-                            <p>It is purely online-based and offers openly, globally and perpetually accessible science.</p>
-                            <h3><a href="{% url 'scipost:about' %}#advisory_board">Advisory Board</a></h3>
-                            <h3><a href="{% url 'scipost:call' %}">A call for openness</a></h3>
-                            <h3><a href="{% url 'scipost:quick_tour' %}">Quick Tour</a></h3>
-                            <h3><a href="{% url 'scipost:FAQ' %}">Frequently asked questions</a></h3>
-                            <h3><a href="{% url 'partners:partners' %}">Supporting Partners</a></h3>
-                            <h3><a href="{% url 'scipost:about' %}">Read more</a></h3>
-                            <h4><em>In the press:</em></h4>
-                            <ul>
-                                <li><a href="{% static 'scipost/press/SciPost_in_FOM_expres_mei_2016.pdf' %}">FOM expres 5/2016</a> (<a href="{% static 'scipost/press/SciPost_in_FOM_expres_mei_2016_eng.pdf' %}">English vn</a>)</li>
-                                <li><a href="http://www.uva.nl/en/news-events/news/uva-news/content/news/2016/10/open-access-platform-scipost-launches-inaugural-edition-of-first-journal.html">Inaugural issue 10/2016</a></li>
-                            </ul>
-                        </div>
-                    </div><!-- End about -->
-                {% endif %}
-
-                <!-- Latest submissions -->
-                <div class="card card-grey">
-                    <div class="card-block">
-                      <h1 class="card-title mb-0"><a href="{% url 'submissions:submissions' %}">Latest Submissions</a></h1>
-                      <ul class="list-group list-group-flush">
-                          {% for submission in submissions %}
-                              <li class="list-group-item">
-                                  {% include 'submissions/_submission_card_content_sparse.html' with submission=submission %}
-                              </li>
-                          {% endfor %}
-                      </ul>
-                    </div>
-                </div><!-- End latest submissions -->
+{% block body_class %}{{block.super}} has-sidebar has-breadcrumb-submenu homepage{% endblock %}
 
-                <!-- Latest publications -->
-                <div class="card card-grey">
-                    <div class="card-block">
-                      <h1 class="card-title mb-0"><a href="{% url 'journals:journals' %}">Latest Publications</a></h1>
-                      <ul class="list-group list-group-flush">
-                          {% for publication in publications %}
-                              <li class="list-group-item">
-                                  <div class="card-block px-0">
-                                      {% include 'journals/_publication_single_short_summary.html' with publication=publication %}
-                                  </div>
-                              </li>
-                          {% endfor %}
-                      </ul>
-                    </div>
-                </div><!-- End latest publications -->
-            </div><!-- End deck -->
-
-            <div class="card-deck">
-
-                <!-- Journals -->
-                <div class="card card-grey">
-                    <div class="card-block">
-                      <h1 class="card-title"><a href="{% url 'journals:journals' %}">Journals</a></h1>
-                      <h4 class="card-subtitle m text-muted">SciPost publishes a portfolio of high-quality two-way open access scientific journals.</h4>
-                      <p>All SciPost Journals implement the stringent <a href="/FAQ#pwr">peer-witnessed refereeing</a> principle.</p>
-                      <p>All Journals are fully managed by professional scientists.</p>
-                      <h3><a href="{% url 'scipost:about' %}#editorial_college_physics">Editorial College (Physics)</a></h3>
-                      <h3><a href="{% url 'submissions:sub_and_ref_procedure' %}">Submission and refereeing procedure</a></h3>
-
-                      <br/>
-
-                      <p>View and comment on (login required) recent <a href="{% url 'submissions:submissions' %}">Submissions</a></p>
-                  </div>
-                </div><!-- End journals -->
-
-
-                <div class="card card-grey">
-                    <div class="card-block">
-                        <h1 class="card-title"><a href="{% url 'commentaries:commentaries' %}">Commentaries</a></h1>
-                        <p>SciPost Commentaries allow Contributors to comment and build on all existing literature.</p>
-                        <br/>
-                        <h3><a href="{% url 'commentaries:howto' %}">SciPost Commentaries how-to</a></h3>
-                        <h3><a href="{% url 'commentaries:request_commentary' %}">Request a new Commentary Page</a></h3>
-                    </div>
-                </div><!-- End commentaries -->
-
-                <!-- Theses -->
-                <div class="card card-grey">
-                    <div class="card-block">
-                      <h1 class="card-title"><a href="{% url 'theses:theses' %}">Theses</a></h1>
-                      <p>SciPost Theses allow Contributors to find Master's, Ph.D. and Habilitation theses relevant to their work.</p>
-                      <br/>
-                      <h3><a href="{% url 'theses:request_thesislink' %}">Request a new Thesis Link</a></h3>
-                  </div>
-              </div><!-- End theses -->
-
-                {% if not user.is_authenticated %}
-                    <!-- About -->
-                    <div class="card card-grey">
-                        <div class="card-block">
-                            <h1 class="card-title mb-0"><a href="{% url 'scipost:about' %}">About SciPost</a></h1>
-                            <h4 class="card-subtitle mb-2 text-muted">SciPost is a complete scientific publication portal managed by active professional scientists.</h4>
-                            <p>It is purely online-based and offers openly, globally and perpetually accessible science.</p>
-                            <h3><a href="{% url 'scipost:about' %}#advisory_board">Advisory Board</a></h3>
-                            <h3><a href="{% url 'scipost:call' %}">A call for openness</a></h3>
-                            <h3><a href="{% url 'scipost:quick_tour' %}">Quick Tour</a></h3>
-                            <h3><a href="{% url 'scipost:FAQ' %}">Frequently asked questions</a></h3>
-                            <h3><a href="{% url 'scipost:about' %}">Read more</a></h3>
-                            <h4><em>In the press:</em></h4>
-                            <ul>
-                                <li><a href="{% static 'scipost/press/SciPost_in_FOM_expres_mei_2016.pdf' %}">FOM expres 5/2016</a> (<a href="{% static 'scipost/press/SciPost_in_FOM_expres_mei_2016_eng.pdf' %}">English vn</a>)</li>
-                                <li><a href="http://www.uva.nl/en/news-events/news/uva-news/content/news/2016/10/open-access-platform-scipost-launches-inaugural-edition-of-first-journal.html">Inaugural issue 10/2016</a></li>
-                            </ul>
-                        </div>
-                    </div><!-- End about -->
-                {% endif %}
+{% block breadcrumb %}
+    <nav class="submenu">
+        <span class="item">Go directly to Journal:</span>
+        {% for journal in journals %}
+            <a href="{{journal.get_absolute_url}}" class="item">{{journal}}</a>
+        {% endfor %}
+    </nav>
+{% endblock %}
 
-            </div><!-- End deck -->
-        </div>
-    </div>
+{% block footer_script %}
+    {% render_bundle 'homepage' 'js' %}
+{% endblock %}
 
-    <hr>
+{% block content %}
     <div class="row">
-        <div class="col-md-6">
-            <h1>SciPost is endorsed by</h1>
-            <div class="row">
-                <div class="col-md-6">
-                    <a href="//www.nwo.nl/en" target="_blank"><img  style="max-height: 55px; width: auto;" src="{% static 'scipost/images/NWO_logo_EN.jpg' %}" alt="NWO logo"></a>
-                    <p id="NWOOpenAccess" class="mt-1">All articles published in SciPost Journals fulfill the Gold standard Open Access requirements of the NWO, as
-                        stipulated on the NWO’s <a href="//www.nwo.nl/en/policies/open+science" target="_blank">Open Science page</a>.</p>
+        <div class="col-lg-6">
+            <!-- Latest publications -->
+            <div class="card card-grey px-3">
+                <div class="card-header">
+                    <h2 class="card-title mb-0"><a href="{% url 'journals:journals' %}" class="text-black">Latest Publications</a></h2>
                 </div>
-                <div class="col-md-6">
-                    <a href="//www.fom.nl" target="_blank"><img style="max-height: 55px; width: auto;" src="{% static 'scipost/images/FOMlogo_fc.jpg' %}" alt="FOM logo"></a>
-                    <p style="font-size: 80%" class="mt-1">FOM is part of NWO</p>
+                <div class="card-block pt-0">
+                  <ul class="list-group list-group-flush">
+                      {% for publication in publications %}
+                          <li class="list-group-item">
+                              <div class="card-block px-0">
+                                  {% include 'journals/_publication_details_small.html' with publication=publication %}
+                              </div>
+                          </li>
+                      {% endfor %}
+                      <li class="list-group-item">
+                          <div class="card-block pt-3">
+                              <a href="{% url 'journals:journals' %}">All Journals</a>
+                          </div>
+                      </li>
+                  </ul>
                 </div>
-            </div>
+            </div><!-- End latest publications -->
         </div>
-        <div class="col-md-6">
-            <h1>SciPost is a member of</h1>
-            <br/>
-            <a href="//www.crossref.org" target="_blank"><img src="//assets.crossref.org/logo/crossref-logo-200.svg" width="100" alt="Crossref logo"></a>
+
+        <div class="col-lg-6">
+            <!-- Latest submissions -->
+            <div class="card card-grey px-3">
+                <div class="card-header">
+                    <h2 class="card-title mb-0"><a href="{% url 'submissions:submissions' %}" class="text-black">Latest Submissions</a></h2>
+                </div>
+                <div class="card-block pt-0">
+                  <ul class="list-group list-group-flush">
+                      {% for submission in submissions %}
+                          <li class="list-group-item">
+                              {% include 'submissions/_submission_card_content_sparse.html' with submission=submission %}
+                          </li>
+                      {% endfor %}
+                      <li class="list-group-item">
+                          <div class="card-block pt-3">
+                              <a href="{% url 'submissions:submissions' %}">All submissions</a>
+                          </div>
+                      </li>
+                  </ul>
+                </div>
+            </div><!-- End latest submissions -->
         </div>
     </div>
+{% endblock %}
 
+{% block sidebar %}
+    {% if not user.is_authenticated %}
+        <!-- Register -->
+        <div class="card card-grey">
+            <div class="card-block">
+                <h2 class="card-title mb-0">Register</h2>
+                <p class="m-0">Professional scientists (PhD students and above) can become Contributors to SciPost by filling the <a href="{% url 'scipost:register' %}">registration form</a>.</p>
+            </div>
+        </div><!-- End Register -->
+    {% endif %}
+
+    <!-- News -->
+    <div class="card card-grey" id="news">
+        <div class="card-header border-0">
+            <h2 class="card-title mb-0">
+                News
+                <a class="floating-rss-icon" href="{% url 'scipost:feeds' %}">
+                    <img src="{% static 'scipost/images/feed-icon-14x14.png' %}" alt="Feed logo" width="14">
+                </a>
+            </h2>
+            <h4 class="card-subtitle pb-0 text-muted">Latest news and announcements.</h4>
+        </div>
+        <div class="card-block">
+            <ul class="list-group list-group-flush">
+                {% if latest_newsitem %}
+                    <li class="list-group-item">
+                        {% include 'news/news_card_content_short.html' with news=latest_newsitem %}
+                    </li>
+                {% else %}
+                    <li class="list-group-item">
+                        No current newsitems found.
+                    </li>
+                {% endif %}
+            </ul>
+        </div>
+        <div class="card-footer"><a href="{% url 'news:news' %}">More news</a></div>
+    </div><!-- End news -->
+
+    <!-- Summarized -->
+    <div class="card card-grey">
+        <div class="card-block">
+            <h2 class="card-title">
+                <a href="{% url 'journals:journals' %}">Journals</a>
+            </h2>
+            <h4 class="card-subtitle pt-0 mb-2 text-muted">SciPost publishes a portfolio of high-quality two-way open access scientific journals.</h4>
+            <p>
+                All SciPost Journals implement the stringent <a href="{% url 'scipost:FAQ' %}#pwr">peer-witnessed refereeing</a> principle.
+                <br>
+                All Journals are fully managed by professional scientists.
+            </p>
+            <p>
+                <a href="{% url 'scipost:about' %}#editorial_college_physics">Editorial College (Physics)</a>
+                <br>
+                <a href="{% url 'submissions:sub_and_ref_procedure' %}">Submission and refereeing procedure</a>
+            </p>
+            <h2 class="card-title">
+                <a href="{% url 'commentaries:commentaries' %}">Commentaries</a>
+            </h2>
+            <p>SciPost Commentaries allow Contributors to comment and build on all existing literature.</p>
+            <h2 class="card-title">
+                <a href="{% url 'theses:theses' %}">Theses</a>
+            </h2>
+            <p>SciPost Theses allow Contributors to find Master's, Ph.D. and Habilitation theses relevant to their work.</p>
+        </div>
+    </div><!-- End Summarized -->
+{% endblock %}
 
+{% block secondary_footer %}
+    <footer class="container-fluid text-left secondary pt-4 mt-5">
+        <div class="row">
+            <div class="col-lg-6">
+                <h1>SciPost is endorsed by</h1>
+                <div class="row">
+                    <div class="col-lg-6">
+                        <a href="//www.nwo.nl/en" target="_blank"><img  style="max-height: 55px; width: auto;" src="{% static 'scipost/images/NWO_logo_EN.jpg' %}" alt="NWO logo"></a>
+                        <p id="NWOOpenAccess" class="mt-1">All articles published in SciPost Journals fulfill the Gold standard Open Access requirements of the NWO, as
+                            stipulated on the NWO’s <a href="//www.nwo.nl/en/policies/open+science" target="_blank">Open Science page</a>.</p>
+                    </div>
+                </div>
+            </div>
+            <div class="col-lg-6">
+                <h1>SciPost is a member of</h1>
+                <br/>
+                <a href="//www.crossref.org" target="_blank"><img src="//assets.crossref.org/logo/crossref-logo-200.svg" width="100" alt="Crossref logo"></a>
+            </div>
+        </div>
+    </footer>
 {% endblock %}
diff --git a/scipost/templates/scipost/navbar.html b/scipost/templates/scipost/navbar.html
index 3a60507fc15ee36906f8ca1cb1f85ae429a8e254..bd532a8c97695037aed64adb9b47b9479655505e 100644
--- a/scipost/templates/scipost/navbar.html
+++ b/scipost/templates/scipost/navbar.html
@@ -1,4 +1,4 @@
-<nav class="navbar navbar-scroll navbar-light">
+<nav class="navbar navbar-scroll navbar-light main-nav">
     <div class="navbar-scroll-inner">
         <ul class="navbar-nav mr-auto">
           <li class="nav-item{% if request.path == '/' %} active{% endif %}">
@@ -16,8 +16,8 @@
           <li class="nav-item{% if '/theses/' in request.path %} active{% endif %}">
             <a class="nav-link" href="{% url 'theses:theses' %}">Theses</a>
           </li>
-          <li class="nav-item{% if '/partners/' in request.path %} active{% endif %}">
-              <a class="nav-link" href="{% url 'partners:partners' %}">Partners</a>
+          <li class="nav-item{% if '/about' in request.path %} active{% endif %}">
+            <a class="nav-link" href="{% url 'scipost:about' %}">About SciPost</a>
           </li>
 
           {% if user.is_authenticated %}
@@ -44,7 +44,7 @@
           {% endif %}
 
         </ul>
-        <form action="{% url 'scipost:search' %}" method="get" class="form-inline">
+        <form action="{% url 'scipost:search' %}" method="get" class="form-inline search-nav-form">
             <input class="form-control mr-2 mb-0" id="id_q" maxlength="100" name="q" type="text" required="">
           <button class="btn btn-outline-secondary text-muted" type="submit">Search</button>
         </form>
diff --git a/scipost/templates/scipost/news.html b/scipost/templates/scipost/news.html
deleted file mode 100644
index 71982a644a9dd23d04c4c0090f67b18d4eb5a525..0000000000000000000000000000000000000000
--- a/scipost/templates/scipost/news.html
+++ /dev/null
@@ -1,25 +0,0 @@
-{% extends 'scipost/base.html' %}
-
-{% block pagetitle %}: News{% endblock pagetitle %}
-
-{% load staticfiles %}
-
-{% block content %}
-
-<div class="row">
-    <div class="col-12">
-        <h1 class="highlight">SciPost News</h1>
-    </div>
-</div>
-
-<div class="row">
-    <div class="col-12">
-        {% for item in newsitems %}
-            <div class="card card-grey card-news">
-                {% include 'news/news_card_content.html' with news=item %}
-            </div>
-        {% endfor %}
-    </div>
-</div>
-
-{% endblock content %}
diff --git a/scipost/templates/scipost/privacy_policy.html b/scipost/templates/scipost/privacy_policy.html
index 998bf246c5d9cb02a6067cfeb75d85155bf0a91b..839fd1ae51abdac5713cb0f5369734f012cdfeeb 100644
--- a/scipost/templates/scipost/privacy_policy.html
+++ b/scipost/templates/scipost/privacy_policy.html
@@ -4,20 +4,16 @@
 
 {% load staticfiles %}
 
-{% block bodysup %}
+{% block content %}
 
-
-
-<section>
-  <div class="flex-container">
-    <div class="flex-greybox">
-      <h1>SciPost Privacy Policy</h1>
+<div class="row">
+    <div class="col-12">
+      <h1 class="highlight">SciPost Privacy Policy</h1>
     </div>
-  </div>
+</div>
 
-  <div class="row">
-    <div class="col-1"></div>
-    <div class="col-10">
+<div class="row">
+    <div class="col-12">
 
       <p>If you have questions about deleting or correcting your personal data please contact us. Stichting SciPost, Ltd. (“SciPost”) operates a Website at scipost.org. It is SciPost’s policy to respect your privacy regarding any information we may collect while operating our Web sites.</p>
 
@@ -41,8 +37,8 @@
 
       <p> First published March 30, 2016.</p>
 
+      <a href="{% url 'scipost:FAQ' %}">Return to frequently asked questions</a>
     </div>
-</section>
-
+</div>
 
-{% endblock bodysup %}
+{% endblock %}
diff --git a/scipost/templates/scipost/quick_tour.html b/scipost/templates/scipost/quick_tour.html
index 93f975820e8b6610e808103c2307d35eb18b3a8a..9058f65ec9a2148ac00e4927078bfdf32f7ad1e8 100644
--- a/scipost/templates/scipost/quick_tour.html
+++ b/scipost/templates/scipost/quick_tour.html
@@ -4,19 +4,18 @@
 
 {% load staticfiles %}
 
-{% block bodysup %}
+{% block content %}
 
 
-<section>
-  <div class="flex-greybox">
-    <h1>SciPost: Quick Tour</h1>
-  </div>
+<div class="row">
+    <div class="col-12">
+        <h1 class="highlight">SciPost: Quick Tour</h1>
+    </div>
+</div>
 
-  <div class="row">
-    <div class="col-5">
-      <div class="flex-greybox">
-	<h2>SciPost in bullet points</h2>
-      </div>
+<div class="row">
+    <div class="col-md-6">
+    	<h2 class="highlight">SciPost in bullet points</h2>
       <ul>
 	<li>Share on <a href="http://www.arxiv.org">arXiv</a>,
 	  publish in <a href="https://scipost.org">SciPost</a></li>
@@ -25,14 +24,13 @@
 	<li>links to theses, with searchable abstracts database</li>
       </ul>
 
-      <div class="flex-greybox">
-	<h2>Where should I start?</h2>
-      </div>
+	<h2 class="highlight mt-md-4">Where should I start?</h2>
       <ul>
 	<li>See what it's <a href="{% url 'scipost:about' %}">about</a></li>
 	<li>Read the <a href="{% url 'scipost:FAQ' %}">FAQ</a></li>
 	<li>Pro academic? <a href="{% url 'scipost:register' %}">Register</a></li>
 	</ul>
+
       <h4>After registration,</h4>
       <ul>
 	<li><a href="{% url 'theses:request_thesislink' %}">Link</a> your theses</li>
@@ -41,38 +39,33 @@
       </ul>
       <p>For example, you might have some corrections to point out on your or others' existing papers.
 	Simply request a Commentary page, wait for activation, and then post a Comment.</p>
-    </div>
 
+    </div>
 
-    <div class="col-1"></div>
-    <div class="col-5">
-      <div class="flex-greybox">
-	<h2>Commentaries</h2>
-      </div>
+    <div class="col-md-6">
+    	<h2 class="highlight">Commentaries</h2>
       <h3>Want to comment on a paper (<em>any</em> published paper)?</h3>
       <ul>
-	<li><a href="{% url 'commentaries:commentaries' %}">Check</a> if a Commentary Page already exists.</li>
-	<li>No? <a href="{% url 'commentaries:request_commentary' %}">Request</a> one.</li>
-	<li>Wait for email confirmation of page activation.</li>
-	<li>Go to the page, write (remembering: no anonymity for Comments) your Comment in the box and submit it.</li>
-	<li>After an Editorial Fellow vets it, it will appear online.</li>
+    	<li><a href="{% url 'commentaries:commentaries' %}">Check</a> if a Commentary Page already exists.</li>
+    	<li>No? <a href="{% url 'commentaries:request_commentary' %}">Request</a> one.</li>
+    	<li>Wait for email confirmation of page activation.</li>
+    	<li>Go to the page, write (remembering: no anonymity for Comments) your Comment in the box and submit it.</li>
+    	<li>After an Editorial Fellow vets it, it will appear online.</li>
       </ul>
       <p>For more details, visit the <a href="{% url 'commentaries:howto' %}">Commentaries how-to</a>.</p>
-      <br/>
+
       <h3>Want to reply (as an author) to a Comment?</h3>
       <p>First, make sure the system has recognized you as an Author: go to your Personal Page and look at the Commentaries section; potential authorships are auto-detected, but you need to claim them by following the Claim Authorships link. After verification by an Editor, you will be enabled to reply as as Author for this and all other Comments on that particular page.</p>
-      <br/>
+
       <h3>Want to give your opinion on a Comment?</h3>
       <p>If you are registered as a Contributor, you can express your opinion by clicking on one of the coloured boxes next to the Comment (Agree, Not sure, Disagree). Any earlier opinion you had expressed gets erased. Aggregated opinions are given, and you cannot give an opinion on your own Comments.</p>
 
-      <div class="flex-greybox">
-	<h2>Theses</h2>
-      </div>
+        <h2 class="highlight mt-md-4">Theses</h2>
+
       <p>Similar to Commentaries, Theses is a searchable repository of links to Master's, PhD and Habilitation theses (often held in a local institutional repository).</p>
       <p>After <a href="{% url 'theses:request_thesislink' %}">requesting the Thesis Link</a>, a page will be opened with the summary and external link, and the possibility to post Comments.</p>
     </div>
-  </div>
-</section>
+</div>
 
 
-{% endblock bodysup %}
+{% endblock %}
diff --git a/scipost/templates/scipost/register.html b/scipost/templates/scipost/register.html
index bc4f4e0b9dea28bb24b570520728ab4dc42e1a96..63f6a0c97c3e53365f07851fe9c8e446198e5729 100644
--- a/scipost/templates/scipost/register.html
+++ b/scipost/templates/scipost/register.html
@@ -8,23 +8,25 @@
 
 <div class="row">
     <div class="col-12">
-        <div class="panel">
-            <h1>Register to SciPost</h1>
-            {% if invitation %}
-                <h2>Welcome {{invitation.get_title_display}} {{invitation.last_name}} and thanks in advance for registering (by completing this form)</h2>
-            {% endif %}
-        </div>
+        <h1 class="highlight">Register to SciPost</h1>
+        {% if invitation %}
+            <h2>Welcome {{invitation.get_title_display}} {{invitation.last_name}} and thanks in advance for registering (by completing this form)</h2>
+        {% endif %}
     </div>
 </div>
 
 <div class="row">
-    <div class="col-md-4">
-        <h3>Notes:</h3>
-        <p><em style="color: red">Only professional academics (staff members, postdocs, PhD students) can register!</em></p>
-        <p>Required fields are marked with a *.</p>
-        <p>An ORCID id is not formally required but helps preventing identification ambiguities.
-        You can easily get one at  <a href="http://orcid.org">orcid.org</a>.</p>
-        <p>Registration and use of the portal means that you agree with our <a href="{% url 'scipost:terms_and_conditions' %}">Terms and Conditions</a> and with our <a href="{% url 'scipost:privacy_policy' %}">Privacy Policy</a>.</p>
+    <div class="col-md-4 mb-3">
+        <div class="card card-outline-secondary">
+            <div class="card-block">
+                <h3>Notes:</h3>
+                <p class="text-danger"><em>Only professional academics (staff members, postdocs, PhD students) can register!</em></p>
+                <p>Required fields are marked with a *.</p>
+                <p>An ORCID id is not formally required but helps preventing identification ambiguities.
+                You can easily get one at  <a href="http://orcid.org">orcid.org</a>.</p>
+                <p>Registration and use of the portal means that you agree with our <a href="{% url 'scipost:terms_and_conditions' %}">Terms and Conditions</a> and with our <a href="{% url 'scipost:privacy_policy' %}">Privacy Policy</a>.</p>
+            </div>
+        </div>
     </div>
     <div class="offset-md-1 col-md-7">
 
diff --git a/scipost/templates/scipost/send_precooked_email.html b/scipost/templates/scipost/send_precooked_email.html
index 9070d44ea8a3d5a46babb7c98d6dd24cd0fba2f2..9c2b19a536454128bb88a7b0aaf64eed19b1dc24 100644
--- a/scipost/templates/scipost/send_precooked_email.html
+++ b/scipost/templates/scipost/send_precooked_email.html
@@ -1,30 +1,26 @@
-{% extends 'scipost/base.html' %}
+{% extends 'scipost/_personal_page_base.html' %}
 
-{% block pagetitle %}: send precooked email{% endblock pagetitle %}
-
-{% block headsup %}
+{% block breadcrumb_items %}
+    {{block.super}}
+    <span class="breadcrumb-item">Send a precooked email</span>
+{% endblock %}
 
-{% load scipost_extras %}
+{% load bootstrap %}
 
-{% endblock headsup %}
-
-{% block bodysup %}
+{% block pagetitle %}: send precooked email{% endblock pagetitle %}
 
-<section>
-  {% if errormessage %}
-  <p>{{ errormessage }}</p>
-  {% else %}
-  <div class="flex-greybox">
-    <h1>Send a precooked email to a particular</h1>
-  </div>
+{% block content %}
 
-  <form action="{% url 'scipost:send_precooked_email' %}" method="post">
-    {% csrf_token %}
-    {{ form.as_p }}
-    <input type="submit" value="Send email"/>
-  </form>
-  {% endif %}
+<div class="row">
+    <div class="col-12">
+        <h1 class="highlight">Send a precooked email to a particular</h1>
 
-</section>
+          <form action="{% url 'scipost:send_precooked_email' %}" method="post">
+            {% csrf_token %}
+            {{ form|bootstrap }}
+            <input type="submit" class="btn btn-secondary" value="Send email"/>
+          </form>
+    </div>
+</div>
 
-{% endblock bodysup %}
+{% endblock %}
diff --git a/scipost/templates/scipost/terms_and_conditions.html b/scipost/templates/scipost/terms_and_conditions.html
index 867ea230fc00011acd97a9b5a1804ef2aeb227bf..4eb254ad31ab070549e517bdb4841c3b3a319b12 100644
--- a/scipost/templates/scipost/terms_and_conditions.html
+++ b/scipost/templates/scipost/terms_and_conditions.html
@@ -4,16 +4,16 @@
 
 {% load staticfiles %}
 
-{% block bodysup %}
+{% block content %}
 
-
-<section>
-  <div class="flex-container">
-    <div class="flex-greybox">
-      <h1>SciPost Terms and Conditions</h1>
+<div class="row">
+    <div class="col-12">
+      <h1 class="highlight">SciPost Terms and Conditions</h1>
     </div>
-  </div>
+</div>
 
+<div class="row">
+    <div class="col-12">
   <h2>General</h2>
   <p>The SciPost Foundation, Inc. (Stichting SciPost, hereafter "SciPost") is a nonprofit charitable organization dedicated to developing, implementing and maintaining innovative forms of electronic scientific communication and publishing. The SciPost Foundation operates the SciPost.org interactive online portal for the benefit of the international scientific community and further interested parties. SciPost offers the use of the scipost.org portal free of charge to the general public. Access to and use of the sites is provided by SciPost subject to the following Terms and Conditions, which are a contract between SciPost and you. Use of the scipost.org portal constitutes your acceptance of these Terms and Conditions. If you do not accept these Terms and Conditions in full, you do not have permission to access and use the scipost.org sites and should cease doing so immediately.</p>
 
@@ -78,7 +78,7 @@
   <h2>Questions and Comments</h2>
   <p>If you have any questions or comments about these Terms and Conditions, please contact <a href="mailto:admin@scipost.org">admin@scipost.org</a>.</p>
 
-</section>
-
+    </div>
+</div>
 
-{% endblock bodysup %}
+{% endblock %}
diff --git a/scipost/templates/scipost/vet_authorship_claims.html b/scipost/templates/scipost/vet_authorship_claims.html
index 71ca952c25d72dbb55d9036785181cddfcb79929..b43041b92c80bee7be604c8ae23bed3128da8205 100644
--- a/scipost/templates/scipost/vet_authorship_claims.html
+++ b/scipost/templates/scipost/vet_authorship_claims.html
@@ -1,4 +1,9 @@
-{% extends 'scipost/base.html' %}
+{% extends 'scipost/_personal_page_base.html' %}
+
+{% block breadcrumb_items %}
+    {{block.super}}
+    <span class="breadcrumb-item">Vet authorship claims</span>
+{% endblock %}
 
 {% block pagetitle %}: vet authorship claims{% endblock pagetitle %}
 
@@ -8,20 +13,23 @@
 
 {% block content %}
 
-<div class="row">
-    <div class="col-12">
-        <h1 class="highlight">Vet Authorship Claims</h1>
-  </div>
-</div>
+
 
 {% if not claims_to_vet %}
     <div class="row">
         <div class="col-12">
-            <h3>There are no authorship claims to vet</h3>
-      </div>
+            <h1>There are no Authorship Claims for you to vet.</h1>
+            <h3><a href="{% url 'scipost:personal_page' %}">Return to personal page</a></h3>
+        </div>
     </div>
 {% else %}
 
+<div class="row">
+    <div class="col-12">
+        <h1 class="highlight">Vet Authorship Claims</h1>
+  </div>
+</div>
+
   <ul class="list-group list-group-flush">
     {% for claim in claims_to_vet %}
         <li class="list-group-item">
@@ -56,6 +64,7 @@
         </li>
     {% endfor %}
   </ul>
-  {% endif %}
+
+{% endif %}
 
 {% endblock content %}
diff --git a/scipost/templatetags/scipost_extras.py b/scipost/templatetags/scipost_extras.py
index 9d986151422282a9584badaa48daeb3dfb308f39..25c81e2b02c48f6bed015b8762147284b36d828e 100644
--- a/scipost/templatetags/scipost_extras.py
+++ b/scipost/templatetags/scipost_extras.py
@@ -1,7 +1,6 @@
 from django import template
-from django.contrib.auth.models import Group
 
-from ..constants import subject_areas_dict
+from ..constants import subject_areas_dict, subject_areas_raw_dict
 from ..models import Contributor
 
 register = template.Library()
@@ -15,6 +14,7 @@ register = template.Library()
 def sort_by(queryset, order):
     return queryset.order_by(order)
 
+
 @register.filter(name='duration')
 def duration(dur):
     total_seconds = int(dur.total_seconds())
diff --git a/scipost/views.py b/scipost/views.py
index 3d104c216431e10c62d5b766c6b209b6dad9c353..66ab962a32015b64bb561bce5607a80565826c58 100644
--- a/scipost/views.py
+++ b/scipost/views.py
@@ -36,7 +36,7 @@ from .utils import Utils, EMAIL_FOOTER, SCIPOST_SUMMARY_FOOTER, SCIPOST_SUMMARY_
 
 from commentaries.models import Commentary
 from comments.models import Comment
-from journals.models import Publication
+from journals.models import Publication, Issue, Journal
 from news.models import NewsItem
 from submissions.models import Submission, EditorialAssignment, RefereeInvitation,\
                                Report, EICRecommendation
@@ -175,9 +175,13 @@ def search(request):
 def index(request):
     '''Main page.'''
     context = {
-        'latest_newsitems': NewsItem.objects.all().order_by('-date')[:1],
-        'submissions': Submission.objects.public_unlisted().order_by('-submission_date')[:3],
-        'publications': Publication.objects.published().order_by('-publication_date')[:3]
+        'latest_newsitem': NewsItem.objects.all().order_by('-date').first(),
+        'submissions': Submission.objects.public().order_by('-submission_date')[:3],
+        'issues': Issue.objects.published().order_by('-start_date')[:3],
+        'journals': Journal.objects.active().order_by('name'),
+        'publications': Publication.objects.published().order_by('-publication_date',
+                                                                 '-paper_nr')[:3]
+
     }
     return render(request, 'scipost/index.html', context)
 
@@ -1148,60 +1152,55 @@ def email_group_members(request):
     """
     Method to send bulk emails to (members of) selected groups
     """
-    if request.method == 'POST':
-        form = EmailGroupMembersForm(request.POST)
-        if form.is_valid():
-            group_members = form.cleaned_data['group'].user_set.all()
-            p = Paginator(group_members, 32)
-            for pagenr in p.page_range:
-                page = p.page(pagenr)
-                with mail.get_connection() as connection:
-                    for member in page.object_list:
-                        if member.contributor.accepts_SciPost_emails:
-                            email_text = ''
-                            email_text_html = ''
-                            if form.cleaned_data['personalize']:
-                                email_text = ('Dear ' + member.contributor.get_title_display()
-                                              + ' ' + member.last_name + ', \n\n')
-                                email_text_html = 'Dear {{ title }} {{ last_name }},<br/>'
-                            email_text += form.cleaned_data['email_text']
-                            email_text_html += '{{ email_text|linebreaks }}'
-                            if form.cleaned_data['include_scipost_summary']:
-                                email_text += SCIPOST_SUMMARY_FOOTER
-                                email_text_html += SCIPOST_SUMMARY_FOOTER_HTML
-                            email_text_html += EMAIL_FOOTER
-                            url_unsubscribe = reverse('scipost:unsubscribe',
-                                                      args=[member.contributor.id,
-                                                            member.contributor.activation_key])
-                            email_text += ('\n\nDon\'t want to receive such emails? '
-                                           'Unsubscribe by visiting %s.' % url_unsubscribe)
-                            email_text_html += (
-                                '<br/>\n<p style="font-size: 10px;">Don\'t want to receive such '
-                                'emails? <a href="%s">Unsubscribe</a>.</p>' % url_unsubscribe)
-                            email_context = Context({
-                                'title': member.contributor.get_title_display(),
-                                'last_name': member.last_name,
-                                'email_text': form.cleaned_data['email_text'],
-                                'key': member.contributor.activation_key,
-                            })
-                            html_template = Template(email_text_html)
-                            html_version = html_template.render(email_context)
-                            message = EmailMultiAlternatives(
-                                form.cleaned_data['email_subject'],
-                                email_text, 'SciPost Admin <admin@scipost.org>',
-                                [member.email], connection=connection)
-                            message.attach_alternative(html_version, 'text/html')
-                            message.send()
-            context = {'ack_header': 'The email has been sent.',
-                       'followup_message': 'Return to your ',
-                       'followup_link': reverse('scipost:personal_page'),
-                       'followup_link_label': 'personal page'}
-            return render(request, 'scipost/acknowledgement.html', context)
-        else:
-            errormessage = 'The form was invalidly filled.'
-            context = {'errormessage': errormessage, 'form': form}
-            return render(request, 'scipost/email_group_members.html', context)
-    form = EmailGroupMembersForm()
+    form = EmailGroupMembersForm(request.POST or None)
+    if form.is_valid():
+        group_members = form.cleaned_data['group'].user_set.all()
+        p = Paginator(group_members, 32)
+        for pagenr in p.page_range:
+            page = p.page(pagenr)
+            with mail.get_connection() as connection:
+                for member in page.object_list:
+                    if member.contributor.accepts_SciPost_emails:
+                        email_text = ''
+                        email_text_html = ''
+                        if form.cleaned_data['personalize']:
+                            email_text = ('Dear ' + member.contributor.get_title_display()
+                                          + ' ' + member.last_name + ', \n\n')
+                            email_text_html = 'Dear {{ title }} {{ last_name }},<br/>'
+                        email_text += form.cleaned_data['email_text']
+                        email_text_html += '{{ email_text|linebreaks }}'
+                        if form.cleaned_data['include_scipost_summary']:
+                            email_text += SCIPOST_SUMMARY_FOOTER
+                            email_text_html += SCIPOST_SUMMARY_FOOTER_HTML
+                        email_text_html += EMAIL_FOOTER
+                        url_unsubscribe = reverse('scipost:unsubscribe',
+                                                  args=[member.contributor.id,
+                                                        member.contributor.activation_key])
+                        email_text += ('\n\nDon\'t want to receive such emails? '
+                                       'Unsubscribe by visiting %s.' % url_unsubscribe)
+                        email_text_html += (
+                            '<br/>\n<p style="font-size: 10px;">Don\'t want to receive such '
+                            'emails? <a href="%s">Unsubscribe</a>.</p>' % url_unsubscribe)
+                        email_context = Context({
+                            'title': member.contributor.get_title_display(),
+                            'last_name': member.last_name,
+                            'email_text': form.cleaned_data['email_text'],
+                            'key': member.contributor.activation_key,
+                        })
+                        html_template = Template(email_text_html)
+                        html_version = html_template.render(email_context)
+                        message = EmailMultiAlternatives(
+                            form.cleaned_data['email_subject'],
+                            email_text, 'SciPost Admin <admin@scipost.org>',
+                            [member.email], connection=connection)
+                        message.attach_alternative(html_version, 'text/html')
+                        message.send()
+        context = {'ack_header': 'The email has been sent.',
+                   'followup_message': 'Return to your ',
+                   'followup_link': reverse('scipost:personal_page'),
+                   'followup_link_label': 'personal page'}
+        return render(request, 'scipost/acknowledgement.html', context)
+
     context = {'form': form}
     return render(request, 'scipost/email_group_members.html', context)
 
@@ -1246,41 +1245,40 @@ def send_precooked_email(request):
     """
     Method to send precooked emails to individuals (registered or not)
     """
-    if request.method == 'POST':
-        form = SendPrecookedEmailForm(request.POST)
-        if form.is_valid():
-            precookedEmail = form.cleaned_data['email_option']
-            if form.cleaned_data['email_address'] in precookedEmail.emailed_to:
-                errormessage = 'This message has already been sent to this address'
-                return render(request, 'scipost/error.html',
-                              context={'errormessage': errormessage})
-            precookedEmail.emailed_to.append(form.cleaned_data['email_address'])
-            precookedEmail.date_last_used = timezone.now().date()
-            precookedEmail.save()
-            email_text = precookedEmail.email_text
-            email_text_html = '{{ email_text|linebreaks }}'
-            email_context = Context({'email_text': precookedEmail.email_text_html})
-            if form.cleaned_data['include_scipost_summary']:
-                email_text += SCIPOST_SUMMARY_FOOTER
-                email_text_html += SCIPOST_SUMMARY_FOOTER_HTML
+    form = SendPrecookedEmailForm(request.POST or None)
+    if form.is_valid():
+        precookedEmail = form.cleaned_data['email_option']
+        if form.cleaned_data['email_address'] in precookedEmail.emailed_to:
+            errormessage = 'This message has already been sent to this address'
+            return render(request, 'scipost/error.html',
+                          context={'errormessage': errormessage})
+        precookedEmail.emailed_to.append(form.cleaned_data['email_address'])
+        precookedEmail.date_last_used = timezone.now().date()
+        precookedEmail.save()
+        email_text = precookedEmail.email_text
+        email_text_html = '{{ email_text|linebreaks }}'
+        email_context = Context({'email_text': precookedEmail.email_text_html})
+        if form.cleaned_data['include_scipost_summary']:
+            email_text += SCIPOST_SUMMARY_FOOTER
+            email_text_html += SCIPOST_SUMMARY_FOOTER_HTML
+
+        email_text_html += '<br/>' + EMAIL_FOOTER
+        html_template = Template(email_text_html)
+        html_version = html_template.render(email_context)
+        message = EmailMultiAlternatives(
+            precookedEmail.email_subject,
+            email_text,
+            SciPost_from_addresses_dict[form.cleaned_data['from_address']],
+            [form.cleaned_data['email_address']],
+            bcc=['admin@scipost.org'])
+        message.attach_alternative(html_version, 'text/html')
+        message.send()
+        context = {'ack_header': 'The email has been sent.',
+                   'followup_message': 'Return to your ',
+                   'followup_link': reverse('scipost:personal_page'),
+                   'followup_link_label': 'personal page'}
+        return render(request, 'scipost/acknowledgement.html', context)
 
-            email_text_html += '<br/>' + EMAIL_FOOTER
-            html_template = Template(email_text_html)
-            html_version = html_template.render(email_context)
-            message = EmailMultiAlternatives(
-                precookedEmail.email_subject,
-                email_text,
-                SciPost_from_addresses_dict[form.cleaned_data['from_address']],
-                [form.cleaned_data['email_address']],
-                bcc=['admin@scipost.org'])
-            message.attach_alternative(html_version, 'text/html')
-            message.send()
-            context = {'ack_header': 'The email has been sent.',
-                       'followup_message': 'Return to your ',
-                       'followup_link': reverse('scipost:personal_page'),
-                       'followup_link_label': 'personal page'}
-            return render(request, 'scipost/acknowledgement.html', context)
-    form = SendPrecookedEmailForm()
     context = {'form': form}
     return render(request, 'scipost/send_precooked_email.html', context)
 
diff --git a/submissions/templates/submissions/_single_report_ratings.html b/submissions/templates/submissions/_single_report_ratings.html
index 0ea7b074ed8dd315f18d2ed6d6aecfcab29f529a..f5280e13d6be622a957562e602a698ea460647d4 100644
--- a/submissions/templates/submissions/_single_report_ratings.html
+++ b/submissions/templates/submissions/_single_report_ratings.html
@@ -1,4 +1,4 @@
-<div class="reportRatings">
+<div class="reportRatings mt-2">
     <ul>
         <li>validity: {{report.get_validity_display}}</li>
         <li>significance: {{report.get_significance_display}}</li>
diff --git a/submissions/templates/submissions/_submission_card_base.html b/submissions/templates/submissions/_submission_card_base.html
index c1c516251ddf66dce7924472050f3d45c4dc1582..5f1240e43ea640f4da47a2cd362274b97dde9a51 100644
--- a/submissions/templates/submissions/_submission_card_base.html
+++ b/submissions/templates/submissions/_submission_card_base.html
@@ -1,4 +1,5 @@
 <div class="card-block {% block cardblock_class_block %}{% endblock %}">
+    <h5 class="pb-0">{{submission.get_subject_area_display}}</h5>
     <h3 class="card-title {% block title_class_block %}{% endblock %}">
         <a href="{% url 'submissions:submission' submission.arxiv_identifier_w_vn_nr %}">{{submission.title}}</a>
     </h3>
diff --git a/submissions/templates/submissions/_submission_card_content.html b/submissions/templates/submissions/_submission_card_content.html
index e22ce33c7322cc4d396ab30040545bb570db0151..900102bc98312f0c8e146a3c4c309d0a04dabfaa 100644
--- a/submissions/templates/submissions/_submission_card_content.html
+++ b/submissions/templates/submissions/_submission_card_content.html
@@ -1,13 +1,15 @@
 {% extends 'submissions/_submission_card_base.html' %}
 
+{% block title_class_block %}mb-0{% endblock %}
+
 {% block card_block_footer %}
     {{block.super}}
-    <p class="card-text">by {{submission.author_list}}</p>
+    <p class="card-text mb-3">by {{submission.author_list}}</p>
     <p class="card-text text-muted">Version {{submission.arxiv_vn_nr}} ({% if submission.is_current %}current version{% else %}deprecated version {{submission.arxiv_vn_nr}}{% endif %})</p>
     <p class="card-text text-muted">
         {% if submission.publication %}
             Published as <a href="{{submission.publication.get_absolute_url}}">{{submission.publication.in_issue.in_volume.in_journal.get_abbreviation_citation}} <strong>{{submission.publication.in_issue.in_volume.number}}</strong>, {{submission.publication.get_paper_nr}} ({{submission.publication.publication_date|date:'Y'}})</a>
         {% else %}
             Submitted {{submission.submission_date}} to {{submission.get_submitted_to_journal_display}}
-        {% endif %} - latest activity: {{submission.latest_activity}}</p>
+        {% endif %} &middot; latest activity: {{submission.latest_activity}}</p>
 {% endblock %}
diff --git a/submissions/templates/submissions/_submission_card_content_sparse.html b/submissions/templates/submissions/_submission_card_content_sparse.html
index 906b925abf41d3c1e98390859516711c5f665232..d90db974e82eb305e28193c5df4923e30c674dc6 100644
--- a/submissions/templates/submissions/_submission_card_content_sparse.html
+++ b/submissions/templates/submissions/_submission_card_content_sparse.html
@@ -1,14 +1,13 @@
 {% extends 'submissions/_submission_card_base.html' %}
 
 {% block cardblock_class_block %}px-0{% endblock %}
-{% block title_class_block %}pb-0 mb-0{% endblock %}
+
 
 {% block card_block_footer %}
     {{block.super}}
-
-    <div class="text-muted mb-1">
+    <div class="mt-0 mb-3">by {{submission.author_list}}</div>
+    <div class="text-muted">
         <span class="d-inline-block">Submitted {{submission.submission_date}}</span>
         <span class="d-inline-block">to {{submission.get_submitted_to_journal_display}}</span>
     </div>
-    <div>by {{submission.author_list}}</div>
 {% endblock %}
diff --git a/submissions/templates/submissions/_submission_status_block.html b/submissions/templates/submissions/_submission_status_block.html
index f4812d1d3a9a41215a6f8d8c637707088e4d4e41..4f867a6503f8931468a64258b397a959f1aa3d1d 100644
--- a/submissions/templates/submissions/_submission_status_block.html
+++ b/submissions/templates/submissions/_submission_status_block.html
@@ -1,4 +1,4 @@
-<h4 class="d-inline-block">Current status:</h4>
+<h4 class="d-inline-block">Current status:</h4>&nbsp;&nbsp;
 <div class="d-inline">
     <span class="label label-secondary">{{submission.get_status_display}}</span>
     {% if submission.publication %}
diff --git a/submissions/templates/submissions/_submission_summary_short.html b/submissions/templates/submissions/_submission_summary_short.html
index a5e999c09085d7ff121f00ad501ae30edc04af47..ce30c5cbbd34f9fa8d6ba3186606ebeb71e5b004 100644
--- a/submissions/templates/submissions/_submission_summary_short.html
+++ b/submissions/templates/submissions/_submission_summary_short.html
@@ -11,7 +11,7 @@
         <td>As Contributors:</td>
         <td>
             {% for author in submission.authors.all %}
-                <a href="{% url 'scipost:contributor_info' author.id %}">{{author.user.first_name}} {{author.user.last_name}}</a>
+                {% if not forloop.first %}<span class="text-blue">&middot;</span> {% endif %}<a href="{% url 'scipost:contributor_info' author.id %}">{{author.user.first_name}} {{author.user.last_name}}</a>
             {% empty %}
                 (none claimed)
             {% endfor %}
diff --git a/submissions/templates/submissions/author_guidelines.html b/submissions/templates/submissions/author_guidelines.html
index d091602ab333d4d0ba4c2d232994f75679e609f2..4363952e027225cc19122bd0769ad45989b95cbf 100644
--- a/submissions/templates/submissions/author_guidelines.html
+++ b/submissions/templates/submissions/author_guidelines.html
@@ -4,18 +4,20 @@
 
 {% block headsup %} {% load staticfiles %} {% endblock headsup %}
 
-{% block bodysup %}
+{% block content %}
 
-
-<section>
-
-  <div class="flex-greybox">
-    <h1>Author Guidelines</h1>
+<div class="row">
+  <div class="col-12">
+    <h1 class="highlight">Author Guidelines</h1>
   </div>
+</div>
+
+<div class="row">
+  <div class="col-12">
   <p>Before submitting to SciPost, you should familiarize yourself with the
     <a href="{% url 'journals:journals_terms_and_conditions' %}">SciPost Journals Terms and Conditions</a>.</p>
 
-  <hr class="hr12"/>
+  <hr>
   <h2>Manuscript preparation</h2>
 
   <p>We prefer authors to prepare their manuscript using the SciPost LaTeX2e style, which you can download
@@ -39,52 +41,52 @@
     <p>Including the DOI is particularly important: the paper can only be published if references are externally linked.</p>
   </p>
 
-  <h3>The article should contain the following elements:</h3>
-  <ul>
-    <li>Title
-      <p>The title should ideally fit in two lines (approximately 150 characters) or less,
-	and be descriptive of the research reported.</p>
-    </li>
-    <li>Authors
-      <p>Authors should be listed by initials and last name, with superscript reference to their affiliation.
-	The corresponding author should be indicated with a superscript asterisk.</p>
-    <li>Abstract
-      <p>The abstract should fit within 8 lines of the template.</p>
-    </li>
-    <li>Bulk Sections
-      <p>The bulk of the paper should be clearly divided into sections with short descriptive titles, including an introduction and a conclusion.</p>
-    </li>
-    <li>Figures
-      <p>If figures are included, they should only occupy the strictly necessary space, in any case individually fitting on a single page.
+  <h3 class="mb-2">The article should contain the following elements:</h3>
+  <dl class="row">
+    <dt class="col-sm-3 col-md-2">Title</dt>
+    <dd class="col-sm-9 col-md-10">The title should ideally fit in two lines (approximately 150 characters) or less,
+	and be descriptive of the research reported.</dd>
+
+    <dt class="col-sm-3 col-md-2">Authors</dt>
+    <dd class="col-sm-9 col-md-10">Authors should be listed by initials and last name, with superscript reference to their affiliation.
+	The corresponding author should be indicated with a superscript asterisk.</dd>
+
+    <dt class="col-sm-3 col-md-2">Abstract</dt>
+    <dd class="col-sm-9 col-md-10">The abstract should fit within 8 lines of the template.</dd>
+
+    <dt class="col-sm-3 col-md-2">Bulk Sections</dt>
+    <dd class="col-sm-9 col-md-10">The bulk of the paper should be clearly divided into sections with short descriptive titles, including an introduction and a conclusion.</dd>
+
+    <dt class="col-sm-3 col-md-2">Figures</dt>
+    <dd class="col-sm-9 col-md-10">If figures are included, they should only occupy the strictly necessary space, in any case individually fitting on a single page.
 	Each figure item should be appropriately labeled and accompanied by a descriptive caption.
 	SciPost does not accept creative figures or artist's impressions;
-	on the other hand, technical drawings and scientifically accurate representations are encouraged.</p>
-    </li>
-    <li>Acknowledgements
-      <p>Acknowledgements should follow immediately after the conclusion.</p>
-    </li>
-    <li>Author contributions
-      <p>This is optional. If desired, contributions should be succinctly described using author initials.</p>
-    </li>
-    <li>Funding information
-      <p>Authors are required to provide funding information, including relevant agencies and grant numbers with linked author's initials.</p>
-    </li>
-    <li>Appendices
-      <p>Supplementary material which goes beyond the paper's bulk contents can be provided in appendices, which should be
-	labeled using capital letters.</p>
-    </li>
-    <li>References
-      <p>Items in the list of references should include authors, title, journal reference and most importantly
-	<b>** include the DOI link **</b> (see the template above for an example).</p>
-    </li>
-  </ul>
+	on the other hand, technical drawings and scientifically accurate representations are encouraged.</dd>
+
+    <dt class="col-sm-3 col-md-2">Acknowledgements</dt>
+    <dd class="col-sm-9 col-md-10">Acknowledgements should follow immediately after the conclusion.</dd>
+
+    <dt class="col-sm-3 col-md-2">Author contributions</dt>
+    <dd class="col-sm-9 col-md-10">This is optional. If desired, contributions should be succinctly described using author initials.</dd>
+
+    <dt class="col-sm-3 col-md-2">Funding information</dt>
+    <dd class="col-sm-9 col-md-10">Authors are required to provide funding information, including relevant agencies and grant numbers with linked author's initials.</dd>
+
+    <dt class="col-sm-3 col-md-2">Appendices</dt>
+    <dd class="col-sm-9 col-md-10">Supplementary material which goes beyond the paper's bulk contents can be provided in appendices, which should be
+	labeled using capital letters.</dd>
+
+    <dt class="col-sm-3 col-md-2">References</dt>
+    <dd class="col-sm-9 col-md-10">Items in the list of references should include authors, title, journal reference and most importantly
+	<b>** include the DOI link **</b> (see the template above for an example).</dd>
+  </dl>
 
   <p>All equations and references should be hyperlinked to ensure ease of navigation.</p>
   <p>There is no strict length limitation, but the authors are strongly encouraged to keep contents to the
     strict minimum necessary for peers to reproduce the research described in the paper.</p>
 
 
-  <hr class="hr12"/>
+  <hr>
   <h2>Manuscript submission</h2>
   <p>Submitting your manuscript to SciPost is extremely easy. You should:</p>
   <ul>
@@ -100,8 +102,8 @@
     make every reasonable effort to implement such requests, except in cases where this is interpreted as
     interfering with a rigorous assessment of the work.</p>
 
-
-</section>
+    </div>
+</div>
 
 
-{% endblock bodysup %}
+{% endblock content %}
diff --git a/submissions/templates/submissions/editorial_workflow.html b/submissions/templates/submissions/editorial_workflow.html
index 99da083278c2113097dae6d9ee8d59f90dc95005..963be2593edb390ac98a7ee0fa1f3852f46133b8 100644
--- a/submissions/templates/submissions/editorial_workflow.html
+++ b/submissions/templates/submissions/editorial_workflow.html
@@ -1,4 +1,9 @@
-{% extends 'scipost/base.html' %}
+{% extends 'scipost/_personal_page_base.html' %}
+
+{% block breadcrumb_items %}
+    {{block.super}}
+    <span class="breadcrumb-item">Editorial Workflow Summary</span>
+{% endblock %}
 
 {% block pagetitle %}: Editorial Workflow Summary{% endblock pagetitle %}
 
diff --git a/submissions/templates/submissions/sub_and_ref_procedure.html b/submissions/templates/submissions/sub_and_ref_procedure.html
index 5f6be50b207f79f08d5688bdcd6d5df1d51b423e..d23b5e1b3cd15a665d618e87e52757c2bb6f5275 100644
--- a/submissions/templates/submissions/sub_and_ref_procedure.html
+++ b/submissions/templates/submissions/sub_and_ref_procedure.html
@@ -2,54 +2,57 @@
 
 {% block pagetitle %}: submission and refereeing procedure{% endblock pagetitle %}
 
-{% block headsup %} {% load staticfiles %} {% endblock headsup %}
-
-{% block bodysup %}
-
-
-<section>
-  <div class="flex-greybox">
-    <h1>Submission and Refereeing procedure</h1>
-  </div>
-
-  <hr class="hr6"/>
-
-  <h3>Submission</h3>
-  <p>This is a quick summary. For more details, see the <a href="{% url 'journals:journals_terms_and_conditions' %}">SciPost Journals Terms and Conditions</a>
-    and the <a href="{% url 'submissions:author_guidelines' %}">author guidelines</a>.</p>
-  <h3>To submit your article for publication in a SciPost Journal, authors must:</h3>
-  <ol>
-    <li>Prepare their manuscript following the <a href="{% url 'submissions:author_guidelines' %}">author guidelines</a></li>
-    <li>Make your preprint publicly available on <a href="http://arxiv.org">arXiv.org</a></li>
-    <li>After appearance on arxiv.org, fill the SciPost <a href="{% url 'submissions:submit_manuscript' %}">Submission</a> form, selecting which SciPost Journal to submit to and providing domain and speciality specifications.</li>
-  </ol>
-  <p>Note that you cannot submit directly to SciPost Physics Select. Submissions to SciPost Physics deemed of superlative quality will be editorially promoted to SPS.</p>
-  <br/>
-
-  <hr class="hr6"/>
-  <h3 id="pwr">Refereeing procedure</h3>
-  <p>All incoming Submissions to SciPost Journals are peer-reviewed using SciPost's <a href="/FAQ#pwr">peer-witnessed refereeing</a> process, implementing the highest standard of refereeing available. The procedure follows this pattern (this is a summary; the actual rules are set out in the <a href="{% url 'scipost:EdCol_by-laws' %}">Editorial College by-laws</a> under `Submissions processing'):</p>
-  <ol>
-    <li>Pre-screening: the Submission is internally forwarded to Fellows of the Editorial College, for them to consider becoming Editor-in-charge. If a Fellow expresses interest in the submission, he/she becomes Editor-in-charge and the process can move forward, otherwise the authors are informed that the paper shall not be considered further. This pre-screening process is rapid and occurs within at most 5 working days.</li>
-    <li>Following successful pre-screening, a Submission Page is activated (this is similar to a Commentary Page, but with Reports also enabled). The Submission is immediately opened to Contributor Reports, Comments and Author Replies, all of which are vetted by an Editorial Fellow before eventually appearing online.</li>
-    <li>The Editor-in-charge starts a refereeing round (whose duration depends on the Journal, see below), inviting specific Contributors to provide an Invited Report.
-      During a refereeing round, registered Contributors to SciPost can volunteer a Contributed Report, and authors can continuously provide Replies to Reports and Comments.
-      The contents of Reports are publicly viewable, but the author of the Report can choose public anonymity (which is then known to Editors only). Authors are informed by email if a Report or a Comment on their paper is vetted through and published online (authors are welcome to respond, but should not feel obliged to do so before the refereeing round is closed).</li>
-    <li>At the end of the refereeing round, submission of Reports on the Submission Page is deactivated. The Editor-in-charge invites the authors to finalize their responses to any submitted Reports and Comments before the Editorial Recommendation is formulated.</li>
-    <li>Reports, Replies and Comments are then assessed by the Editor-in-charge, who formulates an editorial recommendation.
-      <ol>
-	<li>If the editorial recommendation is for publication or rejection, it is forwarded to the Editorial College, which takes the binding editorial decision by consultation of the relevant specialty's Editorial Fellows. If the recommendation is to publish the paper as Select (targeting approximately the top 10% of articles considered), Editorial Fellows of all specialties get the chance to support or object to this promotion.</li>
-	<li>If the Editorial Recommendation is for a minor or major revision, it is communicated directly to the authors, who must then resubmit. Upon resubmission, the Editor-in-charge can either start a new refereeing round or directly formulate a new editorial recommendation.</li>
-      </ol></li>
-    <li>After being taken by the Editorial College, the editorial decision (consisting in either a publication offer, or rejection) is communicated to the Authors.</li>
-    <ol>
-      <li>If the authors accept an eventual publication offer, the manuscript is sent to the production team. The final version is published online in the relevant SciPost Journal. The publication page links back to the original Submission Page and its contents.</li>
-      <li>If the manuscript is rejected or authors withdraw their Submission, the Submission Page is deactivated and all its contents removed from public view.</li>
-    </ol>
-  </ol>
-  <p>The duration of refereeing rounds depends on the Journal: 4 weeks for traditional articles, and 8 weeks for Lecture Notes.</p>
-
-</section>
-
-
-{% endblock bodysup %}
+{% load staticfiles %}
+
+{% block content %}
+
+<div class="row">
+    <div class="col-12">
+        <h1 class="highlight">Submission and Refereeing procedure</h1>
+    </div>
+</div>
+
+<div class="row">
+    <div class="col-12">
+        <h2>Submission</h2>
+          <p>This is a quick summary. For more details, see the <a href="{% url 'journals:journals_terms_and_conditions' %}">SciPost Journals Terms and Conditions</a>
+            and the <a href="{% url 'submissions:author_guidelines' %}">author guidelines</a>.</p>
+          <h3>To submit your article for publication in a SciPost Journal, authors must:</h3>
+          <ol>
+            <li>Prepare their manuscript following the <a href="{% url 'submissions:author_guidelines' %}">author guidelines</a></li>
+            <li>Make your preprint publicly available on <a href="http://arxiv.org">arXiv.org</a></li>
+            <li>After appearance on arxiv.org, fill the SciPost <a href="{% url 'submissions:submit_manuscript' %}">Submission</a> form, selecting which SciPost Journal to submit to and providing domain and speciality specifications.</li>
+          </ol>
+          <p>Note that you cannot submit directly to SciPost Physics Select. Submissions to SciPost Physics deemed of superlative quality will be editorially promoted to SPS.</p>
+    </div>
+</div>
+
+<hr>
+<div class="row">
+    <div class="col-12">
+        <h2 id="pwr">Refereeing procedure</h2>
+          <p>All incoming Submissions to SciPost Journals are peer-reviewed using SciPost's <a href="/FAQ#pwr">peer-witnessed refereeing</a> process, implementing the highest standard of refereeing available. The procedure follows this pattern (this is a summary; the actual rules are set out in the <a href="{% url 'scipost:EdCol_by-laws' %}">Editorial College by-laws</a> under `Submissions processing'):</p>
+          <ol>
+            <li>Pre-screening: the Submission is internally forwarded to Fellows of the Editorial College, for them to consider becoming Editor-in-charge. If a Fellow expresses interest in the submission, he/she becomes Editor-in-charge and the process can move forward, otherwise the authors are informed that the paper shall not be considered further. This pre-screening process is rapid and occurs within at most 5 working days.</li>
+            <li>Following successful pre-screening, a Submission Page is activated (this is similar to a Commentary Page, but with Reports also enabled). The Submission is immediately opened to Contributor Reports, Comments and Author Replies, all of which are vetted by an Editorial Fellow before eventually appearing online.</li>
+            <li>The Editor-in-charge starts a refereeing round (whose duration depends on the Journal, see below), inviting specific Contributors to provide an Invited Report.
+              During a refereeing round, registered Contributors to SciPost can volunteer a Contributed Report, and authors can continuously provide Replies to Reports and Comments.
+              The contents of Reports are publicly viewable, but the author of the Report can choose public anonymity (which is then known to Editors only). Authors are informed by email if a Report or a Comment on their paper is vetted through and published online (authors are welcome to respond, but should not feel obliged to do so before the refereeing round is closed).</li>
+            <li>At the end of the refereeing round, submission of Reports on the Submission Page is deactivated. The Editor-in-charge invites the authors to finalize their responses to any submitted Reports and Comments before the Editorial Recommendation is formulated.</li>
+            <li>Reports, Replies and Comments are then assessed by the Editor-in-charge, who formulates an editorial recommendation.
+              <ol>
+        	<li>If the editorial recommendation is for publication or rejection, it is forwarded to the Editorial College, which takes the binding editorial decision by consultation of the relevant specialty's Editorial Fellows. If the recommendation is to publish the paper as Select (targeting approximately the top 10% of articles considered), Editorial Fellows of all specialties get the chance to support or object to this promotion.</li>
+        	<li>If the Editorial Recommendation is for a minor or major revision, it is communicated directly to the authors, who must then resubmit. Upon resubmission, the Editor-in-charge can either start a new refereeing round or directly formulate a new editorial recommendation.</li>
+              </ol></li>
+            <li>After being taken by the Editorial College, the editorial decision (consisting in either a publication offer, or rejection) is communicated to the Authors.</li>
+            <ol>
+              <li>If the authors accept an eventual publication offer, the manuscript is sent to the production team. The final version is published online in the relevant SciPost Journal. The publication page links back to the original Submission Page and its contents.</li>
+              <li>If the manuscript is rejected or authors withdraw their Submission, the Submission Page is deactivated and all its contents removed from public view.</li>
+            </ol>
+          </ol>
+          <p>The duration of refereeing rounds depends on the Journal: 4 weeks for traditional articles, and 8 weeks for Lecture Notes.</p>
+    </div>
+</div>
+
+
+{% endblock content %}
diff --git a/submissions/templates/submissions/submission_detail.html b/submissions/templates/submissions/submission_detail.html
index 383dfd162c3a4a5880e430d525cb63fa764ce7ce..30dfc87d14ac396c07fe22a56c85c5eec00b6d76 100644
--- a/submissions/templates/submissions/submission_detail.html
+++ b/submissions/templates/submissions/submission_detail.html
@@ -46,7 +46,7 @@
 
         {% if unfinished_report_for_user %}
             <blockquote class="blockquote">
-              <p class="mb-0">You have an unfinished report for this submission, <a href="{% url 'submissions:submit_report' arxiv_identifier_w_vn_nr=submission.arxiv_identifier_w_vn_nr %}">finish your report here.</a></p>
+              <h3>You have an unfinished report for this submission, <a href="{% url 'submissions:submit_report' arxiv_identifier_w_vn_nr=submission.arxiv_identifier_w_vn_nr %}">finish your report here.</a></h3>
             </blockquote>
         {% endif %}
     </div>
@@ -62,12 +62,14 @@
         <br>
         {% if submission.author_comments %}
             <h3>Author comments upon resubmission</h3>
-            <div class="pl-md-4">{{ submission.author_comments|linebreaks }}</div>
+            <div class="blockquote">
+                {{ submission.author_comments|linebreaks }}
+            </div>
         {% endif %}
 
         {% if submission.list_of_changes %}
             <h3>List of changes</h3>
-            <div class="pl-md-4">{{ submission.list_of_changes|linebreaks }}</div>
+            <div class="blockquote">{{ submission.list_of_changes|linebreaks }}</div>
         {% endif %}
     </div>
 </div>
@@ -98,13 +100,7 @@
 {% if user.is_authenticated and user|is_in_group:'Registered Contributors' %}
 <div class="row">
     <div class="col-12">
-        <div class="panel">
-            <h2>Actions</h2>
-        </div>
-    </div>
-</div>
-<div class="row">
-    <div class="col-12">
+        <h2 class="highlight">Actions</h2>
         <ul>
             {% if submission.open_for_reporting %}
                 {% if perms.scipost.can_referee and not is_author and not is_author_unchecked %}
@@ -150,8 +146,8 @@
     <div class="col-12">
         <div class="card card-grey">
             <div class="card-block">
-                <h2 class="card-title">Invited Reports on this Submission</h2>
-                <button class="btn btn-secondary" data-toggle="toggle" data-target="#invitedreportslist">Toggle invited reports view</button>
+                <h2 class="card-title mb-0">Invited Reports on this Submission</h2>
+                <a href="javascript:;" data-toggle="toggle" data-target="#invitedreportslist">Toggle invited reports view</a>
             </div>
         </div>
     </div>
@@ -171,8 +167,8 @@
     <div class="col-12">
         <div class="card card-grey">
             <div class="card-block">
-                <h2 class="card-title">Contributed Reports on this Submission</h2>
-                <button class="btn btn-secondary" data-toggle="toggle" data-target="#contributedreportslist">Toggle contributed reports view</button>
+                <h2 class="card-title mb-0">Contributed Reports on this Submission</h2>
+                <a href="javascript:;" data-toggle="toggle" data-target="#contributedreportslist">Toggle contributed reports view</a>
             </div>
         </div>
     </div>
diff --git a/submissions/views.py b/submissions/views.py
index 8d5955b8d97c259bce6283ae745a10da1cbf6579..3e6d66d230c8fafb88b9fd0d3870a5482341214f 100644
--- a/submissions/views.py
+++ b/submissions/views.py
@@ -44,6 +44,7 @@ import strings
 # SUBMISSIONS:
 ###############
 
+@method_decorator(login_required, name='dispatch')
 @method_decorator(permission_required('scipost.can_submit_manuscript', raise_exception=True),
                   name='dispatch')
 class RequestSubmission(CreateView):
@@ -85,7 +86,7 @@ class RequestSubmission(CreateView):
             messages.warning(self.request, *error_messages)
         return super().form_invalid(form)
 
-
+@login_required
 @permission_required('scipost.can_submit_manuscript', raise_exception=True)
 def prefill_using_arxiv_identifier(request):
     query_form = SubmissionIdentifierForm(request.POST or None, initial=request.GET or None)
diff --git a/templates/403.html b/templates/403.html
index 126e125793cd0d12a7b7e554b74dd0ad3d3dc3f5..7275c78062b6f5f21b136921d8c3dc722568aad9 100644
--- a/templates/403.html
+++ b/templates/403.html
@@ -2,18 +2,21 @@
 
 {% block pagetitle %}: 403{% endblock pagetitle %}
 
-{% block headsup %}
+{% block content %}
 
-{% endblock headsup %}
+<div class="row">
+    <div class="col-12">
+      <div style="text-align: center;">
+          <img src="//scipost.org/static/scipost/images/logo_scipost_RGB_HTML_groot.png" alt="SciPost logo" width="240" style="margin-top: 20px; margin-bottom: 20px" />
+          <h1>You are not authorized to view the requested page.</h1>
+          <h2>403</h2>
+          {% if request.user.is_anonymous %}
+            <p style="margin-top: 20px;">Please <a href="{% url 'scipost:login' %}">login</a> first, and try again.</p>
+          {% else %}
+            <p style="margin-top: 20px;">Continue to your <a href="{% url 'scipost:personal_page' %}">personal page</a>.</p>
+          {% endif %}
+      </div>
+    </div>
+</div>
 
-{% block bodysup %}
-
-
-<section>
-  <h1>You are not authorized to view the requested page.</h1>
-  {% if exception %}
-  <p>Exception: {{ exception }}</p>
-  {% endif %}
-</section>
-
-{% endblock bodysup %}
+{% endblock %}
diff --git a/templates/404.html b/templates/404.html
index 3402bd83cf69e4f2509229cd0de4eed68c25cfdd..aa58a2b1843fd80b62b275156850071484aae13d 100644
--- a/templates/404.html
+++ b/templates/404.html
@@ -1,19 +1,19 @@
 {% extends 'scipost/base.html' %}
 
-{% block pagetitle %}: 403{% endblock pagetitle %}
+{% block pagetitle %}: 404{% endblock pagetitle %}
 
-{% block headsup %}
 
-{% endblock headsup %}
+{% block content %}
 
-{% block bodysup %}
+<div class="row">
+    <div class="col-12">
+      <div style="text-align: center;">
+          <img src="//scipost.org/static/scipost/images/logo_scipost_RGB_HTML_groot.png" alt="SciPost logo" width="240" style="margin-top: 20px; margin-bottom: 20px" />
+          <h1>The page you requested could not be found.</h1>
+          <h2>404</h2>
+          <p style="margin-top: 20px;">Continue to the <a href="{% url 'submissions:submissions' %}">submissions</a>, <a href="{% url 'commentaries:commentaries' %}">commentaries</a> or <a href="{% url 'theses:theses' %}">theses</a> page.</p>
+      </div>
+    </div>
+</div>
 
-
-<section>
-  <h1>The page you requested could not be found.</h1>
-  {% if exception %}
-  <p>Exception: {{ exception }}</p>
-  {% endif %}
-</section>
-
-{% endblock bodysup %}
+{% endblock %}
diff --git a/templates/500.html b/templates/500.html
index 4ab810c9de5deb84e891bad2ec21f1eb8efb8ee2..91403510f7c56414f89d263243fe1c4bbebce003 100644
--- a/templates/500.html
+++ b/templates/500.html
@@ -1,16 +1,15 @@
 {% extends 'scipost/base.html' %}
 
-{% block pagetitle %}: 403{% endblock pagetitle %}
+{% block pagetitle %}: 500{% endblock pagetitle %}
 
-{% block headsup %}
+{% block content %}
 
-{% endblock headsup %}
+<div style="text-align: center;">
+    <img src="//scipost.org/static/scipost/images/logo_scipost_RGB_HTML_groot.png" alt="SciPost logo" width="240" style="margin-top: 20px; margin-bottom: 20px" />
+    <h1>The server responded with an error.</h1>
+    <h2>500</h2>
+    <h3>We are sorry, something went wrong. The SciPost administrators have been informed.</h3>
+    <p style="margin-top: 20px;">Go back to <a href="//scipost.org">the homepage</a>.</p>
+</div>
 
-{% block bodysup %}
-
-
-<section>
-  <h1>The server responded with an error.</h1>
-</section>
-
-{% endblock bodysup %}
+{% endblock %}
diff --git a/theses/templates/theses/_thesislink_card_content.html b/theses/templates/theses/_thesislink_card_content.html
index f8549c9a5e6d471f7b4ec4230ef2f85d789dea98..ad0ec2cc3e083782b50d01ca35b2ad84cb9f7858 100644
--- a/theses/templates/theses/_thesislink_card_content.html
+++ b/theses/templates/theses/_thesislink_card_content.html
@@ -1,13 +1,13 @@
 <div class="card-block">
-    <h3 class="card-title">
+    <h5 class="pb-0">{{ thesislink.get_discipline_display }} &middot; {{ thesislink.get_domain_display }} &middot; {{ thesislink.get_subject_area_display }}</h5>
+    <h3>
         <a href="{% url 'theses:thesis' thesislink_id=thesislink.id %}">{{ thesislink.title }}</a>
     </h3>
-    <p class="card-text">
+    <p class="mt-0 mb-3">
         {{ thesislink.get_type_display }} thesis by {{ thesislink.author }}
-        (supervisor(s): {{ thesislink.supervisor }}) in
-        {{ thesislink.get_discipline_display }}, {{ thesislink.get_domain_display }} {{ thesislink.get_subject_area_display }}.
+        (supervisor(s): {{ thesislink.supervisor }})
     </p>
     <p class="card-text text-muted">
-        Defense date: {{ thesislink.defense_date }}. Latest activity: {{ thesislink.latest_activity|date:"DATE_FORMAT" }}.
+        Defense date: {{ thesislink.defense_date }} &middot; Latest activity: {{ thesislink.latest_activity|date:"DATE_FORMAT" }}
     </p>
 </div>
diff --git a/theses/templates/theses/request_thesislink.html b/theses/templates/theses/request_thesislink.html
index 6795e8065bb6f42c8dc05719cae224e87306339e..c2274f0d3db222d7b32ded59de8da1fcbf9e6178 100644
--- a/theses/templates/theses/request_thesislink.html
+++ b/theses/templates/theses/request_thesislink.html
@@ -4,17 +4,16 @@
 
 {% block pagetitle %}: request Thesis Link{% endblock pagetitle %}
 
-{% block page_header %}
+{% block content %}
+
 <div class="row">
     <div class="col-12">
-      <h1 class="page-header">Request Activation of a Thesis Link</h1>
+      <h1 class="highlight">Request Activation of a Thesis Link</h1>
     </div>
 </div>
-{% endblock page_header %}
 
-{% block content %}
 <div class="row">
-    <div class="col-12 col-md-8">
+    <div class="col-md-8 offset-md-2">
       <form action="{% url 'theses:request_thesislink' %}" method="post">
         {% csrf_token %}
         <table>
diff --git a/theses/templates/theses/unvetted_thesislinks.html b/theses/templates/theses/unvetted_thesislinks.html
index 7ac0723a3d76971d1d78370466da449ac31fd943..dd8b06394dcc6f1aca99eee3ced4e6f2eef0cab5 100644
--- a/theses/templates/theses/unvetted_thesislinks.html
+++ b/theses/templates/theses/unvetted_thesislinks.html
@@ -1,24 +1,37 @@
-{% extends 'scipost/base.html' %}
+{% extends 'scipost/_personal_page_base.html' %}
+
+{% block breadcrumb_items %}
+    {{block.super}}
+    <span class="breadcrumb-item">Unvetted Thesis Links</span>
+{% endblock %}
 
 {% block pagetitle %}: Unvetted Thesis Links{% endblock pagetitle %}
 
 {% block content %}
 
-<div class="row">
-    <div class="col-12">
-        <h1>Unvetted Thesis Links</h1>
-        <ul>
-            {% for thesislink in thesislinks %}
-                <li>
-                {{ thesislink.author }} - {{ thesislink.title }} -
-                <a href = "{% url 'theses:vet_thesislink' pk=thesislink.id %}">vet</a>
-                </li>
-            {% empty %}
-                <li>
-                    No unvetted thesis links.
-                </li>
-            {% endfor %}
-        </ul>
+
+{% if not thesislinks %}
+    <div class="row">
+        <div class="col-12">
+            <h1>There are no Thesis Links for you to vet.</h1>
+            <h3><a href="{% url 'scipost:personal_page' %}">Return to personal page</a></h3>
+        </div>
     </div>
-</div>
+{% else %}
+
+    <div class="row">
+        <div class="col-12">
+            <h1>Unvetted Thesis Links</h1>
+            <ul>
+                {% for thesislink in thesislinks %}
+                    <li>
+                    {{ thesislink.author }} - {{ thesislink.title }} -
+                    <a href = "{% url 'theses:vet_thesislink' pk=thesislink.id %}">vet</a>
+                    </li>
+                {% endfor %}
+            </ul>
+        </div>
+    </div>
+
+{% endif %}
 {% endblock content %}
diff --git a/theses/views.py b/theses/views.py
index ac9558ad9650943b63c1a7f45d565e81bb6bb7de..285bda18f792efc3f376a78938a548b562825a71 100644
--- a/theses/views.py
+++ b/theses/views.py
@@ -2,7 +2,7 @@ import datetime
 
 from django.utils import timezone
 from django.shortcuts import get_object_or_404, render
-from django.contrib.auth.decorators import permission_required
+from django.contrib.auth.decorators import login_required, permission_required
 from django.contrib import messages
 from django.core.urlresolvers import reverse_lazy
 from django.http import HttpResponseRedirect
@@ -22,6 +22,7 @@ import strings
 # Theses
 ################
 
+@method_decorator(login_required, name='dispatch')
 @method_decorator(permission_required(
     'scipost.can_request_thesislinks', raise_exception=True), name='dispatch')
 class RequestThesisLink(CreateView):
diff --git a/virtualmeetings/migrations/0002_auto_20170618_2024.py b/virtualmeetings/migrations/0002_auto_20170618_2024.py
new file mode 100644
index 0000000000000000000000000000000000000000..b08067bccd500b472fd6e523e636c0d2b2aea76c
--- /dev/null
+++ b/virtualmeetings/migrations/0002_auto_20170618_2024.py
@@ -0,0 +1,40 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.3 on 2017-06-18 18:24
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('virtualmeetings', '0001_initial'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='motion',
+            name='date',
+            field=models.DateField(auto_now_add=True),
+        ),
+        migrations.AlterField(
+            model_name='nomination',
+            name='date',
+            field=models.DateField(auto_now_add=True),
+        ),
+        migrations.AlterField(
+            model_name='nomination',
+            name='first_name',
+            field=models.CharField(max_length=30),
+        ),
+        migrations.AlterField(
+            model_name='nomination',
+            name='last_name',
+            field=models.CharField(max_length=30),
+        ),
+        migrations.AlterField(
+            model_name='nomination',
+            name='webpage',
+            field=models.URLField(),
+        ),
+    ]
diff --git a/virtualmeetings/models.py b/virtualmeetings/models.py
index 7e6d9ffcba0993aa1d2ea76f0a79119300b144ce..067c3f2877e4047819f0b13f41201354bf525dad 100644
--- a/virtualmeetings/models.py
+++ b/virtualmeetings/models.py
@@ -1,3 +1,4 @@
+from django.core.urlresolvers import reverse
 from django.db import models
 from django.shortcuts import get_object_or_404
 from django.template import Context, Template
@@ -5,8 +6,7 @@ from django.utils import timezone
 
 from .constants import MOTION_CATEGORIES
 
-from scipost.constants import SCIPOST_DISCIPLINES, SCIPOST_SUBJECT_AREAS,\
-                              subject_areas_dict
+from scipost.constants import SCIPOST_DISCIPLINES, SCIPOST_SUBJECT_AREAS
 from scipost.fields import ChoiceArrayField
 from scipost.models import Contributor
 
@@ -25,6 +25,9 @@ class VGM(models.Model):
         return 'From %s to %s' % (self.start_date.strftime('%Y-%m-%d'),
                                   self.end_date.strftime('%Y-%m-%d'))
 
+    def get_absolute_url(self):
+        return reverse('virtualmeetings:VGM_detail', args=(self.id,))
+
 
 class Feedback(models.Model):
     """
@@ -38,17 +41,11 @@ class Feedback(models.Model):
     def __str__(self):
         return '%s: %s' % (self.by, self.feedback[:50])
 
+    def get_absolute_url(self):
+        return self.VGM.get_absolute_url() + '#feedback' + str(self.id)
+
     def as_li(self):
-        html = ('<div class="Feedback">'
-                '<h3><em>by {{ by }}</em></h3>'
-                '<p>{{ feedback|linebreaks }}</p>'
-                '</div>')
-        context = Context({
-            'feedback': self.feedback,
-            'by': '%s %s' % (self.by.user.first_name,
-                             self.by.user.last_name)})
-        template = Template(html)
-        return template.render(context)
+        raise DeprecationWarning
 
 
 class Nomination(models.Model):
@@ -57,23 +54,23 @@ class Nomination(models.Model):
     """
     VGM = models.ForeignKey('virtualmeetings.VGM', blank=True, null=True)
     by = models.ForeignKey('scipost.Contributor')
-    date = models.DateField()
-    first_name = models.CharField(max_length=30, default='')
-    last_name = models.CharField(max_length=30, default='')
+    date = models.DateField(auto_now_add=True)
+    first_name = models.CharField(max_length=30)
+    last_name = models.CharField(max_length=30)
     discipline = models.CharField(max_length=20, choices=SCIPOST_DISCIPLINES,
                                   default='physics', verbose_name='Main discipline')
     expertises = ChoiceArrayField(
         models.CharField(max_length=10, choices=SCIPOST_SUBJECT_AREAS),
         blank=True, null=True)
-    webpage = models.URLField(default='')
+    webpage = models.URLField()
     nr_A = models.PositiveIntegerField(default=0)
-    in_agreement = models.ManyToManyField(Contributor,
+    in_agreement = models.ManyToManyField('scipost.Contributor',
                                           related_name='in_agreement_with_nomination', blank=True)
     nr_N = models.PositiveIntegerField(default=0)
-    in_notsure = models.ManyToManyField(Contributor,
+    in_notsure = models.ManyToManyField('scipost.Contributor',
                                         related_name='in_notsure_with_nomination', blank=True)
     nr_D = models.PositiveIntegerField(default=0)
-    in_disagreement = models.ManyToManyField(Contributor,
+    in_disagreement = models.ManyToManyField('scipost.Contributor',
                                              related_name='in_disagreement_with_nomination',
                                              blank=True)
     voting_deadline = models.DateTimeField('voting deadline', default=timezone.now)
@@ -84,31 +81,11 @@ class Nomination(models.Model):
                                             self.last_name,
                                             self.by)
 
+    def get_absolute_url(self):
+        return self.VGM.get_absolute_url() + '#nomination_' + str(self.id)
+
     def as_li(self):
-        html = ('<div class="Nomination" id="nomination_id{{ nomination_id }}" '
-                'style="background-color: #eeeeee;">'
-                '<div class="row">'
-                '<div class="col-4">'
-                '<h3><em> {{ name }}</em></h3>'
-                '<p>Nominated by {{ proposer }}</p>'
-                '</div>'
-                '<div class="col-4">'
-                '<p><a href="{{ webpage }}">Webpage</a></p>'
-                '<p>Discipline: {{ discipline }}</p></div>'
-                '<div class="col-4"><p>expertise:<ul>')
-        for exp in self.expertises:
-            html += '<li>%s</li>' % subject_areas_dict[exp]
-        html += '</ul></div></div></div>'
-        context = Context({
-            'nomination_id': self.id,
-            'proposer': '%s %s' % (self.by.user.first_name,
-                                   self.by.user.last_name),
-            'name': self.first_name + ' ' + self.last_name,
-            'discipline': self.get_discipline_display(),
-            'webpage': self.webpage,
-        })
-        template = Template(html)
-        return template.render(context)
+        raise DeprecationWarning
 
     def votes_as_ul(self):
         template = Template('''
@@ -149,7 +126,7 @@ class Motion(models.Model):
     background = models.TextField()
     motion = models.TextField()
     put_forward_by = models.ForeignKey('scipost.Contributor')
-    date = models.DateField()
+    date = models.DateField(auto_now_add=True)
     nr_A = models.PositiveIntegerField(default=0)
     in_agreement = models.ManyToManyField('scipost.Contributor',
                                           related_name='in_agreement_with_motion', blank=True)
@@ -166,23 +143,11 @@ class Motion(models.Model):
     def __str__(self):
         return self.motion[:32]
 
+    def get_absolute_url(self):
+        return self.VGM.get_absolute_url() + '#motion_' + str(self.id)
+
     def as_li(self):
-        html = ('<div class="Motion" id="motion_id{{ motion_id }}">'
-                '<h3><em>Motion {{ motion_id }}, put forward by {{ proposer }}</em></h3>'
-                '<h3>Background:</h3><p>{{ background|linebreaks }}</p>'
-                '<h3>Motion:</h3>'
-                '<div class="flex-container"><div class="flex-greybox">'
-                '<p style="background-color: #eeeeee;">{{ motion|linebreaks }}</p>'
-                '</div></div>'
-                '</div>')
-        context = Context({
-            'motion_id': self.id,
-            'proposer': '%s %s' % (self.put_forward_by.user.first_name,
-                                   self.put_forward_by.user.last_name),
-            'background': self.background,
-            'motion': self.motion, })
-        template = Template(html)
-        return template.render(context)
+        raise DeprecationWarning
 
     def votes_as_ul(self):
         template = Template('''
diff --git a/virtualmeetings/templates/virtualmeetings/VGM_detail.html b/virtualmeetings/templates/virtualmeetings/VGM_detail.html
index 0420363c16e093409a430ceee2b8d259bc6f9dd2..d62c8318efd13870e1a4d613e3e04029130f2417 100644
--- a/virtualmeetings/templates/virtualmeetings/VGM_detail.html
+++ b/virtualmeetings/templates/virtualmeetings/VGM_detail.html
@@ -1,51 +1,21 @@
-{% extends 'scipost/base.html' %}
+{% extends 'scipost/_personal_page_base.html' %}
+
+{% block breadcrumb_items %}
+    {{block.super}}
+    <a href="{% url 'virtualmeetings:VGMs' %}" class="breadcrumb-item">Virtual General Meetings</a>
+    <span class="breadcrumb-item">{{VGM}}</span>
+{% endblock %}
 
 {% block pagetitle %}: VGM detail{% endblock pagetitle %}
 
 {% load staticfiles %}
+{% load bootstrap %}
 
-{% block bodysup %}
-
-<script>
-$(document).ready(function(){
-
-  $("#submitFeedbackForm").hide();
-  $("#submitFeedbackButton").click( function() {
-     $(this).next("form").toggle();
-  });
-
-  $("#FellowshipListing").hide();
-  $("#FellowshipListingButton").click( function() {
-      $("#FellowshipListing").toggle();
-  });
-
-  $("#submitNominationForm").hide();
-  $("#submitNominationButton").click( function() {
-     $(this).next("form").toggle();
-  });
-
-  $("#submitMotionForm").hide();
-  $("#submitMotionButton").click( function() {
-     $(this).next("form").toggle();
-  });
+{% block content %}
 
-  $(".submitRemarkForm").hide();
-
-  $(".submitRemarkButton").click( function() {
-     $(this).next("div").toggle();
-  });
-  });
-
-</script>
-
-<section>
-  <div class="flex-container">
-    <div class="flex-greybox">
-      <h1>SciPost Virtual General Meeting</h1>
-    </div>
-  </div>
-  <div class="flex-container">
-    <div class="flex-whitebox">
+<div class="row">
+    <div class="col-12">
+        <h1 class="highlight">SciPost Virtual General Meeting</h1>
       <h2>On this page:</h2>
       <ul>
 	<li><a href="#Information">Information message</a></li>
@@ -54,299 +24,275 @@ $(document).ready(function(){
 	<li><a href="#Motions">Motions</a></li>
       </ul>
     </div>
-  </div>
-  <hr class="hr12"/>
-</section>
+</div>
 
+<hr>
 
-<section id="Information">
-  <div class="flex-container">
-    <div class="flex-greybox">
-      <h2>Information message from SciPost Administration</h2>
+<div class="row" id="Information">
+    <div class="col-12">
+          <h2 class="highlight">Information message from SciPost Administration</h2>
+          <div class="mb-3">{{ VGM_information }}</div>
+
+        <h3>Quick bullet points:</h3>
+        <ul>
+          <li>This VGM is scheduled from {{ VGM.start_date|date:'Y-m-d' }} to {{ VGM.end_date|date:'Y-m-d' }}.</li>
+          <li>Your feedback/suggestions/criticisms on any aspect of SciPost are greatly valued. Provide them by filling the <a href="#FeedbackBox">feedback form</a>.</li>
+          <li>Your nominations to the Editorial College are welcome. Simply fill the <a href="#NominationBox">nomination form</a>, and cast your vote on current nominations.</li>
+          <li>For substantial changes, for example to the by-laws, new Motions can be put forward until the end of the meeting using the <a href="#MotionBox">form</a>.</li>
+          <li>Voting on Motions is open until one week after the meeting.</li>
+          <li>You a referred to the <a href="{% url 'scipost:EdCol_by-laws' %}">by-laws</a>, section 2 for further details about the procedures.</li>
+        </ul>
     </div>
-  </div>
-  <div class="flex-whitebox">
-    {{ VGM_information }}
-  </div>
-  <br/>
-  <div class="flex-whitebox">
-    <h3>Quick bullet points:</h3>
-    <ul>
-      <li>This VGM is scheduled from {{ VGM.start_date|date:'Y-m-d' }} to {{ VGM.end_date|date:'Y-m-d' }}.</li>
-      <li>Your feedback/suggestions/criticisms on any aspect of SciPost are greatly valued. Provide them by filling the <a href="#FeedbackBox">feedback form</a>.</li>
-      <li>Your nominations to the Editorial College are welcome. Simply fill the <a href="#NominationBox">nomination form</a>, and cast your vote on current nominations.</li>
-      <li>For substantial changes, for example to the by-laws, new Motions can be put forward until the end of the meeting using the <a href="#MotionBox">form</a>.</li>
-      <li>Voting on Motions is open until one week after the meeting.</li>
-      <li>You a referred to the <a href="{% url 'scipost:EdCol_by-laws' %}">by-laws</a>, section 2 for further details about the procedures.</li>
-    </ul>
-  </div>
-  <br/>
-  <hr class="hr12"/>
-</section>
+</div>
+
+<hr>
 
-<section id="Feedback">
-  <div class="flex-container">
-    <div class="flex-greybox" id="FeedbackBox">
-      <h2>Feedback on SciPost</h2>
-      <button id="submitFeedbackButton">Provide feedback</button>
-      <form id="submitFeedbackForm" action="{% url 'virtualmeetings:feedback' VGM_id=VGM.id %}" method="post">
-	{% csrf_token %}
-	{{ feedback_form.as_p }}
-	<input type="submit" value="Submit"/>
-      </form>
+<div class="row" id="Feedback">
+  <div class="col-12">
+    <div id="FeedbackBox">
+      <div class="card card-grey my-2">
+          <div class="card-header">
+              <h2>Feedback on SciPost</h2>
+              <a href="javascript:;" class="btn btn-secondary" data-toggle="toggle" data-target="#submitFeedback">Provide feedback</a>
+          </div>
+          <div class="card-block" style="display: none;" id="submitFeedback">
+              <form action="{% url 'virtualmeetings:feedback' VGM_id=VGM.id %}" method="post">
+            	{% csrf_token %}
+            	{{ feedback_form|bootstrap }}
+            	<input class="btn btn-secondary" type="submit" value="Submit"/>
+              </form>
+          </div>
+      </div>
     </div>
   </div>
-  <div class="flex-container">
-    <div class="flex-greybox">
-      <h2>General Feedback provided</h2>
-    </div>
+  <div class="col-12">
+      <h2 class="highlight">General Feedback provided</h2>
   </div>
-  <div class="row">
-    <div class="col-1"></div>
-    <div class="col-10">
+  <div class="col-12">
       <ul>
-	{% for feedback in feedback_received %}
-	<li>{{ feedback.as_li }}</li>
-	<button class="submitRemarkButton" id="remarkButton{{ nomination.id }}">Add a remark on this Feedback</button>
-	<div class="submitRemarkForm" id="remarkForm{{ feedback.id }}">
-	  <form action="{% url 'virtualmeetings:add_remark_on_feedback' VGM_id=VGM.id feedback_id=feedback.id %}" method="post">
-	    {% csrf_token %}
-	    {{ remark_form.as_p }}
-	    <input type="submit" value="Submit" />
-	  </form>
-	</div>
-	{% if feedback.remark_set.all %}
-	<h3>Remarks on this feedback:</h3>
-	<ul>
-	  {% for rem in feedback.remark_set.all %}
-	  {{ rem.as_li }}
-	  {% endfor %}
-	</ul>
-	{% endif %}
-	{% endfor %}
-      </ul>
+          {% for feedback in feedback_received %}
+          	<li id="feedback{{feedback.id}}">
+                {% include 'virtualmeetings/feedback_content.html' with feedback=feedback %}
+            </li>
+              	<a href="javascript:;" class="btn btn-secondary" data-toggle="toggle" data-target="#remarkfeedbackForm{{ feedback.id }}">Add a remark on this Feedback</a>
+              	<div class="py-2" id="remarkfeedbackForm{{ feedback.id }}">
+              	  <form action="{% url 'virtualmeetings:add_remark_on_feedback' VGM_id=VGM.id feedback_id=feedback.id %}" method="post">
+              	    {% csrf_token %}
+              	    {{ remark_form|bootstrap:'0,12' }}
+              	    <input class="btn btn-secondary" type="submit" value="Submit" />
+              	  </form>
+              	</div>
+              	{% if feedback.remark_set.all %}
+              	<h3>Remarks on this feedback:</h3>
+              	<ul>
+              	  {% for rem in feedback.remark_set.all %}
+                  	  {% include 'scipost/_remark_li.html' with remark=rem %}
+              	  {% endfor %}
+              	</ul>
+              	{% endif %}
+          	{% endfor %}
+        </ul>
     </div>
-  </div>
-  <hr class="hr12"/>
-</section>
+</div>
 
-<section id="Nominations">
-  <div class="flex-container">
-    <div class="flex-greybox" id="NominationBox">
-      <h2>Nominations to the Editorial College</h2>
-      <button id="submitNominationButton">Nominate an Editorial Fellow candidate</button>
-      <form id="submitNominationForm" action="{% url 'virtualmeetings:nominate_Fellow' VGM_id=VGM.id %}" method="post">
-	{% csrf_token %}
-	{{ nomination_form.as_p }}
-        <input type="submit" value="Submit"/>
-      </form>
-    </div>
-  </div>
-  <button id="FellowshipListingButton">View/hide Fellows and Invitations listings</button>
-  <div class="row" id="FellowshipListing">
-    <div class="col-6">
-      <div class="flex-container">
-	<div class="flex-greybox">
-	  <h3>Current Fellows</h3>
-	</div>
-      </div>
-      <div class="flex-container">
-	<div class="flex-whitebox">
-	  <table class="tableofInviteesResponded">
-	    {% for Fellow in current_Fellows %}
-	    <tr><td>{{ Fellow }}</td><td>{{ Fellow.discipline_as_string }}</td>
-	      <td>{{ Fellow.expertises_as_string }}</td></tr>
-	    {% endfor %}
-	  </table>
-	</div>
-      </div>
+<hr>
+
+<div class="row" id="Nominations">
+    <div class="col-12">
+        <div id="NominationBox">
+          <div class="card card-grey my-2">
+              <div class="card-header">
+                  <h2>Nominations to the Editorial College</h2>
+                  <a href="javascript:;" class="btn btn-secondary" data-toggle="toggle" data-target="#submitNominationForm">Nominate an Editorial Fellow candidate</a>
+              </div>
+              <div class="card-block" style="display: none;" id="submitNominationForm">
+                  <form action="{% url 'virtualmeetings:nominate_Fellow' VGM_id=VGM.id %}" method="post">
+                	{% csrf_token %}
+                	{{ nomination_form|bootstrap }}
+                	<input class="btn btn-secondary" type="submit" value="Submit"/>
+                  </form>
+              </div>
+          </div>
+        </div>
     </div>
-    <div class="col-6">
-      <div class="flex-container">
-	<div class="flex-greybox">
-	  <h3>Invitations currently outstanding</h3>
-	</div>
-      </div>
-      <div class="flex-container">
-	<div class="flex-whitebox">
-	  <table class="tableofInvitees">
-	    {% for invitee in pending_inv_Fellows %}
-	    <tr><td>{{ invitee.first_name }} {{ invitee.last_name }}</td></tr>
-	    {% endfor %}
-	  </table>
-	</div>
-      </div>
-      <div class="flex-container">
-	<div class="flex-greybox">
-	  <h3>Invitations which have been turned down</h3>
-	</div>
-      </div>
-      <div class="flex-container">
-	<div class="flex-whitebox">
-	  <table class="tableofInviteesDeclined">
-	    {% for invitee in declined_inv_Fellows %}
-	    <tr><td>{{ invitee.first_name }} {{ invitee.last_name }}</td></tr>
-	    {% endfor %}
-	  </table>
-	</div>
-      </div>
+
+    <div class="col-12">
+        <h2 class="highlight">Current Fellow nominations</h2>
+        <div id="FellowshipListing">
+            <h3>Current Fellows ({{current_Fellows|length}}) &middot; <a href="javascript:;" data-toggle="toggle" data-target="#current_fellows_list">view/hide</a></h3>
+            <ul id="current_fellows_list" style="display: none;">
+                {% for Fellow in current_Fellows %}
+                <li>
+                    <span class="font-weight-bold">{{Fellow}}</span><br>
+                    {{ Fellow.discipline_as_string }} &middot; {{ Fellow.expertises_as_string }}
+                </li>
+        	    {% endfor %}
+              </ul>
+
+          <h3>Invitations currently outstanding ({{pending_inv_Fellows|length}}) &middot; <a href="javascript:;" data-toggle="toggle" data-target="#pending_invitations_list">view/hide</a></h3>
+            <ul id="pending_invitations_list" style="display: none;">
+                {% for invitee in pending_inv_Fellows %}
+                  <li>{{ invitee.first_name }} {{ invitee.last_name }}</li>
+                  {% empty %}
+                  <li>No outstanding invitations found</li>
+                {% endfor %}
+            </ul>
+
+
+            <h3>Invitations which have been turned down  ({{declined_inv_Fellows|length}}) &middot; <a href="javascript:;" data-toggle="toggle" data-target="#declined_invitations_list">view/hide</a></h3>
+            <ul id="declined_invitations_list" style="display: none;">
+                {% for invitee in declined_inv_Fellows %}
+            	    <li>{{ invitee.first_name }} {{ invitee.last_name }}</li>
+                    {% empty %}
+                    <li>No declined invitations found</li>
+        	    {% endfor %}
+              </ul>
+        </div>
     </div>
-  </div>
+</div>
 
-  {% if nominations %}
-  <div class="row">
-    <div class="flex-container">
-      <div class="flex-greybox">
-	<h2>Nominations under consideration</h2>
-      </div>
+{% if nominations %}
+    <div class="row">
+        <div class="col-12">
+        	<h2 class="highlight">Nominations under consideration ({{nominations|length}})</h2>
+        </div>
     </div>
-  </div>
-  <div class="row">
-    <div class="col-1"></div>
-    <div class="col-10">
-    <ul style="list-style-type: none;">
-      {% for nomination in nominations %}
-      <li>
-	{{ nomination.as_li }}
-	<br/>
-	<div class="opinionsDisplay">
-	  <h4>Your opinion on this Nomination (voting deadline: {{ nomination.voting_deadline|date:'y-m-d' }}):</h4>
-	  <form action="{% url 'virtualmeetings:vote_on_nomination' nomination_id=nomination.id vote='A' %}" method="post">
-            {% csrf_token %}
-            <input type="submit" class="agree" value="Agree {{ nomination.nr_A }} "/>
-	  </form>
-	  <form action="{% url 'virtualmeetings:vote_on_nomination' nomination_id=nomination.id vote='N' %}" method="post">
-            {% csrf_token %}
-            <input type="submit" class="notsure" value="Not sure {{ nomination.nr_N }}"/>
-	  </form>
-	  <form action="{% url 'virtualmeetings:vote_on_nomination' nomination_id=nomination.id vote='D'%}" method="post">
-            {% csrf_token %}
-            <input type="submit" class="disagree" value="Disagree {{ nomination.nr_D }}"/>
-	  </form>
-	  {% if request.user.contributor in nomination.in_agreement.all %}
-	  <strong>(you have voted: Agreed)</strong>
-	  {% elif request.user.contributor in nomination.in_notsure.all %}
-	  <strong>(you have voted: Not sure)</strong>
-	  {% elif request.user.contributor in nomination.in_disagreement.all %}
-	  <strong>(you have voted: Disagree)</strong>
-	  {% endif %}
-	</div>
-	<br/><br/>
-	<button class="submitRemarkButton" id="remarkButton{{ nomination.id }}">Add a remark on this Nomination</button>
-	<div class="submitRemarkForm" id="remarkForm{{ nomination.id }}">
-	  <form action="{% url 'virtualmeetings:add_remark_on_nomination' VGM_id=VGM.id nomination_id=nomination.id %}" method="post">
-	    {% csrf_token %}
-	    {{ remark_form.as_p }}
-	    <input type="submit" value="Submit" />
-	  </form>
-	</div>
-	{% if nomination.remark_set.all %}
-	<h3>Remarks on this nomination:</h3>
-	<ul>
-	  {% for rem in nomination.remark_set.all %}
-	  {{ rem.as_li }}
-	  {% endfor %}
-	</ul>
-	{% endif %}
-	<hr class="hr6"/>
-	<br/>
-      </li>
-      {% endfor %}
-    </ul>
+    <div class="row">
+        <div class="col-12">
+            <ul class="list-group list-group-flush">
+                {% for nomination in nominations %}
+                    <li class="list-group-item border-0">
+                        <div class="card-block">
+                            {% include 'virtualmeetings/nomination_content.html' with nomination=nomination %}
+                            <br/>
+                            <div class="opinionsDisplay  mb-3">
+                                <h4>Your opinion on this Nomination (voting deadline: {{ nomination.voting_deadline|date:'y-m-d' }}):</h4>
+                                <form action="{% url 'virtualmeetings:vote_on_nomination' nomination_id=nomination.id vote='A' %}" method="post">
+                                    {% csrf_token %}
+                                    <input type="submit" class="agree" value="Agree {{ nomination.nr_A }} "/>
+                                </form>
+                                <form action="{% url 'virtualmeetings:vote_on_nomination' nomination_id=nomination.id vote='N' %}" method="post">
+                                    {% csrf_token %}
+                                    <input type="submit" class="notsure" value="Not sure {{ nomination.nr_N }}"/>
+                                </form>
+                                <form action="{% url 'virtualmeetings:vote_on_nomination' nomination_id=nomination.id vote='D'%}" method="post">
+                                    {% csrf_token %}
+                                    <input type="submit" class="disagree" value="Disagree {{ nomination.nr_D }}"/>
+                                </form>
+                                {% if request.user.contributor in nomination.in_agreement.all %}
+                                    <strong>(you have voted: Agreed)</strong>
+                                {% elif request.user.contributor in nomination.in_notsure.all %}
+                                    <strong>(you have voted: Not sure)</strong>
+                                {% elif request.user.contributor in nomination.in_disagreement.all %}
+                                    <strong>(you have voted: Disagree)</strong>
+                                {% endif %}
+                            </div>
+                            <br>
+                            <a href="javascript:;" class="btn btn-secondary" data-toggle="toggle" data-target="#remarkForm{{ nomination.id }}">Add a remark on this Nomination</a>
+                            <div class="submitRemarkForm mt-3 mb-4" id="remarkForm{{ nomination.id }}" style="display: none;">
+                                <form action="{% url 'virtualmeetings:add_remark_on_nomination' VGM_id=VGM.id nomination_id=nomination.id %}" method="post">
+                                {% csrf_token %}
+                                {{ remark_form|bootstrap:'0,12' }}
+                                <input type="submit" class="btn btn-secondary" value="Submit" />
+                                </form>
+                            </div>
+                            {% if nomination.remark_set.all %}
+                                <h3>Remarks on this nomination:</h3>
+                                <ul>
+                                    {% for rem in nomination.remark_set.all %}
+                                        {% include 'scipost/_remark_li.html' with remark=rem %}
+                                    {% endfor %}
+                                </ul>
+                            {% endif %}
+                        </div>
+                    </li>
+                    <hr>
+                {% endfor %}
+            </ul>
+        </div>
     </div>
-  </div>
-  {% endif %}
-
-  <hr class="hr12"/>
+{% endif %}
 
-</section>
 
-<section id="Motions">
-  <div class="flex-container">
-    <div class="flex-greybox" id="MotionBox">
-      <h2>Submit a new Motion</h2>
-      <button id="submitMotionButton">Put a new Motion forward</button>
-      <form id="submitMotionForm" action="{% url 'virtualmeetings:put_motion_forward' VGM_id=VGM.id %}" method="post">
-	{% csrf_token %}
-	{% load crispy_forms_tags %}
-	{% crispy motion_form %}
-      </form>
+<!-- Motions -->
+<div class="row" id="Motions">
+    <div class="col-12">
+        <div class="card card-grey my-2">
+            <div class="card-header">
+                <h2>Submit a new Motion</h2>
+                <a href="javascript:;" class="btn btn-secondary" data-toggle="toggle" data-target="#submitMotionForm">Put a new Motion forward</a>
+            </div>
+            <div class="card-block" style="display: none;" id="submitMotionForm">
+                <form action="{% url 'virtualmeetings:put_motion_forward' VGM_id=VGM.id %}" method="post">
+                  {% csrf_token %}
+                  {{ motion_form|bootstrap }}
+                  <input class="btn btn-secondary" type="submit" value="Submit"/>
+                </form>
+            </div>
+        </div>
     </div>
-  </div>
+</div>
 
-  <div class="row">
-    <div class="flex-container">
-      <div class="flex-greybox">
-	<h2>Motions under consideration</h2>
-      </div>
+<div class="row">
+    <div class="col-12">
+    	<h2 class="highlight">Motions under consideration</h2>
     </div>
-  </div>
-  {% for key, val in motion_categories_dict.items %}
-  <div class="row">
-    <div class="col-1"></div>
-    <div class="flex-container">
-      <div class="flex-greybox">
-	<h3>{{ val }}:</h3>
-      </div>
-    </div>
-    <div class="col-1"></div>
-    <div class="col-10">
-    <ul>
-      {% for motion in VGM.motion_set.all %}
-      {% if motion.category == key %}
-      <li>
-	{{ motion.as_li }}
-	<br/>
-	<div class="opinionsDisplay">
-	  <h4>Your opinion on this Motion (voting deadline: {{ motion.voting_deadline|date:'y-m-d' }}):</h4>
-	  <form action="{% url 'virtualmeetings:vote_on_motion' motion_id=motion.id vote='A' %}" method="post">
-            {% csrf_token %}
-            <input type="submit" class="agree" value="Agree {{ motion.nr_A }} "/>
-	  </form>
-	  <form action="{% url 'virtualmeetings:vote_on_motion' motion_id=motion.id vote='N' %}" method="post">
-            {% csrf_token %}
-            <input type="submit" class="notsure" value="Not sure {{ motion.nr_N }}"/>
-	  </form>
-	  <form action="{% url 'virtualmeetings:vote_on_motion' motion_id=motion.id vote='D'%}" method="post">
-            {% csrf_token %}
-            <input type="submit" class="disagree" value="Disagree {{ motion.nr_D }}"/>
-	  </form>
-	  {% if request.user.contributor in motion.in_agreement.all %}
-	  <strong>(you have voted: Agreed)</strong>
-	  {% elif request.user.contributor in motion.in_notsure.all %}
-	  <strong>(you have voted: Not sure)</strong>
-	  {% elif request.user.contributor in motion.in_disagreement.all %}
-	  <strong>(you have voted: Disagree)</strong>
-	  {% endif %}
-	</div>
-	<br/><br/>
-	<button class="submitRemarkButton" id="remarkButton{{ motion.id }}">Add a remark on this Motion</button>
-	<div class="submitRemarkForm" id="remarkForm{{ motion.id }}">
-	  <form action="{% url 'virtualmeetings:add_remark_on_motion' motion_id=motion.id %}" method="post">
-	    {% csrf_token %}
-	    {{ remark_form.as_p }}
-	    <input type="submit" value="Submit" />
-	  </form>
-	</div>
-	{% if motion.remark_set.all %}
-	<h3>Remarks on this motion:</h3>
-	<ul>
-	  {% for rem in motion.remark_set.all %}
-	  {{ rem.as_li }}
-	  {% endfor %}
-	</ul>
-	{% endif %}
-	<hr class="hr6"/>
-	<br/>
-      </li>
-      {% endif %}
-      {% endfor %}
-    </ul>
+</div>
+
+{% for key, val in motion_categories_dict.items %}
+    <div class="row">
+        <div class="col-12"><h2>{{ val }}:</h2></div>
+        <div class="col-md-11 offset-md-1">
+            <ul>
+            {% for motion in VGM.motion_set.all %}
+                {% if motion.category == key %}
+                    <li>
+                        {% include 'virtualmeetings/motion_content.html' with motion=motion %}
+                        <div class="d-block mb-3 opinionsDisplay">
+                            <h4>Your opinion on this Motion (voting deadline: {{ motion.voting_deadline|date:'y-m-d' }}):</h4>
+                            <form action="{% url 'virtualmeetings:vote_on_motion' motion_id=motion.id vote='A' %}" method="post">
+                                {% csrf_token %}
+                                <input type="submit" class="agree" value="Agree {{ motion.nr_A }} "/>
+                            </form>
+                            <form action="{% url 'virtualmeetings:vote_on_motion' motion_id=motion.id vote='N' %}" method="post">
+                                {% csrf_token %}
+                                <input type="submit" class="notsure" value="Not sure {{ motion.nr_N }}"/>
+                            </form>
+                            <form action="{% url 'virtualmeetings:vote_on_motion' motion_id=motion.id vote='D'%}" method="post">
+                                {% csrf_token %}
+                                <input type="submit" class="disagree" value="Disagree {{ motion.nr_D }}"/>
+                            </form>
+                            {% if request.user.contributor in motion.in_agreement.all %}
+                                <strong>(you have voted: Agreed)</strong>
+                            {% elif request.user.contributor in motion.in_notsure.all %}
+                                <strong>(you have voted: Not sure)</strong>
+                            {% elif request.user.contributor in motion.in_disagreement.all %}
+                                <strong>(you have voted: Disagree)</strong>
+                            {% endif %}
+                        </div>
+                        <a class="btn btn-secondary" href="javascript:;" data-toggle="toggle" data-target="#remarkForm{{ motion.id }}">Add a remark on this Motion</a>
+                        <div class="submitRemarkForm mt-3" id="remarkForm{{ motion.id }}" style="display: none;">
+                            <form action="{% url 'virtualmeetings:add_remark_on_motion' motion_id=motion.id %}" method="post">
+                                {% csrf_token %}
+                                {{ remark_form|bootstrap:"0,12" }}
+                                <input type="submit" class="btn btn-secondary" value="Submit" />
+                            </form>
+                        </div>
+                        {% if motion.remark_set.all %}
+                        <h3>Remarks on this motion:</h3>
+                            <ul>
+                                {% for rem in motion.remark_set.all %}
+                                    {% include 'scipost/_remark_li.html' with remark=rem %}
+                                {% endfor %}
+                            </ul>
+                        {% endif %}
+                        <hr>
+                    </li>
+                {% endif %}
+            {% endfor %}
+            </ul>
     </div>
   </div>
   {% endfor %}
 
-</section>
-
-
-{% endblock bodysup %}
+{% endblock %}
diff --git a/virtualmeetings/templates/virtualmeetings/VGMs.html b/virtualmeetings/templates/virtualmeetings/VGMs.html
index a482a21dfadd11a7121e88458dd9bdb2df7ef9a0..22f2178771a4b12c711f364594e6272b1ff7dcdc 100644
--- a/virtualmeetings/templates/virtualmeetings/VGMs.html
+++ b/virtualmeetings/templates/virtualmeetings/VGMs.html
@@ -1,26 +1,28 @@
-{% extends 'scipost/base.html' %}
+{% extends 'scipost/_personal_page_base.html' %}
+
+{% block breadcrumb_items %}
+    {{block.super}}
+    <span class="breadcrumb-item">Virtual General Meetings</span>
+{% endblock %}
 
 {% block pagetitle %}: VGMs{% endblock pagetitle %}
 
 {% load staticfiles %}
 
-{% block bodysup %}
-
-
-<section>
-  <div class="flex-container">
-    <div class="flex-greybox">
-      <h1>SciPost Virtual General Meetings</h1>
+{% block content %}
+
+<div class="row">
+    <div class="col-12">
+        <h1 class="highlight">SciPost Virtual General Meetings</h1>
+        <ul>
+            {% for VGM in VGM_list %}
+                <li><a href="{% url 'virtualmeetings:VGM_detail' VGM_id=VGM.id %}">{{ VGM }}</a></li>
+            {% empty %}
+                <li>You are not registered for a Virtual General Meeting</a>
+            {% endfor %}
+        </ul>
     </div>
-  </div>
-
-  <ul>
-    {% for VGM in VGM_list %}
-    <li><a href="{% url 'virtualmeetings:VGM_detail' VGM_id=VGM.id %}">{{ VGM }}</a></li>
-    {% endfor %}
-  </ul>
-
-</section>
+</div>
 
 
-{% endblock bodysup %}
+{% endblock %}
diff --git a/virtualmeetings/templates/virtualmeetings/feedback_content.html b/virtualmeetings/templates/virtualmeetings/feedback_content.html
new file mode 100644
index 0000000000000000000000000000000000000000..2316bd2677d36c422e84501702d2376edafafd8c
--- /dev/null
+++ b/virtualmeetings/templates/virtualmeetings/feedback_content.html
@@ -0,0 +1,4 @@
+<div class="Feedback">
+    <h3><em>by {{ feedback.by.user.first_name }} {{ feedback.by.user.last_name }}</em></h3>
+    <div>{{ feedback.feedback|linebreaks }}</div>
+</div>
diff --git a/virtualmeetings/templates/virtualmeetings/motion_content.html b/virtualmeetings/templates/virtualmeetings/motion_content.html
new file mode 100644
index 0000000000000000000000000000000000000000..d809e9a219d09c7af732c14e4edefe64bee9f379
--- /dev/null
+++ b/virtualmeetings/templates/virtualmeetings/motion_content.html
@@ -0,0 +1,10 @@
+<div class="Motion" id="motion_{{ motion.id }}">
+    <h2 class="pb-0">Motion {{ motion.id }}</h2>
+    <h3 class="pt-0 mb-2">put forward by {{ motion.put_forward_by.user.first_name }} {{ motion.put_forward_by.user.first_name }}</h3>
+
+    <h3>Background:</h3>
+    <div>{{ motion.background|linebreaks }}</div>
+
+    <h3>Motion:</h3>
+    <div>{{ motion.motion|linebreaks }}</div>
+</div>
diff --git a/virtualmeetings/templates/virtualmeetings/nomination_content.html b/virtualmeetings/templates/virtualmeetings/nomination_content.html
new file mode 100644
index 0000000000000000000000000000000000000000..9d34f5c1802b13e7c034ec53535063deebf34ed4
--- /dev/null
+++ b/virtualmeetings/templates/virtualmeetings/nomination_content.html
@@ -0,0 +1,24 @@
+{% load scipost_extras %}
+
+<div style="border-bottom: 1px solid #eee;" id="nomination_{{ nomination.id }}">
+    <div class="row">
+        <div class="col-4">
+            <h3><b>{{ nomination.first_name }} {{ nomination.last_name }}</b></h3>
+            <p>Nominated by {{ nomination.by.user.first_name }} {{ nomination.by.user.last_name }}</p>
+        </div>
+        <div class="col-4">
+            <p>
+                <a href="{{ nomination.webpage }}">Webpage</a><br>
+                Discipline: {{ nomination.get_discipline_display }}
+            </p>
+        </div>
+        <div class="col-4">
+            <p>Expertise:</p>
+            <ul>
+                {% for expertise in nomination.expertises %}
+                    <li>{{expertise|get_specialization_display}}</li>
+                {% endfor %}
+            </ul>
+        </div>
+    </div>
+</div>
diff --git a/virtualmeetings/views.py b/virtualmeetings/views.py
index ee357ca3f74aac592483d38e4500a75d1c855bba..cb3d7984b9d226a453a2a43fdd4e91df6ea40057 100644
--- a/virtualmeetings/views.py
+++ b/virtualmeetings/views.py
@@ -1,9 +1,9 @@
 import datetime
 
+from django.contrib import messages
 from django.contrib.auth.decorators import login_required, permission_required
 from django.core.urlresolvers import reverse
-from django.http import HttpResponseRedirect
-from django.shortcuts import get_object_or_404, render
+from django.shortcuts import get_object_or_404, render, redirect
 from django.template import Context, Template
 from django.utils import timezone
 
@@ -11,8 +11,8 @@ from .constants import motion_categories_dict
 from .forms import FeedbackForm, NominationForm, MotionForm
 from .models import VGM, Feedback, Nomination, Motion
 
-from scipost.forms import RegistrationInvitation, RemarkForm
-from scipost.models import Contributor, Remark
+from scipost.forms import RemarkForm
+from scipost.models import RegistrationInvitation, Contributor, Remark
 
 
 @login_required
@@ -32,10 +32,9 @@ def VGM_detail(request, VGM_id):
     feedback_form = FeedbackForm()
     current_Fellows = Contributor.objects.filter(
         user__groups__name='Editorial College').order_by('user__last_name')
-    sent_inv_Fellows = RegistrationInvitation.objects.filter(
-        invitation_type='F', responded=False)
-    pending_inv_Fellows = sent_inv_Fellows.filter(declined=False).order_by('last_name')
-    declined_inv_Fellows = sent_inv_Fellows.filter(declined=True).order_by('last_name')
+
+    pending_inv_Fellows = RegistrationInvitation.objects.pending_invited_fellows()
+    declined_inv_Fellows = RegistrationInvitation.objects.declined_invited_fellows()
     nomination_form = NominationForm()
     nominations = Nomination.objects.filter(accepted=None).order_by('last_name')
     motion_form = MotionForm()
@@ -89,59 +88,42 @@ def feedback(request, VGM_id=None):
 @login_required
 @permission_required('scipost.can_attend_VGMs', raise_exception=True)
 def add_remark_on_feedback(request, VGM_id, feedback_id):
-    # contributor = request.user.contributor
     feedback = get_object_or_404(Feedback, pk=feedback_id)
-    if request.method == 'POST':
-        remark_form = RemarkForm(request.POST)
-        if remark_form.is_valid():
-            remark = Remark(contributor=request.user.contributor,
-                            feedback=feedback,
-                            date=timezone.now(),
-                            remark=remark_form.cleaned_data['remark'])
-            remark.save()
-            return HttpResponseRedirect('/VGM/' + str(VGM_id) +
-                                        '/#feedback_id' + str(feedback.id))
-        else:
-            errormessage = 'The form was invalidly filled.'
-            return render(request, 'scipost/error.html', {'errormessage': errormessage})
+    remark_form = RemarkForm(request.POST)
+    if remark_form.is_valid():
+        remark = Remark(contributor=request.user.contributor,
+                        feedback=feedback,
+                        remark=remark_form.cleaned_data['remark'])
+        remark.save()
     else:
-        errormessage = 'This view can only be posted to.'
-        return render(request, 'scipost/error.html', {'errormessage': errormessage})
+        messages.danger(request, 'The form was invalidly filled.')
+    return redirect(feedback.get_absolute_url())
 
 
 @login_required
 @permission_required('scipost.can_attend_VGMs')
 def nominate_Fellow(request, VGM_id):
     VGM_instance = get_object_or_404(VGM, id=VGM_id)
-    if request.method == 'POST':
-        nomination_form = NominationForm(request.POST)
-        if nomination_form.is_valid():
-            nomination = Nomination(
-                VGM=VGM_instance,
-                by=request.user.contributor,
-                date=timezone.now().date(),
-                first_name=nomination_form.cleaned_data['first_name'],
-                last_name=nomination_form.cleaned_data['last_name'],
-                discipline=nomination_form.cleaned_data['discipline'],
-                expertises=nomination_form.cleaned_data['expertises'],
-                webpage=nomination_form.cleaned_data['webpage'],
-                voting_deadline=VGM_instance.end_date + datetime.timedelta(days=7),
-            )
-            nomination.save()
-            nomination.update_votes(request.user.contributor.id, 'A')
-            ack_message = 'The nomination has been registered.'
-            context = {'ack_message': ack_message,
-                       'followup_message': 'Return to the ',
-                       'followup_link': reverse('virtualmeetings:VGM_detail',
-                                                kwargs={'VGM_id': VGM_id}),
-                       'followup_link_label': 'VGM page'}
-            return render(request, 'scipost/acknowledgement.html', context)
-        else:
-            errormessage = 'The form was not filled properly.'
-            return render(request, 'scipost/error.html', {'errormessage': errormessage})
+    nomination_form = NominationForm(request.POST)
+
+    if nomination_form.is_valid():
+        nomination = Nomination(
+            VGM=VGM_instance,
+            by=request.user.contributor,
+            date=timezone.now().date(),
+            first_name=nomination_form.cleaned_data['first_name'],
+            last_name=nomination_form.cleaned_data['last_name'],
+            discipline=nomination_form.cleaned_data['discipline'],
+            expertises=nomination_form.cleaned_data['expertises'],
+            webpage=nomination_form.cleaned_data['webpage'],
+            voting_deadline=VGM_instance.end_date + datetime.timedelta(days=7),
+        )
+        nomination.save()
+        nomination.update_votes(request.user.contributor.id, 'A')
+        messages.success(request, 'The nomination has been registered.')
     else:
-        errormessage = 'This view can only be posted to.'
-        return render(request, 'scipost/error.html', {'errormessage': errormessage})
+        messages.danger(request, 'The form was not filled properly.')
+    return redirect(VGM_instance.get_absolute_url())
 
 
 @login_required
@@ -149,22 +131,15 @@ def nominate_Fellow(request, VGM_id):
 def add_remark_on_nomination(request, VGM_id, nomination_id):
     # contributor = request.user.contributor
     nomination = get_object_or_404(Nomination, pk=nomination_id)
-    if request.method == 'POST':
-        remark_form = RemarkForm(request.POST)
-        if remark_form.is_valid():
-            remark = Remark(contributor=request.user.contributor,
-                            nomination=nomination,
-                            date=timezone.now(),
-                            remark=remark_form.cleaned_data['remark'])
-            remark.save()
-            return HttpResponseRedirect('/VGM/' + str(VGM_id) +
-                                        '/#nomination_id' + str(nomination.id))
-        else:
-            errormessage = 'The form was invalidly filled.'
-            return render(request, 'scipost/error.html', {'errormessage': errormessage})
+    remark_form = RemarkForm(request.POST)
+    if remark_form.is_valid():
+        remark = Remark(contributor=request.user.contributor,
+                        nomination=nomination,
+                        remark=remark_form.cleaned_data['remark'])
+        remark.save()
     else:
-        errormessage = 'This view can only be posted to.'
-        return render(request, 'scipost/error.html', {'errormessage': errormessage})
+        messages.danger(request, 'The form was invalidly filled.')
+    return redirect(nomination.get_absolute_url())
 
 
 @login_required
@@ -173,11 +148,11 @@ def vote_on_nomination(request, nomination_id, vote):
     contributor = request.user.contributor
     nomination = get_object_or_404(Nomination, pk=nomination_id)
     if timezone.now() > nomination.voting_deadline:
-        errormessage = 'The voting deadline on this nomination has passed.'
-        return render(request, 'scipost/error.html', {'errormessage': errormessage})
-    nomination.update_votes(contributor.id, vote)
-    return HttpResponseRedirect('/VGM/' + str(nomination.VGM.id) +
-                                '/#nomination_id' + str(nomination.id))
+        messages.warning(request, 'The voting deadline on this nomination has passed.')
+    else:
+        nomination.update_votes(contributor.id, vote)
+        messages.success(request, 'You have successfully voted on nomination %i' % nomination.id)
+    return redirect(nomination.get_absolute_url())
 
 
 @login_required
@@ -185,58 +160,40 @@ def vote_on_nomination(request, nomination_id, vote):
 def put_motion_forward(request, VGM_id):
     VGM_instance = get_object_or_404(VGM, id=VGM_id)
     if timezone.now().date() > VGM_instance.end_date:
-        errormessage = 'This VGM has ended. No new motions can be put forward.'
-        return render(request, 'scipost/error.html', {'errormessage': errormessage})
-    if request.method == 'POST':
-        motion_form = MotionForm(request.POST)
-        if motion_form.is_valid():
-            motion = Motion(
-                category=motion_form.cleaned_data['category'],
-                VGM=VGM_instance,
-                background=motion_form.cleaned_data['background'],
-                motion=motion_form.cleaned_data['motion'],
-                put_forward_by=request.user.contributor,
-                date=timezone.now().date(),
-                voting_deadline=VGM_instance.end_date + datetime.timedelta(days=7),
-            )
-            motion.save()
-            motion.update_votes(request.user.contributor.id, 'A')
-            ack_message = 'Your motion has been registered.'
-            context = {'ack_message': ack_message,
-                       'followup_message': 'Return to the ',
-                       'followup_link': reverse('virtualmeetings:VGM_detail',
-                                                kwargs={'VGM_id': VGM_id}),
-                       'followup_link_label': 'VGM page'}
-            return render(request, 'scipost/acknowledgement.html', context)
-        else:
-            errormessage = 'The form was not filled properly.'
-            return render(request, 'scipost/error.html', {'errormessage': errormessage})
+        messages.warning(request, 'This VGM has ended. No new motions can be put forward.')
+        return redirect(VGM_instance.get_absolute_url())
+
+    motion_form = MotionForm(request.POST)
+    if motion_form.is_valid():
+        motion = Motion(
+            category=motion_form.cleaned_data['category'],
+            VGM=VGM_instance,
+            background=motion_form.cleaned_data['background'],
+            motion=motion_form.cleaned_data['motion'],
+            put_forward_by=request.user.contributor,
+            voting_deadline=VGM_instance.end_date + datetime.timedelta(days=7),
+        )
+        motion.save()
+        motion.update_votes(request.user.contributor.id, 'A')
+        messages.success(request, 'Your vote has been registered.')
     else:
-        errormessage = 'This view can only be posted to.'
-        return render(request, 'scipost/error.html', {'errormessage': errormessage})
+        messages.danger(request, 'The form was not filled properly.')
+    return redirect(motion.get_absolute_url())
 
 
 @login_required
 @permission_required('scipost.can_attend_VGMs', raise_exception=True)
 def add_remark_on_motion(request, motion_id):
-    # contributor = request.user.contributor
     motion = get_object_or_404(Motion, pk=motion_id)
-    if request.method == 'POST':
-        remark_form = RemarkForm(request.POST)
-        if remark_form.is_valid():
-            remark = Remark(contributor=request.user.contributor,
-                            motion=motion,
-                            date=timezone.now(),
-                            remark=remark_form.cleaned_data['remark'])
-            remark.save()
-            return HttpResponseRedirect('/VGM/' + str(motion.VGM.id) +
-                                        '/#motion_id' + str(motion.id))
-        else:
-            errormessage = 'The form was invalidly filled.'
-            return render(request, 'scipost/error.html', {'errormessage': errormessage})
+    remark_form = RemarkForm(request.POST)
+    if remark_form.is_valid():
+        remark = Remark(contributor=request.user.contributor,
+                        motion=motion,
+                        remark=remark_form.cleaned_data['remark'])
+        remark.save()
     else:
-        errormessage = 'This view can only be posted to.'
-        return render(request, 'scipost/error.html', {'errormessage': errormessage})
+        messages.danger(request, 'The form was not filled properly.')
+    return redirect(motion.get_absolute_url())
 
 
 @login_required
@@ -245,8 +202,8 @@ def vote_on_motion(request, motion_id, vote):
     contributor = request.user.contributor
     motion = get_object_or_404(Motion, pk=motion_id)
     if timezone.now() > motion.voting_deadline:
-        errormessage = 'The voting deadline on this motion has passed.'
-        return render(request, 'scipost/error.html', {'errormessage': errormessage})
-    motion.update_votes(contributor.id, vote)
-    return HttpResponseRedirect('/VGM/' + str(motion.VGM.id) +
-                                '/#motion_id' + str(motion.id))
+        messages.warning(request, 'The voting deadline on this motion has passed.')
+    else:
+        motion.update_votes(contributor.id, vote)
+        messages.success(request, 'You have successfully voted on motion %i' % motion.id)
+    return redirect(motion.get_absolute_url())
diff --git a/webpack.config.js b/webpack.config.js
index a14943764e184c56b3168445a66e0a08806a853e..9c36140fc0be4445270b73b99f20ad74c799b01c 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -15,6 +15,9 @@ module.exports = {
         bootstrap: [
             'bootstrap-loader'
         ],
+        homepage: [
+            "./scipost/static/scipost/assets/js/newsticker.js",
+        ],
         tooltip: "./scipost/static/scipost/assets/js/tooltip.js",
         modal: "./scipost/static/scipost/assets/js/modal.js",
     },