 			_columns = columns.getObjects(IAttributeColumn);
 			var sum:Number = 0;
 			
+			randomArrayIndexMap = 	new Dictionary(true);				
+			var keyMaxMap:Dictionary = new Dictionary(true);
+			var keyMinMap:Dictionary = new Dictionary(true);
+			keyNormMap = 			new Dictionary(true);
+			keyGlobalNormMap = 		new Dictionary(true);
+			keyNumberMap = 			new Dictionary(true);
+			columnTitleMap = 		new Dictionary(true);
+			
 			if (_columns.length > 0) 
 			{
 				setKeySource(_columns[0]);
 			
-				randomArrayIndexMap = 	new Dictionary(true);				
-				keyMaxMap = 			new Dictionary(true);
-				keyMinMap = 			new Dictionary(true);
-				keyNormMap = 			new Dictionary(true);
-				keyGlobalNormMap = 		new Dictionary(true);
-				keyNumberMap = 			new Dictionary(true);
-				columnTitleMap = 		new Dictionary(true);
-				
 				for each( var key:IQualifiedKey in keySet.keys)
 				{					
 					randomArrayIndexMap[key] = i ;										

			setNewRandomJitterColumn();		
			iterations.value = 50;
			recordsPerDraw = 1;
			init()
		}		
		
		private function init():void
		{
			algorithms[RANDOM_LAYOUT] = RandomLayoutAlgorithm;
			algorithms[GREEDY_LAYOUT] = GreedyLayoutAlgorithm;
			algorithms[NEAREST_NEIGHBOR] = NearestNeighborLayoutAlgorithm;
			algorithms[INCREMENTAL_LAYOUT] = IncrementalLayoutAlgorithm;
			algorithms[BRUTE_FORCE] = BruteForceLayoutAlgorithm;
		}
		
		public const columns:LinkableHashMap = registerSpatialProperty(new LinkableHashMap(IAttributeColumn), handleColumnsChange);

		private var keyColorMap:Dictionary;
		private var keyNormMap:Dictionary;
		private var keyGlobalNormMap:Dictionary;
		private var columnTitleMap:Dictionary;
		
		private const _currentScreenBounds:Bounds2D = new Bounds2D();
