start of reactive functions