 +	// Slowly unpack the queue without flooding.
 +	setInterval(dequeue, safeInterval);
 +	dequeue();
-
-
+ 
+ 
  }; // }}}
 -Client.prototype.join = function(channel, callback) { // {{{
 -    this.once('join' + channel, function () {

+
+	process.EventEmitter.call(this);
 }

 util.inherits(Client, process.EventEmitter);
@@ -549,284 +563,303 @@
 Client.prototype.modeForPrefix = {};

+Client.prototype.ctcp = function (to, type, text) {
+	return this[type === 'privmsg' ? 'say' : 'notice'](to, '\1' + text + '\1');
 }
 
 /*
@@ -836,59 +869,55 @@
  * useful keys
