return instead of throwing