better return handling