add filter to controller; refactor $watch callback