Don't use rejection for normal control flow. More tests, more refactoring