 		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;

	public static const PACKAGE_SHOW:String = 'package_show';
	public static const GROUP_LIST:String = 'group_list';
	public static const GROUP_SHOW:String = 'group_show';
	public static const TAG_LIST:String = 'tag_list';
	public static const TAG_SHOW:String = 'tag_show';
	public static const DATASTORE_SEARCH:String = 'datastore_search';

	{
		if (detectLinkableObjectChange(this, source.url, source.apiVersion, source.useHttpPost))
		{
			if ([PACKAGE_LIST, PACKAGE_SHOW, GROUP_LIST, GROUP_SHOW, GROUP_PACKAGE_SHOW, TAG_LIST, TAG_SHOW, DATASTORE_SEARCH].indexOf(action) >= 0)
			{
				// make CKAN API request
				_result = {};
