although the assumption that read.length < haplotype.length is always true, do we really need to constrain ourselves here?