refactoring, command pattern
undo/redo for the win. i think this is really coming together.