fetch the metric data if it has been requested but hasn't been fetched yet also modify some of our components to use that method