def __init__(self, dev, di, do):
        self.data_in = di
        self.data_out = do
        self.dev = dev
        self._monitor = ExecutionMonitor(dev, functools.partial(CDPServer._evt_stopped, self))
        self.__dispatch_setup()
        self._register_model = model_registers(dev)
        self._register_model.accessor = functools.partial(get_data_value, mroot=self._register_model)
        self._memory_model = model_memory(dev)
        self._memory_model.accessor = functools.partial(get_data_value, mroot=self._register_model)
        self._vt = Var_Tracker()
        self._vt.add_fixed_scope(self._register_model)
        self._vt.add_fixed_scope(self._memory_model)
        for c in self._register_model.children:
            if c.name == "rxcpu":
                s = ScopeModel("rxcpu registers")
                s2 = ScopeModel("rxcpu state")
                for r in c.children:
                    if r.name[0] == 'r' and r.name[1:].isdigit():
                        reg_no = int(r.name[1:])
                        reg_name = mips_regs.inv[reg_no]
                        reg_for_display = GenericModel(r.name, r.parent)
                        reg_for_display.display_name = reg_name
                        s.children += [reg_for_display]
                    if r.name == "pc":
                        ss = GenericModel(r.name, r.parent)
                        ss.display_name = "program counter"
                        ss.accessor = lambda r=r:self._register_model.accessor(r)
                        s2.children += [ss]
                    if r.name == "ir":
                        ss = GenericModel(r.name, r.parent)
                        ss.display_name = "instruction register"
                        ss.accessor = lambda r=r:self._register_model.accessor(r)
                        s2.children += [ss]
                        if not _no_capstone:
                            ss = GenericModel(r.name, r.parent)
                            ss.display_name = "instruction register (decoded)"
                            ss.accessor = lambda r=r:_disassemble_word(self._register_model.accessor(r))
                            s2.children += [ss]

                    if r.name in ["mode", "status"]:
                        ss = GenericModel(r.name, r.parent)
                        ss.accessor = lambda r=r:self._register_model.accessor(r)
                        for b in r.children:
                            cc = GenericModel(b.name, b.parent)
                            cc.accessor = lambda b=b:self._register_model.accessor(b)
                            ss.children += [cc]
                        s2.children += [ss]