First draft, just abstract sockets, no request consideration