mode binary mode optional (binary would require platform specific line endings to be converted which is not very portable, and mostly just text will do)