Abstracted IO functionality to allow user more control over input data