finished incorporating all functionality from revert