implement custom reporter