diff --git a/docs/source/simplesamlphp-sp.xml b/docs/source/simplesamlphp-sp.xml
index bad8467426460a93469e07983ff40d004c4d6bb6..28539c3fe4a54030cc3aef159b4936165bb4462f 100644
--- a/docs/source/simplesamlphp-sp.xml
+++ b/docs/source/simplesamlphp-sp.xml
@@ -448,7 +448,7 @@
 
     <programlisting>require_once('SimpleSAML/Utilities.php');
 require_once('SimpleSAML/Session.php');
-require_once('SimpleSAML/XML/MetaDataStore.php');
+require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php');
 require_once('SimpleSAML/XML/SAML20/AuthnRequest.php');
 require_once('SimpleSAML/XML/SAML20/AuthnResponse.php');
 require_once('SimpleSAML/Bindings/SAML20/HTTPRedirect.php');
@@ -464,7 +464,7 @@ require_once('SimpleSAML/XHTML/Template.php');
 
 /* Load simpleSAMLphp, configuration and metadata */
 $config = SimpleSAML_Configuration::getInstance();
-$metadata = new SimpleSAML_XML_MetaDataStore($config);
+$metadata = SimpleSAML_Metadata_MetaDataStorageHandler::getMetadataHandler();
 $session = SimpleSAML_Session::getInstance();
 </programlisting>
 
diff --git a/lib/SimpleSAML/Session.php b/lib/SimpleSAML/Session.php
index 37bef3bf042b72d9a982c76b5804e6db1c45c052..6365281edbd514c9f83f4f78803eca45cc6d3853 100644
--- a/lib/SimpleSAML/Session.php
+++ b/lib/SimpleSAML/Session.php
@@ -16,7 +16,7 @@ require_once('SimpleSAML/Configuration.php');
 require_once('SimpleSAML/Utilities.php');
 require_once('SimpleSAML/Session.php');
 require_once('SimpleSAML/SessionHandler.php');
-require_once('SimpleSAML/XML/MetaDataStore.php');
+require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php');
 require_once('SimpleSAML/XML/SAML20/AuthnRequest.php');
 require_once('SimpleSAML/XML/AuthnResponse.php');
 require_once('SimpleSAML/Bindings/SAML20/HTTPRedirect.php');
