Extract Metric into metric.go, add String() function