why all that file I/O?