add caching on search