Split up the IO into different files, still making sure that they all match correctly