refactoring: use $watch instead of save fn