impr: track pencil actions for undo
impl: shape strategy