code: private static FaxClient createFaxClientImpl(String type,Properties configuration)
      {
          //create fax client SPI
          FaxClientSpi faxClientSpi=FaxClientSpiFactory.createFaxClientSpi(type,configuration);
          
          //get fax client class name
          String className=faxClientSpi.getConfigurationValue(FaxClientFactory.FAX_CLIENT_CLASS_NAME_PROPERTY_KEY);
          if((className==null)||(className.length()==0))
          {
              className=FaxClient.class.getName();
          }
  
          //load class definition
          Class<?> classDefinition=ReflectionHelper.getType(className);
  
          FaxClient faxClient=null;
          try
          {
              //create fax client
              Constructor<?> constructor=classDefinition.getConstructor(new Class[]{FaxClientSpi.class});
              faxClient=(FaxClient)constructor.newInstance(new Object[]{faxClientSpi});
          }
          catch(Exception exception)
          {
              throw new FaxException("Unable to create a new fax client instance for class name: "+className,exception);
          }
  
          return faxClient;
      }
docs: This function creates a new fax client based on the provided configuration.
  
  @param   type
  The fax client type (may be null for default type)
  @param   configuration
  The fax client configuration (may be null)
  @return  The fax client instance