changing the execution model to include IO