doesn't break, doesn't work :(
implemented gap-penalty estimation