added property caching