 		}
 		
 		public const keyType:LinkableString = Weave.linkableChild(this, LinkableString, updateKeys);
-		public const keyColName:LinkableString = Weave.linkableChild(this, LinkableString, updateKeys);
+		public const keyColumn:LinkableVariable = Weave.linkableChild(this, new LinkableVariable(null, verifyKeyColumnId), updateKeys);
+		private function verifyKeyColumnId(value:Object):Boolean
+		{
+			return value is Number || value is String || value == null;
+		}
 		
 		public const metadata:LinkableVariable = Weave.linkableChild(this, new LinkableVariable(null, verifyMetadata));
 		private function verifyMetadata(value:Object):Boolean

		 * Convenience function for setting session state of csvData.
		 * @param rows
		 */
		public function setCSVData(rows:Array):void
		{
			if (!verifyRows(rows))
				throw new Error("Invalid data format. Expecting nested Arrays.");
			csvData.setSessionState(rows);
		}
		
		public function getCSVData():Array
		{
			return csvData.getSessionState() as Array;
		}

		private var keysArray:Array;
		private var keysCallbacks:ICallbackCollection = Weave.linkableChild(this, CallbackCollection);
		
		protected function handleParsedRows(rows:/*/string[][]/*/Array):void
		{
			if (!rows)
				rows = [];
