refactor the data collector to include cache information