I think what we should do here is have sockets wrapper code for module using sockets. That can manage the bijection. That means we write the code just once, and we still get simple interfaces. We then only have a single thing bound on the other side (as in, in the module using sockets)