 
 UTILITIES =
 
+  # for async functions
   async: -> "
     (function(){
       var async = function(generator) {

          self.tick();
        };

        this.failHandle = function(value) {
          self.fail(value);
        };

        this.send     = false;
        this.result   = undefined;

        this.iterator = undefined;

      Tracker.prototype = {
        tick: function() {
          var next;
          if (this.throw) {
            next = this.iterator.throw(this.result);
            this.throw = false;
          } else {
            next = this.iterator.next(this.result);
          }

          if (next.done) {
            this.win(next.value);
          } else {
            next.value.then(this.thenHandle, this.failHandle);
          }
        }
      };

      return async;
    }())
  " 

  stream: -> "
    (function(){
