working and caching