Don't use abort, use fail_with