 				
 				if (keySet ? keySet.containsKey(key) : plotter.filteredKeySet.containsKey(key))
 				{
-					point.x = plotter.dataX.getValueFromKey(key, Number);
-					point.y = plotter.dataY.getValueFromKey(key, Number);
+					tempPoint.x = plotter.dataX.getValueFromKey(key, Number);
+					tempPoint.y = plotter.dataY.getValueFromKey(key, Number);
+					
+					if (isFinite(tempPoint.x) && isFinite(tempPoint.y))
+						task.dataBounds.projectPointTo(tempPoint, task.screenBounds);
 				}
 				else
 				{
-					point.x = point.y = NaN;
+					tempPoint.x = tempPoint.y = NaN;
 				}
-				
-				if (isFinite(point.x) && isFinite(point.y))
-					task.dataBounds.projectPointTo(point, task.screenBounds);
 				
 				// if group differs from previous group, use moveTo()
 				var newGroup:Number = plotter.group.getValueFromKey(key, Number);
 				if (ObjectUtil.numericCompare(group, newGroup) != 0)
-					handlePoint = graphics.moveTo;
+					renderer.newLine();
 				group = newGroup;
 				
-				if (isFinite(point.x) && isFinite(point.y))
-				{
-					handlePoint(point.x, point.y);
-					handlePoint = graphics.lineTo;
-				}
-				else
-					handlePoint = graphics.moveTo;
+				renderer.addPoint(tempPoint.x, tempPoint.y, plotter.lineStyle.getLineStyleParams(key));
 			}
 		}
 		catch (e:Error)

	}
}

import flash.display.Graphics;
import flash.display.Shape;
import flash.geom.Point;

		this.plotter = plotter;
		this.task = task;
		this.unfilteredKeySet = unfilteredKeySet;
		this.renderer = new AsyncLineRenderer();
		
		if ((task as PlotTask).taskType != PlotTask.TASK_TYPE_SUBSET)
			this.keySet = newDisposableChild(plotter, KeySet);
	}
	
	public var renderer:AsyncLineRenderer;
	public var plotter:LineChartPlotter;
	public var task:IPlotTask;
	public var unfilteredKeySet:IKeySet;
	public var keys:Array;
	public var keyIndex:Number;
	public var keySet:KeySet;
	public var group:Number;
	
	private static const tempPoint:Point = new Point();
	
	public function iterate():Number
	{
		if (task.iteration == 0)
		{
			renderer.reset();
			if (keySet)
			{
				keySet.clearKeys();
