add cached_property helper
work towards a smart node object