public final void run_startup_configurations() {
	try {
	    FileReader fileReader = new FileReader(System.getProperty("net.sf.odinms.login.config"));
	    initialProp.load(fileReader);
	    fileReader.close();
	    Registry registry = LocateRegistry.getRegistry(initialProp.getProperty("net.sf.odinms.world.host"), Registry.REGISTRY_PORT, new SslRMIClientSocketFactory());
	    worldRegistry = (WorldRegistry) registry.lookup("WorldRegistry");
	    lwi = new LoginWorldInterfaceImpl();
	    wli = worldRegistry.registerLoginServer(ServerConstants.Login_Key, lwi);
	    Properties dbProp = new Properties();
	    fileReader = new FileReader("db.properties");
	    dbProp.load(fileReader);
	    fileReader.close();
	    DatabaseConnection.setProps(dbProp);
	    DatabaseConnection.getConnection();
	    prop = wli.getWorldProperties();
	    userLimit = Integer.parseInt(prop.getProperty("net.sf.odinms.login.userlimit"));
	    serverName = prop.getProperty("net.sf.odinms.login.serverName");
	    eventMessage = prop.getProperty("net.sf.odinms.login.eventMessage");
	    flag = Byte.parseByte(prop.getProperty("net.sf.odinms.login.flag"));
	    maxCharacters = Integer.parseInt(prop.getProperty("net.sf.odinms.login.maxCharacters"));

	    try {
		fileReader = new FileReader("subnet.properties");
		subnetInfo.load(fileReader);
		fileReader.close();
	    } catch (FileNotFoundException e) {
		System.err.println("'subnet.properties' not found. Fail to load subnet configuration, falling back to world defaults");
	    }
	    try {
		final PreparedStatement ps = DatabaseConnection.getConnection()
			.prepareStatement("UPDATE accounts SET loggedin = 0");
		ps.executeUpdate();
		ps.close();
	    } catch (SQLException ex) {
		throw new RuntimeException("[EXCEPTION] Please check if the SQL server is active.");
	    }
	} catch (RemoteException re) {
	    throw new RuntimeException("[EXCEPTION] Could not connect to world server.");
	} catch (FileNotFoundException fnfe) {
	    throw new RuntimeException("[EXCEPTION] File for login or database configuration not found, please check again.");
	} catch (IOException ioe) {
	    throw new RuntimeException("[EXCEPTION] Failed or interrupted I/O operations.");
	} catch (NotBoundException nbe) {
	    throw new RuntimeException("[EXCEPTION] Attempting lookup or unbind in the registry a name that has no associated binding.");
	}

	ByteBuffer.setUseDirectBuffers(false);
	ByteBuffer.setAllocator(new SimpleByteBufferAllocator());

	acceptor = new SocketAcceptor();

	final SocketAcceptorConfig cfg = new SocketAcceptorConfig();
	cfg.getSessionConfig().setTcpNoDelay(true);
	cfg.getFilterChain().addLast("codec", new ProtocolCodecFilter(new MapleCodecFactory()));

	TimerManager.getInstance().start();
//	TimerManager.getInstance().register(new RankingWorker(), 3600000);
	LoginInformationProvider.getInstance();

	try {
	    InetSocketadd = new InetSocketAddress(PORT);
	    acceptor.bind(InetSocketadd, new MapleServerHandler(ServerType.LOGIN), cfg);
	    System.out.println("Listening on port " + PORT + ".");
	} catch (IOException e) {
	    System.err.println("Binding to port " + PORT + " failed" + e);
	}
    }