diff --git a/lib/SimpleSAML/XML/MetaDataStore.php b/lib/SimpleSAML/XML/MetaDataStore.php
deleted file mode 100644
index d5ece29f2acc40434d23835edbe00ef908d4fabf..0000000000000000000000000000000000000000
--- a/lib/SimpleSAML/XML/MetaDataStore.php
+++ /dev/null
@@ -1,166 +0,0 @@
-<?php
-
-
-/**
- * SimpleSAMLphp
- *
- * PHP versions 4 and 5
- *
- * LICENSE: See the COPYING file included in this distribution.
- *
- * @author Andreas Ĺkre Solberg, UNINETT AS. <andreas.solberg@uninett.no>
- */
-
-require_once('SimpleSAML/Configuration.php');
-require_once('SimpleSAML/Utilities.php');
-
-/**
- * Configuration of SimpleSAMLphp
- */
-class SimpleSAML_XML_MetaDataStore {
-
-	private $configuration = null;
-	private $metadata = null;
-	private $hostmap = null;
-
-	function __construct(SimpleSAML_Configuration $configuration) {
-		$this->configuration = $configuration;
-	}
-
-	public function load($set) {
-		$metadata = null;
-		if (!in_array($set, array(
-			'saml20-sp-hosted', 'saml20-sp-remote','saml20-idp-hosted', 'saml20-idp-remote',
-			'shib13-sp-hosted', 'shib13-sp-remote', 'shib13-idp-hosted', 'shib13-idp-remote',
-			'openid-provider'))) {
-				throw new Exception('Trying to load illegal set of Meta data [' . $set . ']');
-		}
-		
-		$metadatasetfile = $this->configuration->getBaseDir() . '/' . 
-			$this->configuration->getValue('metadatadir') . '/' . $set . '.php';
-		
-		
-		if (!file_exists($metadatasetfile)) {
-			throw new Exception('Could not open file: ' . $metadatasetfile);
-		}
-		include($metadatasetfile);
-		
-		if (!is_array($metadata)) {
-			throw new Exception('Could not load metadata set [' . $set . '] from file: ' . $metadatasetfile);
-		}
-		foreach ($metadata AS $key => $entry) { 
-			$this->metadata[$set][$key] = $entry;
-			$this->metadata[$set][$key]['entityid'] = $key;
-			
-			if (isset($entry['host'])) {
-				$this->hostmap[$set][$entry['host']] = $key;
-			}
-			
-		}
-		/*
-		echo '<pre>';
-		print_r();
-		echo '</pre>';
-		*/
-	}
-
-	public function getMetaDataCurrentEntityID($set = 'saml20-sp-hosted') {
-	
-		if (!isset($this->metadata[$set])) {
-			$this->load($set);
-		}
-		$currenthost = $_SERVER['HTTP_HOST'];
-		
-		if(strstr($currenthost, ":")) {
-				$currenthostdecomposed = explode(":", $currenthost);
-				$currenthost = $currenthostdecomposed[0];
-		}
-		
-		if (!isset($this->hostmap[$set])) {
-			throw new Exception('No default entities defined for metadata set [' . $set . '] (host:' . $currenthost. ')');
-		}
-		if (!isset($currenthost)) {
-			throw new Exception('Could not get HTTP_HOST, in order to resolve default entity ID');
-		}
-		if (!isset($this->hostmap[$set][$currenthost])) {
-			throw new Exception('Could not find any default metadata entities in set [' . $set . '] for host [' . $currenthost . ']');
-		}
-		if (!$this->hostmap[$set][$currenthost]) throw new Exception('Could not find default metadata for current host');
-		return $this->hostmap[$set][$currenthost];
-	}
-
-	public function getMetaDataCurrent($set = 'saml20-sp-hosted') {
-		return $this->getMetaData($this->getMetaDataCurrentEntityID($set), $set);
-	}
-	
-	public function getMetaData($entityid = null, $set = 'saml20-sp-hosted') {
-		if (!isset($entityid)) {
-			return $this->getMetaDataCurrent($set);
-		}
-		
-		//echo 'find metadata for entityid [' . $entityid . '] in metadata set [' . $set . ']';
-		
-		if (!isset($this->metadata[$set])) {
-			$this->load($set);
-		}
-		if (!isset($this->metadata[$set][$entityid]) ) {
-			throw new Exception('Could not find metadata for entityid [' . $entityid . '] in metadata set [' . $set . ']');
-		}
-		return $this->metadata[$set][$entityid];
-	}
-	
-	public function getList($set = 'saml20-idp-remote') {
-		if (!isset($this->metadata[$set])) {
-			$this->load($set);
-		}
-		return $this->metadata[$set];
-	}
-	
-	
-	
-	public function getGenerated($property, $set = 'saml20-sp-hosted') {
-		
-		$baseurl = SimpleSAML_Utilities::selfURLhost() . '/' . $this->configuration->getValue('baseurlpath');
-		
-		
-		if ($set == 'saml20-sp-hosted') {
-			switch ($property) {				
-				case 'AssertionConsumerService' : 
-					return $baseurl . 'saml2/sp/AssertionConsumerService.php';
-
-				case 'SingleLogoutService' : 
-					return $baseurl . 'saml2/sp/SingleLogoutService.php';					
-			}
-		} elseif($set == 'saml20-idp-hosted') {
-			switch ($property) {				
-				case 'SingleSignOnService' : 
-					return $baseurl . 'saml2/idp/SSOService.php';
-
-				case 'SingleLogoutService' : 
-					return $baseurl . 'saml2/idp/SingleLogoutService.php';					
-			}
-		} elseif($set == 'shib13-sp-hosted') {
-			switch ($property) {				
-				case 'AssertionConsumerService' : 
-					return $baseurl . 'shib13/sp/AssertionConsumerService.php';
-			}
-		} elseif($set == 'shib13-idp-hosted') {
-			switch ($property) {				
-				case 'SingleSignOnService' : 
-					return $baseurl . 'shib13/idp/SSOService.php';			
-			}
-		} elseif($set == 'openid-provider') {
-			switch ($property) {				
-				case 'server' : 
-					return $baseurl . 'openid/provider/server.php';			
-			}
-		}
-		
-		throw new Exception('Could not generate metadata property ' . $property . ' for set ' . $set . '.');
-	}
-	
-	
-	
-}
-
-?>
\ No newline at end of file
diff --git a/lib/SimpleSAML/XML/Shib13/AuthnRequest.php b/lib/SimpleSAML/XML/Shib13/AuthnRequest.php
index a90526bb53ce42b99d2f010aff2f2d32eb648f78..053319c41271e2e084ce97816093fb33a175f231 100644
--- a/lib/SimpleSAML/XML/Shib13/AuthnRequest.php
+++ b/lib/SimpleSAML/XML/Shib13/AuthnRequest.php
@@ -12,7 +12,7 @@
  */
  
 require_once('SimpleSAML/Configuration.php');
