Added SocketListener abstraction
Added client part