refactored how IO is calculted. looks more sane at first blush