code: function when(){
  		// handle if we get called with a function
  		var args = makeArray(arguments),
  			last = args[args.length -1];
  			
  		if(typeof last === 'function' ){
  			args[args.length -1] = {
  				'fn' : last
  			}
  			args.push("fn");
  		};
  		
  		var waitMeth = args.pop(), 
  			waitObj = args.pop(),
  			joined = new join(waitObj, waitMeth); 
  		
  		for(var i =0; i < args.length; i = i+2){
  			joined.add(args[i], args[i+1])
  		}
  		
  		// call right away if it should
  		joined.go();
  	}
docs: chains two functions.  When the first one is called, it calls the second function. If the second function has multiple callers, it waits until all have been called  when(parent,"start", steal, "start")