         nodes.push(mutation.addedNodes...)
         nodes.push(mutation.removedNodes...)
     nodes
+
+  reset: ->
+    @mutations = []
+
+  notifyDelegateOnce: ->
+    if @mutations.length
+      clearTimeout(@timeout)
+      @timeout = setTimeout =>
+        @delegate?.elementDidMutate?(@mutations)
+        @reset()
+      , 1


  constructor: (@element) ->
    @observer = new window.MutationObserver @didMutate
    @start()

  start: ->


  didMutate: (mutations) =>
    significantMutations = @findSignificantMutations(mutations)
    @mutations.push(significantMutations...)
    @notifyDelegateOnce()

  # Private

