A common framework for building tools that manipulate things in 2D