now add_to_cache has more responsibilities. but still doesn't work