       @push(content)
     else
       # TODO: support breaks (br, new paragraph, …)
-      (e for e in @_rte.words).join(' ')
+      (e.word for e in @_rte.words).join(' ')
+
+  # Split the content around ' ' and append all the words created to the object
+  #
+  getWord: (index) ->
+    if not (0 <= index < @_rte.words.length)
+      throw new Error "Index out of bounds"
+    @_rte.words[index].word
+
+  getWords: (begin, end) ->
+    if not end?
+      end = @_rte.words.length
+    out = wObj for wObj in @_rte.words[begin..end]
+
+  setWord: (index, content="") ->
+    if not (0 <= index < @_rte.words.length)
+      throw new Error "Index out of bounds"
+    @_rte.words[index].word = content
 
   push: (content) ->
     for w in content.split(' ')
-      @_rte.words.push(w)
+      wObj = new Word(w)
+
+      @_rte.words.push(wObj)
 
 
   insertWords: (position, words)->

      if position == 0
        before = []
      else
        before = @_rte.words[..position-1]
      after = @_rte.words[position..]
      @_rte.words = before.concat(words).concat(after)
      @updateInsertWords(position, words.length)
    else
      throw new Error 'Index #{position} out of bound in word list'


      pos = pos
    {word: word, pos: pos}

  # Set the style of the selection and try to extend as much
  # as possible existing ones
  #
  setStyle: (selection, style)->
    if not thisSel.isValid()
      throw new Error "Invalid selection"

    # Try to merge with previous / next contiguous selection
    {prevWord, position} = @_jump(s.startPos, -1)
    {nextWord, position} = @_jump(s.endPos,   +1)
    for s in prevWord.selections when selection.style == s.style
      s.merge selection, @
    for s in nextWord.selections when selection.style == s.style
      s.merge selection, @

  # Apply a delta to the object
  # @see http://quilljs.com/docs/deltas/
  #
  delta: (deltas) ->
    position = 0
    for delta in deltas.ops
      if delta.retain?
