def add_item(self, item):
        """Add single command line flag

        Arguments:
            name (:obj:`str`): Name of flag used in command line
            flag_type (:py:class:`snap_plugin.v1.plugin.FlagType`):
                Indication if flag should store value or is simple bool flag
            description (:obj:`str`): Flag description used in command line
            default (:obj:`object`, optional): Optional default value for flag

        Raises:
            TypeError: Provided wrong arguments or arguments of wrong types, method will raise TypeError

        """
        if not(isinstance(item.name, basestring) and isinstance(item.description, basestring)):
            raise TypeError("Name and description should be strings, are of type {} and {}"
                            .format(type(item.name), type(item.description)))
        if not(isinstance(item.flag_type, FlagType)):
            raise TypeError("Flag type should be of type FlagType, is of {}".format(type(item.flag_type)))

        if item.name not in self._flags:
            if item.default is not None:
                if item.default is not False:
                    item.description = item.description + " (default: %(default)s)"
                self._flags[item.name] = item
            else:
                self._flags[item.name] = item