promotion function update