/**
         * Send a message to remote clients or servers
         */
        public void Send(Message m)
        {
            // TODO: Later, we want to perform whole lookups
            // for a list together instead of one at a time
            // which is lolz.
            // inspect message destinations, if multiple, use group_multicast else just send with p2p
            List<string> destinations = m.GetDestinationUsers ();
            List<string> destinationUris = new List<string> ();
            List<string> destinationcopy = new List<string> ();
            foreach (string destination in destinations)
            {
                //DebugInfo ("Performing lookup for {0}", destination);
                // TODO: If server returns NO SUCH USER, then bail out
                string destination_uri = m_lookupCallback (destination); // for now, assume destination is uri
                //DebugInfo ("Lookup returned {0}", destination_uri);

                destinationUris.Add (destination_uri);
                destinationcopy.Add (destination);
            }

            foreach (string uri in destinationUris)
            {
                Send (m, uri, destinationcopy[0]);
                destinationcopy.RemoveAt (0);
            }
        }