add caching for better performance