def __init__(self, **kwargs):
        super(ArtnetManager, self).__init__(**kwargs)
        self.register_signal('new_node', 'del_node')
        self.comm = kwargs.get('comm')
        self.hostaddr = BaseIO.detect_usable_address()
        self.hostname = socket.gethostname()
        self.hostport = UDP_PORT
        self.mac_addr = BaseIO.get_mac_address()
        self.subnet = kwargs.get('subnet', 0)
        self.artpoll = messages.ArtPoll(TalkToMe=2)
        self.artpoll_reply = messages.ArtPollReply(IPAddress=self.hostaddr, 
                                                   Port=UDP_PORT, 
                                                   Oem=0xFF, 
                                                   ShortName=self.hostname, 
                                                   LongName=self.hostname, 
                                                   MAC=self.mac_addr, 
                                                   Style=1, 
                                                   NumPorts=4, 
                                                   PortTypes=[0xC0]*4, 
                                                   Swin=[1, 2, 3, 4])
                                                   #Swout=[1, 2, 3, 4])
        
        self.Nodes = {}
        self.NodesByUniverse = {}
        self.NodePortInfo = {'InputPorts':{}, 'OutputPorts':{}}
        for i, style in self.artpoll_reply.Fields['Style'].codes.iteritems():
            self.Nodes[style] = {}
        
        self.Universes = {}
        self.ds_universes = {}

        self.artnet_io = ArtnetIO(hostaddr=PRIMARY_ADDR, hostport=UDP_PORT, manager=self)
        self.poller = None
        
        if getattr(self.comm, 'MainController', None):
            self.on_comm_MainController_set()
        else:
            self.comm.bind(MainController_set=self.on_comm_MainController_set)