diff --git a/modules/metarefresh/hooks/hook_cron.php b/modules/metarefresh/hooks/hook_cron.php
index d0a5ac514bb659be968a28772b4e5680d791a02a..375cdf744cace027e38ddfe5818c70c7f97be79e 100644
--- a/modules/metarefresh/hooks/hook_cron.php
+++ b/modules/metarefresh/hooks/hook_cron.php
@@ -14,31 +14,38 @@ function metarefresh_hook_cron(&$croninfo) {
 	try {
 		$config = SimpleSAML_Configuration::getInstance();
 		$mconfig = SimpleSAML_Configuration::getConfig('config-metarefresh.php');
-		
-		$sets = $mconfig->getValue('sets');
-		if (count($sets) < 1) return; 
-	
+
+		$sets = $mconfig->getConfigList('sets');
+
 		foreach ($sets AS $setkey => $set) {
 			// Only process sets where cron matches the current cron tag.
-			if (!in_array($croninfo['tag'], $set['cron'])) continue;
-	
+			$cronTags = $set->getArray('cron');
+			if (!in_array($croninfo['tag'], $cronTags)) continue;
+
 			SimpleSAML_Logger::info('cron [metarefresh]: Executing set [' . $setkey . ']');
-				
-			$expire = NULL;
-			if (array_key_exists('expireAfter', $set)) $expire = time() + $set['expireAfter'];
-			
-			$metaloader = new sspmod_metarefresh_MetaLoader($expire);		
-			
-			foreach($set['sources'] AS $source) {
+
+			$expireAfter = $set->getInteger('expireAfter', NULL);
+			if ($expireAfter !== NULL) {
+				$expire = time() + $expireAfter;
+			} else {
+				$expire = NULL;
+			}
+
+			$metaloader = new sspmod_metarefresh_MetaLoader($expire);
+
+			foreach($set->getArray('sources') AS $source) {
 				SimpleSAML_Logger::debug('cron [metarefresh]: In set [' . $setkey . '] loading source ['  . $source['src'] . ']');
 				$metaloader->loadSource($source);
 			}
-			$metaloader->writeMetadataFiles($config->resolvePath($set['outputDir']));
+
+			$outputDir = $set->getString('outputDir');
+			$outputDir = $config->resolvePath($outputDir);
+
+			$metaloader->writeMetadataFiles($outputDir);
 		}
-	
+
 	} catch (Exception $e) {
 		$croninfo['summary'][] = 'Error during metarefresh: ' . $e->getMessage();
 	}
-	
 }
 ?>
\ No newline at end of file