def add_sibling(self, pos=None, arc_element_type=None, description=None, story_element_node=None, **kwargs):
        '''
        Overrides the default `treebeard` function, adding additional integrity checks.
        '''
        if 'mile' in arc_element_type:
            if self.get_depth() == 1:
                raise ArcGenerationError('Milestones are invalid to be the root')
            nodes_to_check = self.get_root().get_descendants().filter(arc_element_type__icontains='mile')
            for node in nodes_to_check:
                if node.arc_element_type == arc_element_type:
                    raise ArcIntegrityError('You cannot have two of the same milestone in the same arc.')
        return super().add_sibling(
            pos=pos,
            arc=self.arc,
            arc_element_type=arc_element_type,
            description=description,
            story_element_node=story_element_node
        )