use properties instead of functions