recursive watch works