Don't use `fail!()` for error handling