refactor the reporting to allow it to be overridden in the future