Convert class and all subclasses (:class:`Author`, :class:`Optionals`)
        to namedtuple.

        Note:
            This method is neccessary for AMQP communication.

        Returns:
            namedtuple: Representation of the class as simple structure.

def to_namedtuple(self):
        """
        Convert class and all subclasses (:class:`Author`, :class:`Optionals`)
        to namedtuple.

        Note:
            This method is neccessary for AMQP communication.

        Returns:
            namedtuple: Representation of the class as simple structure.
        """
        keys = filter(lambda x: not x.startswith("_"), self.__dict__)
        opt_nt = namedtuple(self.__class__.__name__, keys)

        filt_dict = dict(map(lambda x: (x, self.__dict__[x]), keys))

        # convert Author objects to namedtuple
        authors = []
        for author in filt_dict["authors"]:
            authors.append(author.to_namedtuple())

        filt_dict["authors"] = authors

        # convert optionals to namedtuple if set, or to None if not
        if filt_dict["optionals"]._any_set:
            filt_dict["optionals"] = filt_dict["optionals"].to_namedtuple()
        else:
            filt_dict["optionals"] = None

        return opt_nt(**filt_dict)