simplified, no sockets