Make use of caching properties instead of implementing similar functionality in properties which need caching