fully migrate to socket.io