 				
 				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)

		{
			sortedUnfilteredKeys.setColumnKeySources([group, order, dataX, dataY]);
			setSingleKeySource(sortedUnfilteredKeys);
			
			// temporary solution until lineStyle is given record keys
			var sm:SessionManager = WeaveAPI.SessionManager as SessionManager;
			var ls:SolidLineStyle = lineStyle;
			for each (var adc:AlwaysDefinedColumn in [ls.alpha,ls.caps,ls.color,ls.joints,ls.miterLimit,ls.pixelHinting,ls.scaleMode,ls.weight])
				sm.excludeLinkableChildFromSessionState(adc, adc.internalDynamicColumn);
		}
		
		public function getSelectableAttributeNames():Array

	}
}

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