refactoring ChangeListener for options