goto fail instead of returning