* @throws CycApiException if the api request results in a cyc server error
   */
  private final void commonInitialization()
          throws IOException, CycApiException {
    if (Log.current == null) {
      Log.makeLog("cyc-api.log");
    }

    if (areAPIRequestsLoggedToFile) {
      apiRequestLog = new FileWriter("api-requests.lisp");
    }
    cycAccessInstances.put(Thread.currentThread(), this);

    /*if (sharedCycAccessInstance == null) {
    sharedCycAccessInstance = this;
    }*/
    cycImageID = getCycImageID();
    try {
      DefaultInferenceParameterDescriptions.loadInferenceParameterDescriptions(this, 0);
    } catch (Exception e) {
      Logger logger = Logger.getLogger("org.opencyc.api.CycAccess");
      logger.warning("Could not load inference parameter descriptions.");
      Throwable curr = e;
      while (curr != null) {
        logger.warning(curr.getLocalizedMessage());
        curr = curr.getCause();
      }
    }
    if (!isSOAPConnection) // if the communication mode is SOAP, then there is a lease manager, but it is never started
    {
      try {
        // wait for the sockets to initialize
        Thread.sleep(500);
      } catch (java.lang.InterruptedException e) {
      }
      cycLeaseManager = new CycLeaseManager(this);
      cycLeaseManager.start();
    }
  }