Move promotion-related functions to seperate class