public function call( $method, $args = null ) 
	{
		if ( $this->methods[$method] ) 
		{
			$call = $this->methods[$method]['call'];
			return call_user_func_array( $call, $args);
		} else {
			if ( substr( $method, 0, 7 ) == 'system.' ) 
			{
				if ( $method == 'system.multiCall' ) {
					throw new Ripcord_InvalidArgumentException( 
						'Cannot recurse system.multiCall', ripcord::cannotRecurse );
				}
				// system methods are handled internally by the xmlrpc server, so we've got to create a makebelieve request, 
				// there is no other way because of a badly designed API 
				$req = xmlrpc_encode_request( $method, $args, $this->outputOptions );
				$result = xmlrpc_server_call_method( $this->xmlrpc, $req, null, 
					$this->outputOptions);
				return xmlrpc_decode( $result );
			} else {
				throw new Ripcord_BadMethodCallException( 'Method '.$method.' not found.', 
					ripcord::methodNotFound );
			}
		}
	}