Clean up a bit, start to factor the IO types into their own classes