changed HandleChanged to protected virtual