Add functional tests
Add caching to store