add reactive functions