some notes on file i/o