Refactoring and added the reporter classes