 			// This will be cleaned up automatically when the column is disposed.
 			var newColumn:IAttributeColumn = columns.childListCallbacks.lastObjectAdded as IAttributeColumn;
 			if (newColumn)
-				registerLinkableChild(spatialCallbacks, WeaveAPI.StatisticsCache.getColumnStatistics(newColumn));
+			{
+				_stats[newColumn] = WeaveAPI.StatisticsCache.getColumnStatistics(newColumn);
+				registerLinkableChild(spatialCallbacks, _stats[newColumn]);
+			}
 			
 			_columns = columns.getObjects();
 			

			{
				var column:IAttributeColumn = _columns[i];
				if (normalize.value)
					output[i] = WeaveAPI.StatisticsCache.getColumnStatistics(column).getNorm(recordKey);
				else
					output[i] = column.getValueFromKey(recordKey, Number);
			}

		public const curvedLines:LinkableBoolean = registerLinkableChild(this, new LinkableBoolean(false));
		
		private var _columns:Array = [];
		private var _stats:Dictionary = new Dictionary(true);
		private static const tempBoundsArray:Array = []; // Array of reusable Bounds2D objects
		private static const tempPoint:Point = new Point(); // reusable Point object
		
