   push: (content) ->
     preSpaces = content.match PreSpacesRegExp
     if preSpaces isnt null
-      @_rte.words.push(new Word (preSpaces[0]))
+      @_rte.words.push(new Word (preSpaces[0]), @)
     words = content.match WordRegExp
     if _.isArray(words)
       for w in words
-        @_rte.words.push (new Word w)
+        @_rte.words.push (new Word w, @)
 
   # Insert words at position
   #

    if not _.isArray words
      throw new Error "Expected a string array as second parameter, got #{words}"
    if 0 <= position <= @_rte.words.length
      wordsObj = (new Word w for w in words)

      left = @_rte.words.slice(0, position)
      right = @_rte.words.slice(position)

    # unbind selection
    selection.unbind()

  garbageCollect: ->
    sels = @_rte.selections
    for index in [0..sels.length-1]
      for key, value of sels[index]
        console.log sels[index], "has", key, value, "deleting!"
        if value == null or value == ""
          sels[index].unbind()
          @removeSel sels[index]


if window?
  window.Rte = Rte
  window.Selection = Selection
