diff --git a/lib/SimpleSAML/Metadata/SAMLBuilder.php b/lib/SimpleSAML/Metadata/SAMLBuilder.php
index 8484c595d791039d8263b8826eff5f70fad73ccc..735f4d590ff27a01831748765d4fc1ee08936fcd 100644
--- a/lib/SimpleSAML/Metadata/SAMLBuilder.php
+++ b/lib/SimpleSAML/Metadata/SAMLBuilder.php
@@ -39,7 +39,9 @@ class SimpleSAML_Metadata_SAMLBuilder {
 		$this->maxDuration = $maxDuration;
 
 		$this->document = new DOMDocument();
+		
 		$this->entityDescriptor = $this->createElement('EntityDescriptor');
+#		$this->entityDescriptor->setAttribute('xmlns:xml', 'http://www.w3.org/XML/1998/namespace');
 		$this->entityDescriptor->setAttribute('entityID', $entityId);
 		
 		$this->document->appendChild($this->entityDescriptor);
@@ -228,9 +230,9 @@ class SimpleSAML_Metadata_SAMLBuilder {
 		$e->setAttribute('protocolSupportEnumeration', 'urn:oasis:names:tc:SAML:2.0:protocol');
 		
 		
-		$this->addExtensions($metadata);
+#		$this->addExtensions($metadata);
 
-		$this->addCertificate($e, $metadata);
+#		$this->addCertificate($e, $metadata);
 
 		if (array_key_exists('SingleLogoutService', $metadata)) {
 			$t = $this->createElement('SingleLogoutService');
@@ -258,7 +260,8 @@ class SimpleSAML_Metadata_SAMLBuilder {
 			$e->appendChild($t);
 		}
 
-		if (array_key_exists('name', $metadata) || array_key_exists('attributes', $metadata)) {
+
+		if ( array_key_exists('name', $metadata) || array_key_exists('attributes', $metadata)) {
 			/**
 			 * Add an AttributeConsumingService element with information as name and description and list
 			 * of requested attributes
@@ -308,7 +311,7 @@ class SimpleSAML_Metadata_SAMLBuilder {
 
 		$this->entityDescriptor->appendChild($e);
 		
-		$this->addOrganizationInfo($metadata);
+#		$this->addOrganizationInfo($metadata);
 		
 		if (array_key_exists('contacts', $metadata) && is_array($metadata['contacts']) ) {
 			foreach($metadata['contacts'] AS $contact) {
@@ -349,9 +352,9 @@ class SimpleSAML_Metadata_SAMLBuilder {
 			$e->setAttribute('WantAuthnRequestSigned', 'true');
 		}
 		
-		$this->addExtensions($metadata);
+#		$this->addExtensions($metadata);
 
-		$this->addCertificate($e, $metadata);
+#		$this->addCertificate($e, $metadata);
 
 		if (array_key_exists('SingleLogoutService', $metadata)) {
 			$t = $this->createElement('SingleLogoutService');
@@ -380,7 +383,7 @@ class SimpleSAML_Metadata_SAMLBuilder {
 		
 		$this->entityDescriptor->appendChild($e);
 		
-		$this->addOrganizationInfo($metadata);
+#		$this->addOrganizationInfo($metadata);
 		
 		if (array_key_exists('contacts', $metadata) && is_array($metadata['contacts']) ) {
 			foreach($metadata['contacts'] AS $contact) {
@@ -415,7 +418,7 @@ class SimpleSAML_Metadata_SAMLBuilder {
 		$e = $this->createElement('SPSSODescriptor');
 		$e->setAttribute('protocolSupportEnumeration', 'urn:oasis:names:tc:SAML:1.1:protocol');
 
-		$this->addCertificate($e, $metadata);
+#		$this->addCertificate($e, $metadata);
 
 		if (array_key_exists('NameIDFormat', $metadata)) {
 			$t = $this->createElement('NameIDFormat');
@@ -446,7 +449,7 @@ class SimpleSAML_Metadata_SAMLBuilder {
 		$e = $this->createElement('IDPSSODescriptor');
 		$e->setAttribute('protocolSupportEnumeration', 'urn:oasis:names:tc:SAML:1.1:protocol');
 
-		$this->addCertificate($e, $metadata);
+#		$this->addCertificate($e, $metadata);
 
 		if (array_key_exists('NameIDFormat', $metadata)) {
 			$t = $this->createElement('NameIDFormat');
diff --git a/lib/SimpleSAML/Metadata/SAMLParser.php b/lib/SimpleSAML/Metadata/SAMLParser.php
index dfcd11dddcc3788fe455046e4d42455130f906f9..9f3294f310bb5aa8c08277e48877735a88ba0105 100644
--- a/lib/SimpleSAML/Metadata/SAMLParser.php
+++ b/lib/SimpleSAML/Metadata/SAMLParser.php
@@ -618,6 +618,9 @@ class SimpleSAML_Metadata_SAMLParser {
 			$ret['NameIDFormat'] = $spd['nameIDFormats'][0];
 		}
 
+		if (array_key_exists('attributes', $spd)) {
+			$ret['attributes'] = $spd['attributes'];
+		}
 
 		/* Add certificate data. Only the first valid certificate will be added. */
 		foreach($spd['keys'] as $key) {
@@ -818,6 +821,13 @@ class SimpleSAML_Metadata_SAMLParser {
 			$sp['assertionConsumerServices'][] = self::parseAssertionConsumerService($child);
 		}
 
+		/* Find all the attributes and SP name... */
+		#$sp['attributes'] = array();
+		$attcs = SimpleSAML_Utilities::getDOMChildren($element, 'AttributeConsumingService', '@md');
+		if (count($attcs) > 0) {
+			self::parseAttributeConsumerService($attcs[0], &$sp);
+		}
+		
 
 		$this->spDescriptors[] = $sp;
 	}
@@ -973,6 +983,37 @@ class SimpleSAML_Metadata_SAMLParser {
 	}
 
 
+	/**
+	 * This function parses AttributeConsumerService elements.
+	 */
+	private static function parseAttributeConsumerService($element, &$sp) {
+		assert('$element instanceof DOMElement');
+		assert('is_array($sp)');
+				
+		$elements = SimpleSAML_Utilities::getDOMChildren($element, 'ServiceName', '@md');
+		foreach($elements AS $child) {
+			$language = $child->getAttributeNS('http://www.w3.org/XML/1998/namespace', 'lang');
+			if(empty($language)) $language = 'en';
+			$sp['name'][$language] = SimpleSAML_Utilities::getDOMText($child);
+		}
+		
+		$elements = SimpleSAML_Utilities::getDOMChildren($element, 'ServiceDescription', '@md');
+		foreach($elements AS $child) {
+			$language = $child->getAttributeNS('http://www.w3.org/XML/1998/namespace', 'lang');
+			if(empty($language)) $language = 'en';
+			$sp['description'][$language] = SimpleSAML_Utilities::getDOMText($child);
+		}
+		
+		$elements = SimpleSAML_Utilities::getDOMChildren($element, 'RequestedAttribute', '@md');
+		foreach($elements AS $child) {
+			$attrname = $child->getAttribute('Name');
+			if (!array_key_exists('attributes', $sp)) $sp['attributes'] = array();
+			$sp['attributes'][] = $attrname;
+		}	
+
+	}
+
+
 	/**
 	 * This function parses SingleLogoutService elements.
 	 *
diff --git a/modules/metarefresh/hooks/hook_cron.php b/modules/metarefresh/hooks/hook_cron.php
index 4065ff43c55473d9c61c549efd84a68674cd63a7..a80a5551e3fb9099bb338a0e1e37f2b91323153a 100644
--- a/modules/metarefresh/hooks/hook_cron.php
+++ b/modules/metarefresh/hooks/hook_cron.php
@@ -23,10 +23,11 @@ function metarefresh_hook_cron(&$croninfo) {
 			if (!in_array($croninfo['tag'], $set['cron'])) continue;
 	
 			SimpleSAML_Logger::info('cron [metarefresh]: Executing set [' . $setkey . ']');
-	
-			$maxcache = NULL; if (array_key_exists('maxcache', $set)) $maxcache = $set['maxcache'];
-			$maxduration = NULL; if (array_key_exists('maxduration', $set)) $maxcache = $set['maxduration'];
-			$metaloader = new sspmod_metarefresh_MetaLoader($maxcache, $maxduration);		
+				
+			$expire = NULL;
+			if (array_key_exists('expireAfter', $set)) $expire = time() + $set['expireAfter'];
+			
+			$metaloader = new sspmod_metarefresh_MetaLoader($expire);		
 			
 			foreach($set['sources'] AS $source) {
 				SimpleSAML_Logger::debug('cron [metarefresh]: In set [' . $setkey . '] loading source ['  . $source['src'] . ']');
diff --git a/modules/metarefresh/lib/MetaLoader.php b/modules/metarefresh/lib/MetaLoader.php
index f8573243464056789809a58b1dd65f194813ba71..26067a7d8223230994b5d8aa08959e09a973b94c 100644
--- a/modules/metarefresh/lib/MetaLoader.php
+++ b/modules/metarefresh/lib/MetaLoader.php
@@ -9,8 +9,7 @@ class sspmod_metarefresh_MetaLoader {
 
 	private $metadata;
 
-	private $maxcache;
-	private $maxduration;
+	private $expire;
 
 	/**
 	 * Constructor
@@ -18,9 +17,8 @@ class sspmod_metarefresh_MetaLoader {
 	 * @param array $sources 	Sources...
 	 * @param 
 	 */
-	public function __construct($maxcache = NULL, $maxduration = NULL) {
-		$this->maxcache = $maxcache;
-		$this->maxduration = $maxduration;
+	public function __construct($expire = NULL) {
+		$this->expire = $expire;
 		
 		$this->metadata = array();
 	}
@@ -41,7 +39,7 @@ class sspmod_metarefresh_MetaLoader {
 					continue;
 				}
 			}
-	
+			
 			// TODO: $ca is always null
 			if($ca !== NULL) {
 				if(!$entity->validateCA($ca)) {
@@ -52,12 +50,10 @@ class sspmod_metarefresh_MetaLoader {
 			$template = NULL;
 			if (array_key_exists('template', $source)) $template = $source['template'];
 			
-			$expireDuration = time() + min($this->maxcache, $this->maxduration);
-	
-			$this->addMetadata($source['src'], $entity->getMetadata1xSP(), 'shib13-sp-remote', $template, $expireDuration);
-			$this->addMetadata($source['src'], $entity->getMetadata1xIdP(), 'shib13-idp-remote', $template, $expireDuration);
-			$this->addMetadata($source['src'], $entity->getMetadata20SP(), 'saml20-sp-remote', $template, $expireDuration);
-			$this->addMetadata($source['src'], $entity->getMetadata20IdP(), 'saml20-idp-remote', $template, $expireDuration);
+			$this->addMetadata($source['src'], $entity->getMetadata1xSP(), 'shib13-sp-remote', $template);
+			$this->addMetadata($source['src'], $entity->getMetadata1xIdP(), 'shib13-idp-remote', $template);
+			$this->addMetadata($source['src'], $entity->getMetadata20SP(), 'saml20-sp-remote', $template);
+			$this->addMetadata($source['src'], $entity->getMetadata20IdP(), 'saml20-idp-remote', $template);
 		}
 	}
 
@@ -100,7 +96,7 @@ class sspmod_metarefresh_MetaLoader {
 	 * @param $metadata The metadata.
 	 * @param $type The metadata type.
 	 */
-	private function addMetadata($filename, $metadata, $type, $template = NULL, $expireDuration) {
+	private function addMetadata($filename, $metadata, $type, $template = NULL) {
 	
 		if($metadata === NULL) {
 			return;
@@ -118,12 +114,23 @@ class sspmod_metarefresh_MetaLoader {
 			$this->metadata[$type] = array();
 		}
 		
-		if (!array_key_exists('expire', $metadata)) {
-			$metadata['expire'] = $expireDuration;
-		} else {
-			if ($expireDuration < $metadata['expire'])
-				$metadata['expire'] = $expireDuration;				
+		// If expire is defined in constructor...
+		if (!empty($this->expire)) {
+			
+			// If expire is already in metadata
+			if (array_key_exists('expire', $metadata)) {
+			
+				// Override metadata expire with more restrictive global config-
+				if ($this->expire < $metadata['expire'])
+					$metadata['expire'] = $this->expire;		
+					
+			// If expire is not already in metadata use global config
+			} else {
+				$metadata['expire'] = $this->expire;			
+			}
 		}
+		
+
 	
 		$this->metadata[$type][] = array('filename' => $filename, 'metadata' => $metadata);
 	}