encapsulation: socket-client