add callback & prepare functions to metricvalue defn