New TODO: Split the IInputOutput interface