Argh. You're absolutely right. I can't think of a better way to handle this than what you're doing, so I think the key then is to make sure you let errors propagate up.