removing dependency on socket.io