added IoWorker interface that requires read and write to be satisfied