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

        nodes.push(mutation.removedNodes...)
    nodes

  summarizeMutations = (mutations) ->
    summarizeTextMutations(mutations)

  summarizeTextMutations = (mutations) ->
    additions = []
    deletions = []

    characterMutations = (mutation for mutation in mutations when mutation.type is "characterData")
    if characterMutations.length
      [startMutation, ..., endMutation] = characterMutations
      oldString = normalizeSpaces(startMutation.oldValue)


  didMutate: (mutations) =>
    clearTimeout(@debounce)
    @mutations.push(@findSignificantMutations(mutations)...)

    @debounce = setTimeout =>
      if @mutations.length
        @delegate?.elementDidMutate?(@getMutationSummary())
        @reset()
    , 1

  # Private

  reset: ->
    @mutations = []

  findSignificantMutations: (mutations) ->
    mutation for mutation in mutations when @mutationIsSignificant(mutation)
