2nd attempt at cached_property