added abstractMetric class