 	import weave.api.WeaveAPI;
 	import weave.api.core.IDisposableObject;
 	import weave.api.core.ILinkableObject;
+	import weave.api.data.IDynamicKeyFilter;
+	import weave.api.data.IQualifiedKey;
 	import weave.api.detectLinkableObjectChange;
 	import weave.api.disposeObjects;
 	import weave.api.getCallbackCollection;
 	import weave.api.primitives.IBounds2D;
-	import weave.api.registerLinkableChild;
 	import weave.api.ui.IPlotTask;
 	import weave.api.ui.IPlotter;
 	import weave.primitives.Bounds2D;

		
		private function asyncComplete():void
		{
			if (!WeaveAPI.SessionManager.linkableObjectIsBusy(_plotter))
				getCallbackCollection(this).triggerCallbacks();
		}
		
		public function setRecordKeys(keys:Array):void
		{
			_recordKeys = keys;
			asyncStart();
		}
		
		

		
		private var _bitmap:Bitmap = new Bitmap();
		private var _plotter:IPlotter = null;
		private var _keyFilter:IDynamicKeyFilter = null;
		private var _zoomBounds:ZoomBounds;
		private var _tempDataBounds:Bounds2D = new Bounds2D();
		private var _tempScreenBounds:Bounds2D = new Bounds2D();
		private var _iteration:uint = 0;
		private var _recordKeys:Array;
		private var _asyncState:Object;
		private var _pendingRecordKeys:Array;
		private var _iPendingRecordKey:uint;
		
		/*
		
		todo:
		add a way to disable the task
		
		*/
		
