refactoring the bogof promotion