Design + caching state