 		if (action == GROUP_LIST || action == TAG_LIST)
 			return updateChildren(result as Array, function(node:CKANAction, meta:Object):void {
 				if (action == GROUP_LIST)
-					node.action = GROUP_SHOW;
+					node.action = GROUP_PACKAGE_SHOW;
 				if (action == TAG_LIST)
 					node.action = TAG_SHOW;
 				node.metadata = meta;
+				
+				// hack to support DKAN
+				if (!meta['id'] && meta['uuid'])
+					meta['id'] = meta['uuid'];
+				
 				node.params = {"id": meta['id']};
 			});
 		
-		if ((action == GROUP_SHOW || action == TAG_SHOW) && result.hasOwnProperty('packages'))
-			return updateChildren(result['packages'], function(node:CKANAction, pkg:Object):void {
+		if (result && (action == GROUP_SHOW || action == GROUP_PACKAGE_SHOW || action == TAG_SHOW))
+			return updateChildren(result as Array || result['packages'], function(node:CKANAction, pkg:Object):void {
 				if (pkg is String)
 					pkg = {"id": pkg};
 				node.action = PACKAGE_SHOW;

		if (action == TAG_LIST)
			return lang("Tags");
		
		if (action == PACKAGE_SHOW || action == GROUP_SHOW || action == TAG_SHOW)
			return metadata['display_name'] || metadata['name'] || metadata['description'] || metadata['url']
				|| (result is String ? result as String : (result['title'] || result['display_name'] || result['name']))
				|| params['id'];
		
		if (action == GET_DATASOURCE || action == DATASTORE_SEARCH)
		{
			var str:String = metadata['name'] || metadata['description'] || metadata['url'] || metadata['id'];
			
			// also display the format
			if (metadata['format'])

				if (action == PACKAGE_LIST || action == TAG_SHOW)
					node.action = PACKAGE_SHOW;
				if (action == GROUP_LIST)
					node.action = GROUP_PACKAGE_SHOW;
				if (action == TAG_LIST)
					node.action = TAG_SHOW;
				node.metadata = node.params = {"id": id};
