- refactor code, use macro for property getter/setter