working state. now some testing, then implement commit+undo