Use Object.defineProperty for state change events on change