refactoring to do proper observing during save