PLA-1628 Refactor Special Promote

Could we catch errors another way?