added protocol reader / writer