improved fasta parsing