Moving to an exception based result system so that error messages can pass down properly