 		{
 			//cache data from AttributeColumnCache
 			var output:Array = [];
-			var cache:Dictionary = d2d_dataSource_metadataHash_weakRef.dictionary;
 			var dataSource:*;
-			for (dataSource in cache)
+			var dataSources:Array = d2d_dataSource_metadataHash_column.primaryKeys();
+			for each (dataSource in dataSources)
 			{
 				var dataSourceName:String = WeaveAPI.globalHashMap.getName(dataSource);
 				

				.then(function(_:*):* {
					// request data from every column
					var column:IAttributeColumn;
					for each (column in getLinkableDescendants(WeaveAPI.globalHashMap, IAttributeColumn))
					{
						// simply requesting the keys will cause the data to be requested
						if (column.keys.length)

				if (!dataSourceName)
					continue;
				
				var metadataHashes:Array = d2d_dataSource_metadataHash_column.secondaryKeys(dataSource);
				for each (var metadataHash:String in metadataHashes)
				{
					var column:IAttributeColumn = d2d_dataSource_metadataHash_column.get(dataSource, metadataHash);
					if (!column || objectWasDisposed(column))
						continue;
					var metadata:Object = ColumnMetadata.getAllMetadata(column);
