See the note below, I think the way to do this is actually just to have ``FastaIterator`` and ``FastqIterator``, where they yield ``SequenceID``, ``Sequence``, ``QualID``, ``Qual``. Barcodes are just an instance of ``FastqIterator``, which could be contained in an object to-be-defined