3rd attempt at cached_property