Version 3, with sockets