IOChannel implementation