 				{
 					// if we get here it means the plotter draw function triggered callbacks
 					// and we need to restart the async task.
-					asyncInit();
-					if (shouldBeRendered())
+					if (asyncInit())
 						return asyncIterate(stopTime);
 					else
 						return 1;

				_pendingKeys = null;
				_recordKeys = null;
			}
		}
		
		private function asyncIterate(stopTime:int):Number

			}
		}
		
		/**
		 * @return true if shouldBeRendered() returns true.
		 */
		private function asyncInit():Boolean
		{
			var shouldRender:Boolean = shouldBeRendered();
			if (_delayInit)
			{
				_pendingInit = true;
				return shouldRender;
			}
			_pendingInit = false;
			
			_progress = 0;
			_iteration = 0;
			_iPendingKey = 0;
			if (shouldRender)
			{
				_pendingKeys = _plotter.filteredKeySet.keys;
				_recordKeys = [];
