half way through the exception refactoring