watch utility for component