added promotion logic