refactor
refactor
do not print , but store  output string
refactor
refactor
refactor
do not print , but store  output string
refactor