def register(self, itemtype, item_id, handler):
        '''
        register the item in zookeeper /list/
        itemtype must be a Zooborg constant
        item_id must be a string
        handler: method to call on conf change
        '''
        # Create a node with data
        #TODO: add system properties in data (ip, os)
        #TODO: add uniq client id
        if itemtype not in [ZooConst.CLIENT, ZooConst.WORKER, ZooConst.BROKER]:
            raise Exception('Zooborg.register: invalid type')
        self.initconn()
        self.zk.ensure_path("/distark/" + itemtype + "/list")
        path=''.join(['/distark/' + itemtype + '/list/', item_id])
        self.registred.append(path)
        data=b'ip̂,os'
        if not(self.zk.exists(path)):
            self.zk.create(path, data, None, True)
        else:
            self.zk.delete(path, recursive=True)
            self.zk.create(path, data, None, True)
        #reload conf if change in zoo
        self.zk.DataWatch('/distark/' + itemtype + '/conf/conf_reload_trigger',
                          handler)
register the item in zookeeper /list/
        itemtype must be a Zooborg constant
        item_id must be a string
        handler: method to call on conf change