Now has some caching functionality.