           @actions.push(action)
       else
         @actions.push(actions)
+      @emit 'stack-push', actions; @
 
     execute: (args) ->
       ret = null
       for action in @actions
         ret ?= args
         ret = action.fn(ret);
-      return @
+      @emit 'stack-execute', @actions; @
 
   Sensor : class Sensor extends EventEmitter
     constructor: (options) ->

    after: (timeInterval, fn) ->
      setTimeout =>
        fn(@)
      , timeInterval; @

    do: (fn) ->
      fn(); @

    watchSensor: (eventName, fn) ->
      for name, sensor of @sensors

          fn(data)
      return @
    
    watchAction: (eventName, fn) ->
      for name, action of @actions
        action.on eventName, (data) ->
          fn(data)
      return @

