Add caching and dynamic attributes