   canUndo: ->
     return @stackPosition >= 0
 
-  redo: ->
+  redo: Reflux.createAction()
+
+  _redo: ->
     if @canRedo()
       @stackPosition++
       result = @commands[@stackPosition].redo @debug


    # listen to all our actions
    @endCommandBatch.listen @_endComandBatch, @

  startCommandBatch: ->
    @currentBatch = new CommandBatch() unless @currentBatch

    @log() if @debug
    result

  undo: Reflux.createAction()

  _undo: ->
    if @canUndo()
      result = @commands[@stackPosition].undo @debug
      @stackPosition--
