Added fetch, which will try cached version first, then run and cache