def wrap(cls, root, refobjinter, refobjects):
        """Wrap the given refobjects in a :class:`Reftrack` instance
        and set the right parents

        This is the preferred method for creating refobjects. Because you cannot set
        the parent of a :class:`Reftrack` before the parent has been wrapped itselfed.

        :param root: the root that groups all reftracks and makes it possible to search for parents
        :type root: :class:`ReftrackRoot`
        :param refobjinter: a programm specific reftrack object interface
        :type refobjinter: :class:`RefobjInterface`
        :param refobjects: list of refobjects
        :type refobjects: list
        :returns: list with the wrapped :class:`Reftrack` instances
        :rtype: list
        :raises: None
        """
        tracks = []
        for r in refobjects:
            track = cls(root=root, refobjinter=refobjinter, refobj=r)
            tracks.append(track)

        for t in tracks:
            parentrefobj = refobjinter.get_parent(t._refobj)
            if parentrefobj:
                parentreftrack = root.get_reftrack(parentrefobj)
            else:
                parentreftrack = None
            t.set_parent(parentreftrack)
            t.fetch_new_children()
            t.update_restrictions()
            t.emit_data_changed()
        return tracks