broke io::read/write out into non-buffering and buffering solutions