Instead of duplicating files, it is much more efficient to create the itterator on the fly

def allfiles(self):
        """ Instead of duplicating files, it is much more efficient to create the itterator on the fly """
        for f in self.files:
            yield f
        for f in self.extra_files:
            yield f