don't expose `replace_newline` to users. too much unnecessary info.