Polygons (regtangles, lines, and polylines) are stored as a series of points, from which lines are drawn. "Erasing" a segment in whole or in part is thus calculable, although depending on exactly how the "M" point is treated, it may also require separating points into a new path object, rather than solely editing the existing object. Circles and ovals are stored as a series of points and Bézier control points (one point, two control points, one point, etc.); erasing this would be more complicated, but similar in concept to erasing parts of a polygon. The Bézier curves in the circles and ovals are quadratic. Freehand drawings are stored as an alternating series of points and Bézier control points (one point, one control point, one point, etc.); erasing this would in theory be similar to erasing parts of a circle or oval, but because the lengths of each curve are so short, most erasing operations would delete the entire segment, rather than splitting it. The Bézier curves in the freehand drawings are cubic. Of course, none of this can happen unless _path becomes an editable property. Even then, we'd probably also need createObj to support paths as well, depending on how "M" points on the _path are handled.