Abstracted input and output