single input test
refactor printer
multiple input test
add promotion function