use defineProperties to create getters and setters