val -> def metricFactory