adding caching back for speed