return, don't throw