refactored: extract 'onChange -> unbind()'