#10 added report module and interface ReportWriter