started rewrite: basic click handling
undo feature
multi-level undo