route through reporter
split Reporter in future-public iface and current necessity

factor out some duplicated code, remove enum