why do we need a new IO here? can't we do `STDOUT.puts`?