added more on I/O