add reader and writer
modify clientProtocal