use watchCollection for better performance