fixed recursive watch