let's do caching after implementing essential stuff