Refactor code to implement better design principles. Added report completion