Further work on return types and exceptions