diff --git a/modules/core/templates/frontpage_federation.twig b/modules/core/templates/frontpage_federation.twig
new file mode 100644
index 0000000000000000000000000000000000000000..25601e42c1ac7699d117979885ab263aec758d11
--- /dev/null
+++ b/modules/core/templates/frontpage_federation.twig
@@ -0,0 +1,89 @@
+{% set pagetitle = '{core:frontpage:page_title}'|trans %}
+{% extends "base.twig" %}
+
+{% block content %}
+    {% if isadmin %}
+    <p class="float-r youareadmin">{{ '{core:frontpage:loggedin_as_admin}'|trans }}</p>
+    {% else %}
+    <p class="float-r youareadmin">
+        <a href="{{ loginurl|escape('url') }}">{{ '{core:frontpage:login_as_admin}'|trans }}</a>
+    </p>
+    {% endif %}
+
+    {% if metaentries.hosted is iterable and metaentries.hosted is not empty %}
+    <dl>
+    {% for key, set in metaentries.hosted %}
+        {% set metadataset = attribute(set, 'metadata-set') %}
+        <dt>{{ mtype[metadataset]|trans }}</dt>
+        <dd>
+        <p>Entity ID: {{ hm.entityid }}
+            {% if set.deprecated is defined and set.deprecated %}
+            <br /><span style="font-weight: bold;">Deprecated</span>
+            {% endif %}
+            {% if set.entityid != attribute(set, 'metadata-index') %}
+            <br />Index: {{ attribute(set, 'metadata-index') }}
+            {% endif %}
+            {% if set.name_translated is defined %}
+            <br /><span style="font-weight: bold;">{{ set.name_translated }}</span>
+            {% endif %}
+            {% if set.descr_translated is defined %}
+            <br /><span style="font-weight: bold;">{{ set.descr_translated }}</span>
+            {% endif %}
+            <br />[ <a href="{{ attribute(set, 'metadata-url') }}">{{'{core:frontpage:show_metadata}'|trans }}</a> ]
+        </p>
+        </dd>
+    {% endfor %}
+    </dl>
+    {% endif %}
+
+    {% if metaentries.remote is iterable and metaentries.remote is not empty %}
+    {% for key, set in metaentries.remote %}
+    <fieldset class="fancyfieldset">
+        <legend>{{ mtype[key]|trans }} (Trusted)</legend>
+        <ul>
+        {% for entityid, entity in set %}
+            <li><a href="{{ (metadata_url ~ '?entityid=' ~ entity.entityid ~ '&set=' ~ key)|escape('html') }}">
+            {%- if entity.name_translated is defined %}
+            {{ entity.name_translated }}
+            {% elseif entity.organizationdisplayname_translated is defined %}
+            {{ entity.organizationdisplayname_translated }}
+            {% else %}{{ entity.entityid|escape('html') }}
+            {% endif -%}</a>
+
+            {%- if entity.expire is defined %}
+            {% if entity.expire > date().timestamp %}
+            <span style="color: #500; font-weight: bold"> (expired {{ ((date().timestamp - entity.expire) / 3600) }} hours ago)</span>
+            {% else %} (expires in {{ ((entity.expire - date().timestamp) / 3600) }} hours){% endif -%}{% endif %}
+            </li>
+        {% endfor %}
+        </ul>
+    </fieldset>
+    {% endfor %}
+    {% endif %}
+
+    <h2>{{ '{core:frontpage:tools}'|trans }}</h2>
+    <ul>
+        {% for key, link in links_federation %}
+        <li><a href="{{ link.href|escape('html') }}">{{ link.text|trans|escape('html') }}</a></li>
+        {% endfor %}
+    </ul>
+
+    {% if isadmin %}
+    <fieldset class="fancyfieldset">
+        <legend>Lookup metadata</legend>
+        <form action="{{ metadata_url }}" method="get">
+            <p style="margin: 1em 2em ">Look up metadata for entity:
+                <select name="set">
+                {% if metaentries.remote is defined and metaentries.remote is not empty %}
+                {% for key, set in metaentries.remote %}
+                    <option value="{{ key|escape('html') }}">{{ mtype[key]|trans }}</option>
+                {% endfor %}
+                {% endif %}
+                </select>
+                <input type="text" name="entityid" />
+                <button class="btn" type="submit">Lookup </button>
+            </p>
+        </form>
+    </fieldset>
+    {% endif %}
+{% endblock %}
diff --git a/modules/core/templates/frontpage_welcome.twig b/modules/core/templates/frontpage_welcome.twig
new file mode 100644
index 0000000000000000000000000000000000000000..3ed8da3eaef0c9166282f680f3d32cd12afbbf7f
--- /dev/null
+++ b/modules/core/templates/frontpage_welcome.twig
@@ -0,0 +1,22 @@
+{% set pagetitle = '{core:frontpage:page_title}'|trans %}
+{% extends "base.twig" %}
+
+{% block content %}
+    {% if isadmin %}
+    <p class="float-r youareadmin">{{ '{core:frontpage:loggedin_as_admin}'|trans }}</p>
+    {% else %}
+    <p class="float-r youareadmin">
+        <a href="{{ loginurl|escape('url') }}">{{ '{core:frontpage:login_as_admin}'|trans }}</a>
+    </p>
+    {% endif %}
+
+    <p>{{ '{core:frontpage:intro}'|trans|raw }}</p>
+    <ul>
+        {% for key, link in links_welcome %}
+        <li><a href="{{ link.href|escape('html') }}">{{ link.text|trans|escape('html') }}</a></li>
+        {% endfor %}
+    </ul>
+
+    <h2>{{ '{core:frontpage:about_header}'|trans }}</h2>
+    <p>{{ '{core:frontpage:about_text}'|trans|raw }}</p>
+{% endblock %}
diff --git a/modules/core/www/frontpage_federation.php b/modules/core/www/frontpage_federation.php
index 669fc2e2c1a3f018b534a744e6b1822b3c530638..3cac2f4ee17c560985bc1e335d4ea9e6d887ca81 100644
--- a/modules/core/www/frontpage_federation.php
+++ b/modules/core/www/frontpage_federation.php
@@ -117,6 +117,36 @@ foreach ($metaentries['remote'] as $key => $value) {
 
 $t = new SimpleSAML_XHTML_Template($config, 'core:frontpage_federation.tpl.php');
 
+$language = $t->getLanguage();
+$defaultLanguage = $config->getString('language.default', 'en');
+
+$translators = array(
+    'name' => 'name_translated',
+    'descr' => 'descr_translated',
+    'OrganizationDisplayName' => 'organizationdisplayname_translated',
+);
+
+foreach ($metaentries['hosted'] as $index => $entity) {
+    foreach ($translators as $old => $new) {
+        if (isset($entity[$old][$language])) {
+            $metaentries['hosted'][$index][$new] = $entity[$old][$language];
+        } elseif ($entity[$old][$defaultLanguage]) {
+            $metaentries['hosted'][$index][$new] = $entity[$old][$defaultLanguage];
+        }
+    }
+}
+foreach ($metaentries['remote'] as $key => $set) {
+    foreach ($set as $entityid => $entity) {
+        foreach ($translators as $old => $new) {
+            if (isset($entity[$old][$language])) {
+                $metaentries['remote'][$key][$entityid][$new] = $entity[$old][$language];
+            } elseif ($entity[$old][$defaultLanguage]) {
+                $metaentries['remote'][$key][$entityid][$new] = $entity[$old][$defaultLanguage];
+            }
+        }
+    }
+}
+
 # look up translated string
 $mtype = array(
     'saml20-sp-remote' => $t->noop('{admin:metadata_saml20-sp}'),
@@ -143,12 +173,11 @@ $t->data['links_welcome'] = $links_welcome;
 $t->data['links_config'] = $links_config;
 $t->data['links_auth'] = $links_auth;
 $t->data['links_federation'] = $links_federation;
+$t->data['header'] = $t->t('{core:frontpage:page_title}');
 
-
-
+$t->data['metadata_url'] = SimpleSAML\Module::getModuleURL('core/show_metadata.php');
 $t->data['metaentries'] = $metaentries;
 $t->data['mtype'] = $mtype;
 
-
 $t->show();
 
diff --git a/modules/core/www/frontpage_welcome.php b/modules/core/www/frontpage_welcome.php
index abeeecea12715fb6b7db7334c8437de5c3889f7b..aa79756cd463d56ee6adaa0c2c9113aa8ff1fdfb 100644
--- a/modules/core/www/frontpage_welcome.php
+++ b/modules/core/www/frontpage_welcome.php
@@ -57,7 +57,7 @@ $t->data['links_welcome'] = $links_welcome;
 $t->data['links_config'] = $links_config;
 $t->data['links_auth'] = $links_auth;
 $t->data['links_federation'] = $links_federation;
-
+$t->data['header'] = $t->t('{core:frontpage:page_title}');
 
 
 
diff --git a/modules/multiauth/lib/Auth/Source/MultiAuth.php b/modules/multiauth/lib/Auth/Source/MultiAuth.php
index f63bcce9d4c26e1d7b61548e320e777a89551a10..56960f154c6f0705e14ebf57c9c6330fc706531a 100644
--- a/modules/multiauth/lib/Auth/Source/MultiAuth.php
+++ b/modules/multiauth/lib/Auth/Source/MultiAuth.php
@@ -69,6 +69,9 @@ class sspmod_multiauth_Auth_Source_MultiAuth extends SimpleSAML_Auth_Source {
 				$text = array($defaultLanguage => $source);
 			}
 
+                        if (array_key_exists('help', $info)) {
+                                $help = $info['help'];
+                        }
 			if (array_key_exists('css-class', $info)) {
 				$css_class = $info['css-class'];
 			} else {
@@ -84,6 +87,7 @@ class sspmod_multiauth_Auth_Source_MultiAuth extends SimpleSAML_Auth_Source {
 			$this->sources[] = array(
 				'source' => $source,
 				'text' => $text,
+                                'help' => $help,
 				'css_class' => $css_class,
 			);
 		}