 
   didMutate: (mutations) =>
     clearTimeout(@debounce)
-
-    @mutations ?= []
-    @mutations.push(mutations...)
+    @mutations.push(@findSignificantMutations(mutations)...)
 
     @debounce = setTimeout =>
-      significantMutations = @findSignificantMutations(@mutations)
-      return unless significantMutations.length
-      @delegate?.elementDidMutate?(summarizeMutations(significantMutations))
-      @mutations = []
+      if @mutations.length
+        @delegate?.elementDidMutate?(@getMutationSummary())
+        @reset()
     , 1
 
   # Private
+
+  reset: ->
+    @mutations = []
 
   findSignificantMutations: (mutations) ->
     mutation for mutation in mutations when @mutationIsSignificant(mutation)

    @start()

  start: ->
    @observer.observe(@element, options)

  stop: ->

      additions.push(stringDifference(newString, oldString))
      deletions.push(stringDifference(oldString, newString))

    for node in @getRemovedTextNodes()
      deletions.push(node.data)

    summary = {}
