Add shop controller, caching, some functional tests.