abstracted parts of IO to common