fine tune change event logic