def tld(self, host):
        """
        Public method to get the top level domain for a host.
        
        @param host host name to get TLD for
        @type str
        @return TLD for host
        @rtype str
        """
        if not host or host.startswith("."):
            return ""

        cleanHost = self.__normalizedHost(host)

        tldPart = cleanHost[cleanHost.rfind(".") + 1:]
        cleanHost = bytes(QUrl.toAce(cleanHost)).decode("utf-8")

        self.__loadData()

        if tldPart not in self.__tldDict:
            return tldPart

        tldRules = self.__tldDict[tldPart][:]

        if tldPart not in tldRules:
            tldRules.append(tldPart)

        maxLabelCount = 0
        isWildcardTLD = False

        for rule in tldRules:
            labelCount = rule.count(".") + 1

            if rule.startswith("!"):
                rule = rule[1:]

                rule = bytes(QUrl.toAce(rule)).decode("utf-8")

                # matches with exception TLD
                if cleanHost.endswith(rule):
                    tldPart = rule[rule.find(".") + 1:]
                    break

            if rule.startswith("*"):
                rule = rule[1:]

                if rule.startswith("."):
                    rule = rule[1:]

                isWildcardTLD = True
            else:
                isWildcardTLD = False

            rule = bytes(QUrl.toAce(rule)).decode("utf-8")
            testRule = "." + rule
            testUrl = "." + cleanHost

            if labelCount > maxLabelCount and testUrl.endswith(testRule):
                tldPart = rule
                maxLabelCount = labelCount

                if isWildcardTLD:
                    temp = cleanHost
                    temp = temp[:temp.rfind(tldPart)]

                    if temp.endswith("."):
                        temp = temp[:-1]

                    temp = temp[temp.rfind(".") + 1:]

                    if temp:
                        tldPart = temp + "." + rule
                    else:
                        tldPart = rule

        temp = self.__normalizedHost(host)
        tldPart = ".".join(
            temp.split(".")[temp.count(".") - tldPart.count("."):])

        return tldPart