reworking sockets again, lets all read the docs together and not repeat this;