use getOrFetch to fill collection when needed