add property caching