don't use exit; return