fixes #4 prevent on change to enter recursive loop (based on readon code and suggest)