class ReporterSetup {

	public static List<ReporterSetup> fromConfiguration(final Configuration configuration, @Nullable final PluginManager pluginManager) {
		String includedReportersString = configuration.getString(MetricOptions.REPORTERS_LIST, "");

		Set<String> namedReporters = findEnabledReportersInConfiguration(configuration, includedReportersString);

		if (namedReporters.isEmpty()) {
			return Collections.emptyList();
		}

		final List<Tuple2<String, Configuration>> reporterConfigurations = loadReporterConfigurations(configuration, namedReporters);

		final Map<String, MetricReporterFactory> reporterFactories = loadAvailableReporterFactories(pluginManager);

		return setupReporters(reporterFactories, reporterConfigurations);
	}

	public  ReporterSetup(final String name, final MetricConfig configuration, MetricReporter reporter);

}