implement reporter (not tested)