better observer for model change event