def filter(self, filters):
        '''
        Apply filters to the pileup elements, and return a new Pileup with the
        filtered elements removed.

        Parameters
        ----------
        filters : list of PileupElement -> bool callables
            A PileupUp element is retained if all filters return True when
            called on it.
        '''
        new_elements = [
            e for e in self.elements
            if all(function(e) for function in filters)]
        return Pileup(self.locus, new_elements)