Split reporting client into its own module