diff --git a/css/uw_ckeditor.css b/css/uw_ckeditor.css
index dbc4dd356e2d3b6190bd96e4ae3cdccfed6fa224..31dd8b400867af63cb2ebe6677042f0571834862 100644
--- a/css/uw_ckeditor.css
+++ b/css/uw_ckeditor.css
@@ -7,9 +7,11 @@
   font-family: Typ1451-Regular,verdana,sans-serif;
   width: 100%;
 }
+
 .cke_editable .caption > * {
   display: inline-block;
 }
+
 .cke_editable .caption {
   width: 98%;
 }
@@ -32,3 +34,162 @@ kbd > kbd {
   background: #575757;
   color: #ffffff;
 }
+
+/*list types*/
+ul {
+  list-style-type: disc;
+  margin: 0 0 1rem;
+  padding: 0 0 0 1.5rem;
+}
+
+[dir='rtl'] ul {
+  padding: 0 1.5rem 0 0;
+}
+
+ul ul {
+  list-style-type: circle;
+  margin: 0.5rem 0 0;
+}
+
+ul ul li > ul {
+  list-style-type: disc;
+}
+
+.disc {
+  list-style: disc;
+}
+
+.disc ul {
+  list-style-type: disc;
+}
+
+.disc ul li > ul {
+  list-style-type: disc;
+}
+
+.square {
+  list-style: square;
+}
+
+.square ul {
+  list-style-type: square;
+}
+
+.square ul li > ul {
+  list-style-type: square;
+}
+
+.circle {
+  list-style-type: circle;
+}
+
+.circle ul {
+  list-style-type: circle;
+}
+
+.circle ul li > ul {
+  list-style-type: circle;
+}
+
+ol {
+  margin: 0 0 1rem;
+  padding: 0 0 0 1.5rem;
+}
+
+[dir='rtl'] ol {
+  padding: 0 1.5rem 0 0;
+}
+
+ol ol {
+  list-style-type: lower-alpha;
+  margin: 0.5rem 0 0;
+}
+
+ol ol li ol {
+  list-style-type: lower-roman;
+}
+
+.lower-alpha {
+  list-style-type: lower-alpha;
+}
+
+.lower-alpha li ol {
+  list-style-type: lower-alpha;
+}
+
+.upper-alpha {
+  list-style-type: upper-alpha;
+}
+
+.upper-alpha li ol {
+  list-style-type: upper-alpha;
+}
+
+.lower-roman {
+  list-style-type: lower-roman;
+}
+
+.lower-roman li ol {
+  list-style-type: lower-roman;
+}
+
+.upper-roman {
+  list-style-type: upper-roman;
+}
+
+.upper-roman li ol {
+  list-style-type: upper-roman;
+}
+
+.decimal {
+  list-style: decimal outside none;
+  margin: 0;
+  padding: 0 0 1rem 1rem;
+}
+
+.decimal li {
+  counter-increment: item;
+  display: table;
+  margin: 0.5rem 0;
+}
+
+.decimal li::before {
+  content: counters(item, ".") ". ";
+  display: table-cell;
+  padding-right: 0.6rem;
+}
+
+.decimal li li {
+  margin: 0.5rem 0;
+}
+
+.decimal li li li::before {
+  content: counters(item, ".") " ";
+}
+
+.decimal li ol {
+  counter-reset: item;
+  list-style: square outside none;
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+}
+
+li {
+  margin-bottom: 0.5rem;
+  padding-left: 0.5rem;
+}
+
+li:last-child {
+  margin-bottom: 0;
+}
+
+li > *:last-child {
+  margin-bottom: 0;
+}
+
+@media print {
+  li {
+    page-break-inside: avoid;
+  }
+}
diff --git a/js/user-login-min.js b/js/user-login-min.js
index 5365d9382e7ef1134927a5113998f75603d68fba..2281bd9392d59f5694d934b298073d813376e66e 100644
--- a/js/user-login-min.js
+++ b/js/user-login-min.js
@@ -1 +1 @@
-!function(l,i){i.behaviors.uwFdsuThemeRespUserLogin={attach:function(i,n){l("#edit-simplesamlphp-auth-login-link").length&&(l("#user-login-form").css("display","none"),l("#user-login-form").after('<button id="adfs-login-link" class="button--primary">Log in via ADFS</button> &nbsp; <button id="local-login-link" class="button--medium">Log in locally</button>'),l("#edit-submit").val("Log in locally"),l("#local-login-link").click(function(){l("#user-login-form").css("display","block"),l("#local-login-link").css("display","none"),l("#adfs-login-link").css("display","none"),l("#edit-name").focus()}),l("#adfs-login-link").click(function(){l("#edit-simplesamlphp-auth-login-link")[0].click()}))}}}(jQuery,Drupal);
+!function($,a){a.behaviors.uwFdsuThemeRespUserLogin={attach:function(b,c){if($("#edit-simplesamlphp-auth-login-link").length){var a=$("p.auth-message").html();a=a?'<div class="user-login-form" id="adfs-login-message"><p>'+a+"</p></div>":"",$("#user-login-form").css("display","none"),$("#user-login-form").after(a+'<button id="adfs-login-link" class="button--primary">Log in via ADFS</button> &nbsp; <button id="local-login-link" class="button--medium">Log in locally</button>'),$("#edit-submit").val("Log in locally"),$("#local-login-link").click(function(){$("#user-login-form").css("display","block"),$("#local-login-link").css("display","none"),$("#adfs-login-link").css("display","none"),$("#adfs-login-message").css("display","none"),$("#edit-name").focus()}),$("#adfs-login-link").click(function(){$("#edit-simplesamlphp-auth-login-link")[0].click()})}}}}(jQuery,Drupal);
diff --git a/js/user-login.js b/js/user-login.js
index 5d258fe7d883dbaf2ac638ac1fee55214b9e2b18..4da77420de17ca1416ca3edb064d84700c1e0ded 100644
--- a/js/user-login.js
+++ b/js/user-login.js
@@ -7,10 +7,19 @@
     attach: function (context, settings) {
       // Don't do anything if SimpleSAML isn't enabled.
       if ($('#edit-simplesamlphp-auth-login-link').length) {
-      // Hide the normal login form.
+        // Get custom message from login form.
+        var messageText = $('p.auth-message').html();
+
+        if (messageText) {
+          messageText = '<div class="user-login-form" id="adfs-login-message"><p>' + messageText + '</p></div>';
+        }
+        else {
+          messageText = "";
+        }
+        // Hide the normal login form.
         $('#user-login-form').css('display', 'none');
         // Add buttons (using JS because they don't work without JS)
-        $('#user-login-form').after('<button id="adfs-login-link" class="button--primary">Log in via ADFS</button> &nbsp; <button id="local-login-link" class="button--medium">Log in locally</button>');
+        $('#user-login-form').after(messageText + '<button id="adfs-login-link" class="button--primary">Log in via ADFS</button> &nbsp; <button id="local-login-link" class="button--medium">Log in locally</button>');
         // Update the existing login form's link text.
         $('#edit-submit').val('Log in locally');
         // If the local login link is clicked, show the normal login form and hide the buttons.
@@ -19,6 +28,7 @@
           $('#user-login-form').css('display', 'block');
           $('#local-login-link').css('display', 'none');
           $('#adfs-login-link').css('display', 'none');
+          $('#adfs-login-message').css('display', 'none');
           $('#edit-name').focus();
         });
         // If the ADFS login link is clicked, click on the original log in with ADFS link.
