current progress, need to add revert functionality sometimes