 			return super.initializationComplete && csvDataArray != null;
 		}
 		
+		/**
+		 * This gets called when callbacks are triggered.
+		 */		
 		override protected function initialize():void
 		{
-			if (csvDataString.value != null && csvDataArray == null) // if data is specified and not loaded yet
-			{
-				loadCSVData(csvDataString.value);
-			}
-			super.initialize();
-		}
-		
-		private function loadCSVData(csvData:String):void
-		{
-			this.csvDataArray = WeaveAPI.CSVParser.parseCSV(csvData);
-			if (_attributeHierarchy.value == null)
+			if (_attributeHierarchy.value == null && csvDataArray != null)
 			{
 				// loop through column names, adding indicators to hierarchy
 				var firstRow:Array = csvDataArray[0];

				var cc:ICallbackCollection = getCallbackCollection(this);
				cc.delayCallbacks();
				
				loadCSVData(String(event.result));
				
				cc.triggerCallbacks();
				cc.resumeCallbacks();
			}
		}

			{
				// if csvDataString is specified, do not use url
				url.value = null;
				csvDataArray = WeaveAPI.CSVParser.parseCSV(csvDataString.value);
			}
		}
		
