Add cached_property decorator