Remove dependency between MetricsContext & MetricsConfig
move metrics data provider to separate class & interface
hide object members for interfaces