don't read entire files into memory