modified socket.io