I think the latter would help a lot with error handling in particular, not to mention defining protocols.