lots of i/o changes