io_stack is now processed separately from state_stack