Using property decorators and caching instead of explicit "setup" methods