update the Connection/Request/Response/Socket, make abstract data type for ISocket, IRequest, IResponse