def get_item(self, path_, default):
        """Return item or default. In the latter, change file to have default.

        Arguments:
            path_ -- path to item in section/subsection structure. May be either:
                     ["section", "subsection", ...] or
                     "[/]section/subsection/..."  (leading slash is tolerated)
            default -- value to return if item is not found

        Argument 'default' is also used to determine the type of the data to return:

            - str and list: returned as retrieved
            - int and float: eval'ed
            - bool: parsed
        """
        section, path_ = self._get_section(path_)


        key = path_[-1]

        if key not in section:
            self.set_item(path_, default)
            return default

        xvalue = section[key]
        type_ = type(default)
        if type_ in (str, list):
            return xvalue
        elif type_ == bool:
            value = True if xvalue == "True" else False if xvalue == "False" else eval(xvalue)
        elif type_ in (int, float):
            value = type_(xvalue)
        elif default is None:
            value = None if xvalue == "None" else eval(xvalue)
        else:

            raise TypeError("Type not supported: {}".format(type_.__name__))
        return value