broke out reporting into its own function