[WIP] Implement caching