public List<Sequence> importSequences() throws IOException, ImportException {
		boolean done = false;

		List<Taxon> taxonList = null;
		List<Sequence> sequences = null;

		while (!done) {
			try {
				NexusBlock block = findNextBlock();
				if (block == NexusBlock.TAXA) {
					taxonList = readTaxaBlock();
				} else if (block == NexusBlock.CHARACTERS) {
					if (taxonList == null) {
						throw new MissingBlockException("TAXA block is missing");
					}
					sequences = readCharactersBlock(taxonList);
					done = true;
				} else if (block == NexusBlock.DATA) {
					// A data block doesn't need a taxon block before it
					// but if one exists then it will use it.
					sequences = readDataBlock(taxonList);
					done = true;
				} else {
					// Ignore the block..
				}
			} catch (EOFException ex) {
				done = true;
			}
		}
		if (sequences == null) {
			throw new MissingBlockException("DATA or CHARACTERS block is missing");
		}
		return sequences;
	}