public static void main(String[] args) {
        if (!(args.length == 1)) {
            System.err.println("Usage: java PersephonepS <session password>");
            System.exit(1);
        }

        sessPass = args[0].trim();

        if (log.isDebugEnabled()) {
            log.debug("Starting server with session password {}", sessPass);
        }

        //TODO Find the fate of the below
        /*
           Thread mm = new Thread(new MemoryMonitor());
           mm.setDaemon(true);
           mm.start();
           */
        peerServerHash = new Hashtable<String, Thread>();
        phoneDirectory = new ConcurrentHashMap<String, InetAddress>();
        phoneMap = new ConcurrentHashMap<String, Thread>();
        accepteeVector = new Vector<Thread>();

        try {
            SSo_socket = new ServerSocket(30302);
            SSo_peersocket = new ServerSocket(30305);
            SSo_msgsocket = new ServerSocket(30307);
            vox_Init = new ServerSocket(30311);
            voipMaster = new ServerSocket(30309);
            SSo_objsocket = new ServerSocket(30312);
        } catch (Exception sokx) {
            sokx.printStackTrace();
        }

        while (true) {
            try {
                So_clientSocket = SSo_socket.accept();

                So_peerSocket = SSo_peersocket.accept();

                So_msgSocket = SSo_msgsocket.accept();

                vox_InitSocket = vox_Init.accept();

                voipClient = voipMaster.accept();

                objSock = SSo_objsocket.accept();
            } catch (Exception ex) {
            }

            Thread PersephonePeerServer = new Thread(new PersephonePeerServer(
                        So_clientSocket, So_peerSocket, So_msgSocket,
                        vox_InitSocket, voipClient, objSock, sessPass));

            try {
                Thread.sleep(50);
            } catch (InterruptedException l) {
            }

            Thread.yield();

            PersephonePeerServer.start();
        }
    }