 			var objects:Array = columns.getObjects();
 			
 			// update transposed keys to correspond to column names
-			internalData.transposedKeys = WeaveAPI.QKeyManager.getQKeys(internalData.keyType, names);
+			internalData.transposedKeys = WeaveAPI.QKeyManager.getQKeys(internalData.transposedKeyType, names);
 			
 			// update column lookup
-			internalData.columnsArray = objects;
+			internalData.sourceColumnsArray = objects;
 			for (var i:int = 0; i < names.length; i++)
-				internalData.columnNameIndex[names[i]] = i;
+				internalData.sourceColumnNameToIndex[names[i]] = i;
 			if (columns.childListCallbacks.lastNameRemoved)
-				delete internalData.columnNameIndex[columns.childListCallbacks.lastNameRemoved];
+				delete internalData.sourceColumnNameToIndex[columns.childListCallbacks.lastNameRemoved];
 			
 			setColumnKeySources();
 		}

	
	public function containsKey(key:IQualifiedKey):Boolean
	{
		return key.keyType == internalData.keyType
			&& internalData.columnNameIndex.hasOwnProperty(key.localName);
	}
	
	private static const META_META_PROPERTY_NAMES:Array = [ColumnMetadata.TITLE, ColumnMetadata.DATA_TYPE];
	
	public function getMetadataPropertyNames():Array
	{
		if (metadataName)
			return META_META_PROPERTY_NAMES;
		
		return internalData.getMetadataPropertyNames();

	
	public function getMetadata(propertyName:String):String
	{
		// when columns change, reset cached metadata
		if (internalData.triggerCounter != columnCallbacks.triggerCounter)
		{
			internalData.triggerCounter = columnCallbacks.triggerCounter;
			internalData.sourceMetadataCache = {};
			internalData.deriveStringFromNumber = null;
		}
		
		// since this column is a transposed record, keyType is a custom value
		if (propertyName == ColumnMetadata.KEY_TYPE)
			return internalData.transposedKeyType;
		
		if (sourceMetadataName)
		{
			// metadata for transposed metadata columns
			if (propertyName == ColumnMetadata.TITLE)
				return propertyName;
			if (propertyName == ColumnMetadata.DATA_TYPE)
