would it be better to return failure instead?