fix onChangeListeners