add monitor function