public Replica(string op_id, string repl_url, string pm_url)
        {
            this.url = repl_url;

            BinaryServerFormatterSinkProvider provider = new BinaryServerFormatterSinkProvider();

            provider.TypeFilterLevel = TypeFilterLevel.Full;
            IDictionary props = new Hashtable();

            props["name"] = "tcp_pm";
            TcpChannel channel = new TcpChannel(props, null, provider);

            channels.Add(channel);
            ChannelServices.RegisterChannel(channel, false);
            pm = (IPM)Activator.GetObject(typeof(IPM), pm_url);

            this.op        = pm.get_operator_by_id(op_id);
            this.semantics = pm.semantics();
            this.id        = getMyId();

            string start_text = "[" + op_id + " " + id + "] created!";

            Console.WriteLine(start_text);
            pm.log(start_text);

            ConnectReplicas();
        }