more flexibility with I/O files