refactored in preparation for change handler
change observer