Reporting refactor

Replaces #16