Initial groundwork for allowing feats to be affected by the undo option
completed refactor and undo functionality