add caching and overlay