-require_once('SimpleSAML/XML/MetaDataStore.php');
+require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php');
  
 /**
  * Configuration of SimpleSAMLphp
@@ -32,7 +32,7 @@ class SimpleSAML_XML_Shib13_AuthnRequest {
 	const PROTOCOL = 'shibboleth';
 
 
-	function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_XML_MetaDataStore $metadatastore) {
+	function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_Metadata_MetaDataStorageHandler $metadatastore) {
 		$this->configuration = $configuration;
 		$this->metadata = $metadatastore;
 		
diff --git a/lib/SimpleSAML/XML/Shib13/AuthnResponse.php b/lib/SimpleSAML/XML/Shib13/AuthnResponse.php
index 143ba3a832e50cf48b957c9c0fee60e669a32d47..4c1db92d691947853f7f97bb1273508d447d6966 100644
--- a/lib/SimpleSAML/XML/Shib13/AuthnResponse.php
+++ b/lib/SimpleSAML/XML/Shib13/AuthnResponse.php
@@ -12,7 +12,7 @@
 require_once('SimpleSAML/Configuration.php');
 require_once('SimpleSAML/Session.php');
 require_once('SimpleSAML/Utilities.php');
-require_once('SimpleSAML/XML/MetaDataStore.php');
+require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php');
 require_once('SimpleSAML/XML/AuthnResponse.php');
 
 require_once('xmlseclibs.php');
@@ -35,7 +35,7 @@ class SimpleSAML_XML_Shib13_AuthnResponse extends SimpleSAML_XML_AuthnResponse {
 	const SHIB_PROTOCOL_NS = 'urn:oasis:names:tc:SAML:1.0:protocol';
 	const SHIB_ASSERT_NS = 'urn:oasis:names:tc:SAML:1.0:assertion';
 
-	function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_XML_MetaDataStore $metadatastore) {
+	function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_Metadata_MetaDataStorageHandler $metadatastore) {
 		$this->configuration = $configuration;
 		$this->metadata = $metadatastore;
 	}
diff --git a/www/admin/metadata.php b/www/admin/metadata.php
index accec5a63b6edb665cda4141b634613746692fe8..56491ee8ce8b3d7e925c44753852ce2d1511567e 100644
--- a/www/admin/metadata.php
+++ b/www/admin/metadata.php
@@ -9,7 +9,6 @@ require_once('SimpleSAML/XHTML/Template.php');
 
 /* Load simpleSAMLphp, configuration and metadata */
 $config = SimpleSAML_Configuration::getInstance();
