use a struct to hold cache items instead of just a string