 
         commands =
             'core:move-up' : (event) =>
-                if @input? and @input?.candidateSymbols.length isnt 0
+                if @candidateSymbols?.length isnt 0
                     @moveUp()
                     @replaceSymbol @selected[0]
                     event.stopImmediatePropagation()
             'core:move-right' : (event) =>
-                if @input? and @input?.candidateSymbols.length isnt 0
+                if @candidateSymbols?.length isnt 0
                     @moveRight()
                     @replaceSymbol @selected[0]
                     event.stopImmediatePropagation()
             'core:move-down' : (event) =>
-                if @input? and @input?.candidateSymbols.length isnt 0
+                if @candidateSymbols?.length isnt 0
                     @moveDown()
                     @replaceSymbol @selected[0]
                     event.stopImmediatePropagation()
             'core:move-left' : (event) =>
-                if @input? and @input?.candidateSymbols.length isnt 0
+                if @candidateSymbols?.length isnt 0
                     @moveLeft()
                     @replaceSymbol @selected[0]
                     event.stopImmediatePropagation()

            if (@index - 10) >= 0
                @index -= 10
        moveDown: ->
            if (@index + 10) < @input.candidateSymbols.length
                @index += 10
        moveLeft: ->
            if (@index - 1) >= 0
                @index -= 1
        moveRight: ->
            if (@index + 1) < @input.candidateSymbols.length
                @index += 1
    computed:
        partialCandidateSymbols: ->
            if @input?.candidateSymbols
                _.take(_.drop(@input.candidateSymbols, @row * 10), 10)
            else
                []

        selectedLeft:   -> _.take(@partialCandidateSymbols, @col)
        selected:       -> _.compact(@partialCandidateSymbols[@col])
        selectedRight:  -> _.drop(@partialCandidateSymbols, @col + 1)

    destroy: ->
        @subscriptions.destroy()
    data: ->
        partialCandidateSymbols: []
        suggestionKeys: []
        candidateSymbols: []
        rawInput: ''
        subscriptions: new CompositeDisposable
        index: 0
    methods:
