decouple read input/print output from eval