Break full_report() out into its own file, since it's become apparent that it will need (a fair bit of) modification to cleanup()