add shouldCache paramater