-//$metadata = new SimpleSAML_XML_MetaDataStore($config);
 $session = SimpleSAML_Session::getInstance();
 
 try {
diff --git a/www/auth/login-ldapmulti.php b/www/auth/login-ldapmulti.php
index a154ec10a7fb8246d91bd89e53e1e565e9a24080..0171a5c589126184dd7f1692c724466d940de26a 100644
--- a/www/auth/login-ldapmulti.php
+++ b/www/auth/login-ldapmulti.php
@@ -6,11 +6,11 @@ require_once('../../www/_include.php');
 require_once('SimpleSAML/Utilities.php');
 require_once('SimpleSAML/Session.php');
 require_once('SimpleSAML/Logger.php');
-require_once('SimpleSAML/XML/MetaDataStore.php');
+require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php');
 require_once('SimpleSAML/XHTML/Template.php');
 
 $config = SimpleSAML_Configuration::getInstance();
-$metadata = new SimpleSAML_XML_MetaDataStore($config);
+$metadata = SimpleSAML_Metadata_MetaDataStorageHandler::getMetadataHandler();
 $session = SimpleSAML_Session::getInstance();
 $logger = new SimpleSAML_Logger();
 
diff --git a/www/auth/login-radius.php b/www/auth/login-radius.php
index 50603545eec6f4bff979a34987b0bb9686846992..fb147f8bbe0858909961204723feba6624c2f495 100644
--- a/www/auth/login-radius.php
+++ b/www/auth/login-radius.php
@@ -5,11 +5,11 @@ require_once('../../www/_include.php');
 require_once('SimpleSAML/Utilities.php');
 require_once('SimpleSAML/Session.php');
 require_once('SimpleSAML/Logger.php');
-require_once('SimpleSAML/XML/MetaDataStore.php');
+require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php');
 require_once('SimpleSAML/XHTML/Template.php');
 
 $config = SimpleSAML_Configuration::getInstance();
-$metadata = new SimpleSAML_XML_MetaDataStore($config);
+$metadata = SimpleSAML_Metadata_MetaDataStorageHandler::getMetadataHandler();
 $session = SimpleSAML_Session::getInstance();
 $logger = new SimpleSAML_Logger();
 
diff --git a/www/auth/login.php b/www/auth/login.php
index 7150dee5834fa63d8e2a75abe3279c25d11a2e1b..c4e96dd680467f67d9e75ec4a2e9077f35687e57 100644
--- a/www/auth/login.php
+++ b/www/auth/login.php
@@ -6,14 +6,14 @@ require_once('../../www/_include.php');
 
 require_once('SimpleSAML/Utilities.php');
 require_once('SimpleSAML/Session.php');
-require_once('SimpleSAML/XML/MetaDataStore.php');
+require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php');
 require_once('SimpleSAML/XML/SAML20/AuthnRequest.php');
 require_once('SimpleSAML/Bindings/SAML20/HTTPRedirect.php');
 require_once('SimpleSAML/XHTML/Template.php');
 require_once('SimpleSAML/Logger.php');
 
 $config = SimpleSAML_Configuration::getInstance();
-$metadata = new SimpleSAML_XML_MetaDataStore($config);	
+$metadata = SimpleSAML_Metadata_MetaDataStorageHandler::getMetadataHandler();
 $session = SimpleSAML_Session::getInstance();
 $logger = new SimpleSAML_Logger();
 
diff --git a/www/index.php b/www/index.php
index d539266136a1e914b1996ed1732296ffb0dba11f..c7bc19e3b7118c6ad84f910dc4baf53d20b3af9e 100644
--- a/www/index.php
+++ b/www/index.php
@@ -6,7 +6,7 @@ require_once('_include.php');
 require_once('SimpleSAML/Utilities.php');
 require_once('SimpleSAML/Session.php');
 require_once('SimpleSAML/XHTML/Template.php');
-require_once('SimpleSAML/XML/MetaDataStore.php');
+require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php');
 
 $config = SimpleSAML_Configuration::getInstance();
 
diff --git a/www/shib13/sp/AssertionConsumerService.php b/www/shib13/sp/AssertionConsumerService.php
index d9c01baaa71fc3d6deee91a3f8a7d980f7155a0c..ccbaa847210c91fc5921b1d44482338de4fa7dad 100644
--- a/www/shib13/sp/AssertionConsumerService.php
+++ b/www/shib13/sp/AssertionConsumerService.php
@@ -5,7 +5,7 @@ require_once('../../_include.php');
 
 require_once('SimpleSAML/Utilities.php');
 require_once('SimpleSAML/Session.php');
-require_once('SimpleSAML/XML/MetaDataStore.php');
+require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php');
 require_once('SimpleSAML/XML/Shib13/AuthnRequest.php');
 require_once('SimpleSAML/Bindings/Shib13/HTTPPost.php');
 require_once('SimpleSAML/XHTML/Template.php');
@@ -18,7 +18,7 @@ try {
 	echo '</pre>';
 	*/
 	$config = SimpleSAML_Configuration::getInstance();
-	$metadata = new SimpleSAML_XML_MetaDataStore($config);
+	$metadata = SimpleSAML_Metadata_MetaDataStorageHandler::getMetadataHandler();
 	
 	#print_r($metadata->getMetaData('sam.feide.no'));
 #	$sr = new SimpleSAML_XML_Shib13_AuthnResponse($config, $metadata);
diff --git a/www/shib13/sp/idpdisco.php b/www/shib13/sp/idpdisco.php
index 6bbd2eb9d9b408e12e4a0055ef56000a19d71f36..6c150594e5faa9ee4e07a906f762e4962f4aa30b 100644
--- a/www/shib13/sp/idpdisco.php
+++ b/www/shib13/sp/idpdisco.php
@@ -6,10 +6,10 @@ require_once('../../_include.php');
 require_once('SimpleSAML/Utilities.php');
 require_once('SimpleSAML/Session.php');
 require_once('SimpleSAML/XHTML/Template.php');
-require_once('SimpleSAML/XML/MetaDataStore.php');
+require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php');
 
 $config = SimpleSAML_Configuration::getInstance();
-$metadata = new SimpleSAML_XML_MetaDataStore($config);
+$metadata = SimpleSAML_Metadata_MetaDataStorageHandler::getMetadataHandler();
 
 
 $session = SimpleSAML_Session::getInstance();
diff --git a/www/shib13/sp/initSSO.php b/www/shib13/sp/initSSO.php
index 90a4b4a3350c10312cc1e5d28979c07edcb79abe..106ae18f937b984d05230c83c6f7a5ed4e70ed3a 100644
--- a/www/shib13/sp/initSSO.php
+++ b/www/shib13/sp/initSSO.php
@@ -6,14 +6,14 @@ require_once('../../_include.php');
 require_once('SimpleSAML/Utilities.php');
 require_once('SimpleSAML/Session.php');
 require_once('SimpleSAML/XHTML/Template.php');
-require_once('SimpleSAML/XML/MetaDataStore.php');
+require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php');
 require_once('SimpleSAML/XML/Shib13/AuthnRequest.php');
 //require_once('SimpleSAML/XML/SAML20/AuthnResponse.php');
 //require_once('SimpleSAML/Bindings/SAML20/HTTPRedirect.php');
 //require_once('SimpleSAML/Bindings/SAML20/HTTPPost.php');
 
 $config = SimpleSAML_Configuration::getInstance();
-$metadata = new SimpleSAML_XML_MetaDataStore($config);
+$metadata = SimpleSAML_Metadata_MetaDataStorageHandler::getMetadataHandler();
 
 
 $session = SimpleSAML_Session::getInstance();