refactored god class AbstractMetric by creating 5 helper classes that provide separate pieces of functionality