socket.io o is too nodey for our purposes