Cleanroom

This is not the nicest way to do clean up. It's not very DRY in some places and could really do with a refactor if we move to the Service/Provider as classes model. For now, with how the Service class (etc) is structured, this is about as good as I can do, I think
I'll re-run the tests to see the coverage you missed, but do you have something for the case where the service raises an exception, etc.?