functionality working, going ahead with undo/redo changes