lib/perform.js
function( set, args) {

  // nothing to see here folks
  if ( set.length <  1 ) {
    return;
  }

  // the args to call with
  var apply = [];

  // we passed inline arguments
  if ( set.length > 1 ) {
    for ( var i = 1; i < set.length; i++ ) {
      // is it one of those cool perform.arg(X) thingies?
      // if not, just put the passed args in there
      if ( set[i] instanceof Argument ) {
        apply[i] = args[ set[i].num ];
      } else {
        apply[i] = set[i];
      }
      apply = apply.slice(1);
    }
  } else {
    apply = args;
  }

  // actually call the fn with the appropriate args
  set[0].apply( this, apply );
}
function( set, args) {

  // nothing to see here folks
  if ( set.length <  1 ) {
    return;
  }

  // the args to call with
  var apply = [];

  // we passed inline arguments
  if ( set.length > 1 ) {
    for ( var i = 1; i < set.length; i++ ) {
      // is it one of those cool perform.arg(X) thingies?
      // if not, just put the passed args in there
      if ( set[i] instanceof Argument ) {
        apply[i] = args[ set[i].num ];
      } else {
        apply[i] = set[i];
      }
      apply = apply.slice(1);
    }
  } else {
    apply = args;
  }

  // actually call the fn with the appropriate args
  set[0].apply( this, apply );
}
call a callback set