diff --git a/templates/fields/field--related-files.html.twig b/templates/fields/field--related-files.html.twig
new file mode 100644
index 0000000000000000000000000000000000000000..368b2be2fdb7bbcb581afd3cb5c210b3884dc435
--- /dev/null
+++ b/templates/fields/field--related-files.html.twig
@@ -0,0 +1,21 @@
+{#
+/**
+ * @file
+ * Theme override for a field.
+ */
+#}
+{%
+  set classes = [
+  'uw-field',
+  'uw-field--name-' ~ field_name|clean_class,
+  'uw-field--type-' ~ field_type|clean_class,
+  'uw-field--label-' ~ label_display,
+]
+%}
+{%
+  set title_classes = [
+  'uw-field__label',
+  label_display == 'visually_hidden' ? 'visually-hidden',
+]
+%}
+{% for item in items %}{% if loop.index0 > 0 %},&nbsp;{% endif %}<a href="{{ file_url(item.content['#file'].uri.value) }}">{{ item.content['#file'].filename.value }}</a>{% endfor %}
diff --git a/templates/reference/bibcite-reference--table.html.twig b/templates/reference/bibcite-reference--table.html.twig
new file mode 100644
index 0000000000000000000000000000000000000000..c7caf2d070c13d20225f9743522e1c87d9b38c3a
--- /dev/null
+++ b/templates/reference/bibcite-reference--table.html.twig
@@ -0,0 +1,74 @@
+{#
+/**
+ * @file bibcite-reference-table.html.twig
+ * Theme implementation to present Reference data in table.
+ *
+ * Available variables:
+ * - title_prefix: Additional output populated by modules, intended to be
+ *   displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ *   displayed after the main title tag that appears in the template.
+ * - content: All reference items. Use {{ content }} to print them all,
+ *   or print a subset such as {{ content.field_example }}. Use
+ *   {{ content|without('field_example') }} to temporarily suppress the printing
+ *   of a given child element.
+ * - attributes: HTML attributes for the container element.
+ * - bibcite_reference: The bibcite_reference entity with limited access to object properties and methods.
+ * - view_mode: View mode; for example, "teaser" or "full".
+ * - rows: Data rows.
+ *
+ * @see template_preprocess_bibcite_reference_table()
+ *
+ * @ingroup themeable
+ */
+#}
+
+{% set new_rows = [] %}
+{% set related_files = [] %}
+{% set links = [] %}
+
+{% for row in rows %}
+  {% if row.element['#type'] and row.element['#type'] == 'form' %}
+    {{ row.element }}
+  {% elseif row.element['#field_name'] == 'related_files' %}
+    {% set related_files = row %}
+  {% elseif row.element.links %}
+    {% set links = row %}
+  {% else %}
+    {% set new_rows = new_rows | merge([row]) %}
+  {% endif %}
+{% endfor %}
+
+{% if related_files | length > 0 %}
+  {% set new_rows = new_rows | merge([related_files]) %}
+{% endif %}
+
+{% if links | length > 0 %}
+  {% set new_rows = new_rows | merge([links]) %}
+{% endif %}
+
+{% set rows = new_rows %}
+
+<div{{ attributes }}>
+  {{ title_prefix }}
+  {{ title_suffix }}
+  <table>
+    {% if rows %}
+      <tbody>
+      <tr{{ row.attributes.addClass(row_classes) }}>
+        <th scope="row">Title</th>
+        <td>{{ title }}</td>
+      </tr>
+      {% for row in rows %}
+        {% set row_classes = [
+          not no_striping ? cycle(['odd', 'even'], loop.index0),
+        ] %}
+        <tr{{ row.attributes.addClass(row_classes) }}>
+          <th scope="row">{{- row.title -}}</th>
+          <td>{{- row.element -}}</td>
+        </tr>
+      {% endfor %}
+      </tbody>
+    {% endif %}
+  </table>
+</div>