always read in binary mode