implement promotion