docs: function Client(transport, fastPathTransport) {
  	Global.call(this, transport, fastPathTransport);
  	var self = this;
  	this.transport.once('connect', function(core, userId, channelId) {
  		self.connect(core, userId, channelId);
  	}).on('close', function() {
  		self.emit('close');
  	}).on('error', function (err) {
  		self.emit('error', err);
  	});
  	
  	if (this.fastPathTransport) {
  		this.fastPathTransport.on('fastPathData', function (secFlag, s) {
  			self.recvFastPath(secFlag, s);
  		});
  	}
  	
  	// init client capabilities
  	this.clientCapabilities[caps.CapsType.CAPSTYPE_GENERAL] = caps.generalCapability();
  	this.clientCapabilities[caps.CapsType.CAPSTYPE_BITMAP] = caps.bitmapCapability();
  	this.clientCapabilities[caps.CapsType.CAPSTYPE_ORDER] = caps.orderCapability(
  			new type.Component([
  			     new type.UInt8(0), new type.UInt8(0), new type.UInt8(0), new type.UInt8(0), new type.UInt8(0), new type.UInt8(0), new type.UInt8(0), new type.UInt8(0),
  			     new type.UInt8(0), new type.UInt8(0), new type.UInt8(0), new type.UInt8(0), new type.UInt8(0), new type.UInt8(0), new type.UInt8(0), new type.UInt8(0),
  			     new type.UInt8(0), new type.UInt8(0), new type.UInt8(0), new type.UInt8(0), new type.UInt8(0), new type.UInt8(0), new type.UInt8(0), new type.UInt8(0),
  			     new type.UInt8(0), new type.UInt8(0), new type.UInt8(0), new type.UInt8(0), new type.UInt8(0), new type.UInt8(0), new type.UInt8(0), new type.UInt8(0)
  			]));
  	this.clientCapabilities[caps.CapsType.CAPSTYPE_BITMAPCACHE] = caps.bitmapCacheCapability();
  	this.clientCapabilities[caps.CapsType.CAPSTYPE_POINTER] = caps.pointerCapability();
  	this.clientCapabilities[caps.CapsType.CAPSTYPE_INPUT] = caps.inputCapability();
  	this.clientCapabilities[caps.CapsType.CAPSTYPE_BRUSH] = caps.brushCapability();
  	this.clientCapabilities[caps.CapsType.CAPSTYPE_GLYPHCACHE] = caps.glyphCapability(
  			new type.Component([
  			    caps.cacheEntry(), caps.cacheEntry(), caps.cacheEntry(), caps.cacheEntry(), caps.cacheEntry(),
  			    caps.cacheEntry(), caps.cacheEntry(), caps.cacheEntry(), caps.cacheEntry(), caps.cacheEntry()
  			]));
  	this.clientCapabilities[caps.CapsType.CAPSTYPE_OFFSCREENCACHE] = caps.offscreenBitmapCacheCapability();
  	this.clientCapabilities[caps.CapsType.CAPSTYPE_VIRTUALCHANNEL] = caps.virtualChannelCapability();
  	this.clientCapabilities[caps.CapsType.CAPSTYPE_SOUND] = caps.soundCapability();
  	this.clientCapabilities[caps.CapsType.CAPSETTYPE_MULTIFRAGMENTUPDATE] = caps.multiFragmentUpdate();
  }