@Override
public void process() {
      session.log("Loading class for client: \""+clientClassName+"\"");

      Class clnMain;
      try {
        clnMain = Class.forName(clientClassName);
      }catch(ClassNotFoundException clnfe){
        session.log("Unable to load class\n"+clnfe.toString());
        return;
      }

      Object o=null;
      try {
          o = clnMain.newInstance();
      }catch(InstantiationException iex){
         session.log("Unable to instantiate class\n"+iex.toString());
         return;
      }catch(IllegalAccessException iax){
         session.log("Unable to instantiate class\n"+iax.toString());
      }

      clientObject = (RsRunnable)o;

      if(supplyClientIO){
         SimClient simClient = new SimClient(session);

         try{
            PipedOutputStream clnOut = new PipedOutputStream();
            PipedInputStream  srvIn  = new PipedInputStream(clnOut);

            PipedOutputStream srvOut = new PipedOutputStream();
            PipedInputStream  clnIn  = new PipedInputStream(srvOut);

            simClient.setInputOutputStreams(srvIn, srvOut);
            clientObject.setInputOutputStreams(clnIn, clnOut);

         }catch (IOException eio){
            session.log("Serious error, unable to create client/server IO");
            return;
         }


         session.log("Adding SimClient and starting its connection thread");
         session.addSessionElementsToClient(simClient);
         (new Thread(simClient)).start();
      }

      if(supplyClientLogging){
         clientObject.setLogger(session);
      }

      session.log("Launching thread for client: \""+clientClassName+"\"");
      (new Thread(this)).start();
   }