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

		private var nullValues:Array = [null, "", "null", "\\N", "NaN"];
		
		// backwards compatibility
		[Deprecated(replacement="csvData")] public function set csvDataString(value:String):void { setCSVDataString(value); }
		[Deprecated(replacement="getColumnById")] public function getColumnByName(name:String):IAttributeColumn { return getColumnById(name); }
	}

		/**
		 * This will get a list of column names in the data, which are taken directly from the header row and not guaranteed to be unique.
		 */		
		public function getColumnNames():Array/*/<string>/*/
		{
			return getColumnIds().map(asString);
		}
		
		private function asString(value:Object, i:int, a:Array):Boolean
		{
			return value as String;
		}

		/**
		 * A unique list of identifiers for columns which may be a mix of Strings and Numbers, depending on the uniqueness of column names.
		 */
		public function getColumnIds():Array/*/<number|string>/*/
		{
			return columnIds.concat();
		}
