added revert callbacks, direction option is not case sensitive