 			if (url.value)
 			{
 				// when using url, we don't want to set session state of csvData
-				parsedRows = asyncParser.parseResult;
+				handleParsedRows(asyncParser.parseResult);
 			}
 			else
 			{

				reportError('Result from servlet is not a two-dimensional Array');
				return;
			}
			parsedRows = data;
			getCallbackCollection(this).triggerCallbacks();
		}
		private function handleServletError(event:FaultEvent, sessionState:Object):void

				return parsedRows[0].concat();
			return [];
		}

		/**
		 * 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
		{
			return columnIds ? columnIds.concat() : [];
		}
		
		private function getAttrTagFromColumnId(id:Object):XML
		{
			if (!parsedRows)
				return null;
			var attr:XML = <attribute keyType={ keyType.value || DataTypes.STRING }/>;
			if (typeof id == 'number')
			{
				attr['@title'] = parsedRows[0] ? parsedRows[0][id] : '';
				attr['@csvColumnIndex'] = id;
			}
			else
			{
				attr['@title'] = id;
				attr['@csvColumn'] = id;
			}
			return attr;
		}
		
		/**
		 * This function will get a column by name or index.
		 * @param columnNameOrIndex The name or index of the CSV column to get.
		 * @return The column.
		 */		
		public function getColumnById(columnNameOrIndex:Object):IAttributeColumn
		{
			var sourceOwner:ILinkableHashMap = getLinkableOwner(this) as ILinkableHashMap;
			if (!sourceOwner)
				return null;
			
			_reusableReference.dataSourceName.value = sourceOwner.getName(this);
			_reusableReference.hierarchyPath.value = getAttrTagFromColumnId(columnNameOrIndex);
			return WeaveAPI.AttributeColumnCache.getColumn(_reusableReference);
		}
		
