Multiple returns from functions, esp. with different data, always seems like a design issue to me (hard to debug, potentially confusing to use).  Is this the best choice?