less dependence on exceptions as return value