docs: function do_dirs() {
  		var undefined,
  		    dirs = [],
  			errs = [], 
  		    callback,
  		    dirs_left,
  		    session = new EventEmitter();
  		
  		_dir_load_id++;
  		
  		_dirs_loading[_dir_load_id] = session;
  		
  		foreach(arguments).do(function(dir) {
  			dirs.push(dir);
  		});
  		
  		callback = dirs.pop();
  		if(! (callback && typeof callback === 'function') ) {
  			dirs.push(callback);
  			callback = undefined;
  		}
  		
  		dirs_left = dirs.length;
  		
  		foreach(dirs).do(function(dir) {
  			fs.readdir(dir, function(err, files) {
  				var error_summary;
  				if(err) {
  					session.emit('error', err);
  					errs.push(err);
  				} else {
  					foreach(files).do(function(file) {
  						if(path.extname(file) !== ".dust") return;
  						do_load(dir+"/"+file, file);
  					});
  				}
  				dirs_left--;
  				if(dirs_left === 0) {
  					error_summary = (errs.length === 0) ? undefined : 'There was ' + errs.length + ' errors:\n * ' + errs.join('\n * ');
  					if(callback) callback(error_summary);
  					session.emit('end', error_summary);
  					delete _dirs_loading[_dir_load_id];
  				}
  			});
  		});
  		
  		return session;
  	}