discussion of return types