implement watch functionality