refactor the one promotion rules