 			_keyToNumericDataMapping = new Dictionary();
 			
 			//if it's string data - create list of unique strings
-			var dataType:String = getMetadata(ColumnMetadata.DATA_TYPE);
+			var dataType:String = _metadata.attribute(ColumnMetadata.DATA_TYPE);
 			if (data[0] is String || (dataType && dataType != DataTypes.NUMBER))
 			{
 				if (!dataType)

					_uniqueSecondaryKeys.push(keyB);
				if (! _keyToNumericDataMapping[qkeyA])
					_keyToNumericDataMapping[qkeyA] = new Dictionary();
				if (_dataType == String)
				{
					var iString:int = _uniqueStrings.indexOf(dataObject);
					_keyToNumericDataMapping[qkeyA][keyB] = iString;
					_keyToNumericDataMappingAB[qkeyAB] = iString;
				}
				else
				{
					var number:Number = StandardLib.asNumber(dataObject);
					_keyToNumericDataMapping[qkeyA][keyB] = number;
					_keyToNumericDataMappingAB[qkeyAB] = number;
					
					_minNumber = isNaN(_minNumber) ? number : Math.min(_minNumber, number);
					_maxNumber = isNaN(_maxNumber) ? number : Math.max(_maxNumber, number);
				}
			}
			

				_maxNumber = NaN;
			}
			_metadata.attribute(ColumnMetadata.DATA_TYPE).setChildren(dataType);
			_dataType = dataType == DataTypes.STRING ? String : Number;
			
			// save a mapping from keys to data
			for (index = 0; index < keysA.length; index++)
