public static function Soap($username, $password, $service, $version = 'SOAP_1_2', $wsdl = 'http://callfire.com/api/1.1/wsdl/callfire-service-http-soap12.wsdl')
    {
        $options = array(
            'soap_version' => $version,
            'login' => $username,
            'password' => $password
        );

        $classmap = include __DIR__.'/Soap/classmap.php';
        if (is_array($classmap)) {
            $options['classmap'] = $classmap;
        }

        if (is_string($service)) {
            return static::createSoapClient($username, $password, $service, $wsdl, $options);
        } elseif (is_array($service)) {
            $services = array();

            foreach ($service as $serviceName) {
                $services[] = static::createSoapClient($username, $password, $serviceName, $wsdl, $options);
            }

            return $services;
        }

        throw new InvalidArgumentException('Client::Rest accepts either a service name, or an array of service names');
    }