     after: (timeInterval, fn) ->
       setTimeout =>
         fn(@)
-      , timeInterval; @
+      , timeInterval; 
+      @emit 'robot-after', @; @
 
     do: (fn) ->
-      fn(); @
+      fn(@); 
+      @emit 'robot-do', @; @
 
     watchSensor: (eventName, fn) ->
       for name, sensor of @sensors

      @fn(args); @

  Stack : class Stack extends EventEmitter
    constructor: (options) ->
      {@name} = options
      @name ?= uuid.v4()
      @actions = []; @

          @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);
      @emit 'stack-execute', @actions; @

  Sensor : class Sensor extends EventEmitter
    constructor: (options) ->
