add cache
work on cache