modem = {} network = {} function modem:init(addr, handler) local o = {} setmetatable(o, self) self.__index = self o.network = network o.address = addr o.network[addr] = handler return o end function modem:open(port) return true end function modem:send(address, port, msg) self.network[address](address, self.address, port, 0, msg) end return modem