working through I/O