Add MetricAttribute

Add MetricAttribute and re-design metric class hierachy