add wacher functions