 		else
 		{
 			var cmd:String = 'api/' + source.apiVersion.value + '/rest/' + action.split('_')[0];
-			if (params)
+			if (params && params.hasOwnProperty('id'))
 				cmd += '/' + params['id'];
 			url = URLUtil.getFullURL(url, cmd);
 			request = new URLRequest(url);

		{
			var list:Array = [];
			if (source.showPackages.value)
				list.push(PACKAGE_LIST);
			if (source.showGroups.value)
				list.push(GROUP_LIST);
			if (source.showTags.value)
				list.push(TAG_LIST);
			return updateChildren(list, function(node:CKANAction, action:String):void {
				node.action = action;
				node.metadata = node.params = null;
			});
		}
		
		// handle all situations where result is just an array of IDs
		if (action == PACKAGE_LIST || action == GROUP_LIST || action == TAG_LIST || (action == TAG_SHOW && !apiVersion3))
			return updateChildren(result as Array, function(node:CKANAction, id:String):void {
				if (action == PACKAGE_LIST)
					node.action = PACKAGE_SHOW;
				if (action == GROUP_LIST)
					node.action = GROUP_SHOW;
				if (action == TAG_LIST)
					node.action = TAG_SHOW;
				if (action == TAG_SHOW)
					node.action = PACKAGE_SHOW;
				node.metadata = node.params = {"id": id};
			});
		
		if ((action == GROUP_SHOW || action == TAG_SHOW) && result.hasOwnProperty('packages'))

			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'];
		
