         currentTarget = initialTarget
 
     # matches for a full stop, question mark, or exclamation mark
+
     desiredText = $(currentTarget).text()
+    desiredText = desiredText[this.currentIndexes.get(currentTarget)..]
     match = /[.!?][\b\s"’”]/.test(desiredText)
     desiredText = desiredText.split(/[.!?][\b\s"’”]/)
 
-    finalCount = desiredText.length - 1
-
-    matchEnd = desiredText[this.currentSentence] == ""
+    sentence = desiredText[0]
 
     offset_to_use = 0
-    counter = 0
-
-    if desiredText.length == 1
-      desiredText = []
-      desiredText.push $(currentTarget).text()
-
-    for sentence in desiredText
-      if counter == this.currentSentence
-        break
-      # this offset should be the length of the break split (i.e. a full-stop + a space = 2)
-      offset_to_use = offset_to_use + sentence.length + 2
-      counter = counter + 1
-
-    if desiredText.length == 1
-      desiredText = $(currentTarget).text()
-    else
-      desiredText = desiredText[this.currentSentence]
-
-    if (desiredText != undefined and desiredText.endsWith(".")) or (desiredText != undefined and desiredText.endsWith("?")) or (desiredText != undefined and desiredText.endsWith("!"))
+
+    if (sentence != undefined and sentence.endsWith(".")) or (sentence != undefined and sentence.endsWith("?")) or (sentence != undefined and sentence.endsWith("!"))
       # this means that we have reached a line break that ends with a sentence
       match = false
 
-    if desiredText != undefined
-      endIndex = offset_to_use + desiredText.length + 1
+    if sentence != undefined
+      endIndex = this.currentIndexes.get(currentTarget) + sentence.length + 1
 
     if endIndex > $(currentTarget).text().length - 1
       endIndex = $(currentTarget).text().length - 1
 
-    if (this.currentSentence == finalCount) and (matchEnd == false) and (desiredText.endsWith(".") == false)
-      # if this is the case then we are starting mid-element and need to jump
-      match = false
-      if this.savedOffset == 0
-        this.savedOffset = offset_to_use
-
     # test if we have found a sentence marker or if we are forcing this through anyway
-    if (match or force) and (offset_to_use < endIndex)
-      data = this.packageData(initialTarget, currentTarget, endIndex, offset_to_use)
+    if (match or force) and (sentence.length < endIndex)
+      data = this.packageData(initialTarget, currentTarget, endIndex, this.currentIndexes.get(initialTarget))
       this.anchorToPage(data)
     else
       tagName = $(currentTarget).prop('tagName').toLowerCase()

    event.target = this.normalizeStyleTags event.target

    this.currentIndexes.put(event.target, 0)
    this.currentSentence = 0

    this.selectSentence event.target


        data = this.packageData(initialTarget, currentTarget, length, 0)
        this.anchorToPage(data)
      else
        if sentence == undefined
          # Just start in the next jump element without saving the current position in the document
          nextSibling = this.returnNext(currentTarget)
          this.currentIndexes.put(currentTarget, 0)
          this.selectSentence nextSibling
        else if sentence.endsWith(".") or sentence.endsWith("!") or sentence.endsWith("?")
          # just select the next sentence and force it through
          this.selectSentence initialTarget, currentTarget, true
        else
