move MetricsUploader into its own dir and create base class