public Server() throws HeadlessException, UnknownHostException {
		super("A Hole In The Universe Server "
				+ InetAddress.getLocalHost().getHostAddress());
		setSize(1300, 700);
		setLocationRelativeTo(null);
		setLayout(new GridLayout(1, 2));
		// The program will close when the window is closed
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		uClearButton = new JButton("Clear");
		uScrollPaneMsg = new JScrollPane(uTextAreaMsg);
		uLabelConnections = new JLabel("Connections: 0");
		uClearButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent ae) {
				uTextAreaMsg.setText("");
			}
		});
		// uPanelMsg.setPreferredSize();
		uPanelMsg.setLayout(new BoxLayout(uPanelMsg, BoxLayout.Y_AXIS));
		uPanelMsg.setBorder(new LineBorder(Color.BLACK));
		uPanelMsg.add(uLabelConnections);
		uPanelMsg.add(uScrollPaneMsg);
		uPanelMsg.add(uClearButton);

		uPanelDB.setLayout(new BoxLayout(uPanelDB, BoxLayout.Y_AXIS));
		uPanelDB.add(new JLabel("XML Database:"));
		uTextAreaDB.setTabSize(2);
		uScrollPaneDB = new JScrollPane(uTextAreaDB);
		uPanelDB.add(uScrollPaneDB);
		this.add(uPanelMsg);
		this.add(uPanelDB);

		try {
			ss = new ServerSocket(PORT_NUM); // bind to port
			Thread uThread = new Thread(this);
			uThread.start();
		} catch (IOException ioe) {
			System.out.println("ioe in Server: " + ioe.getMessage());
		}
		updateDBDisplay();
		setVisible(true);

		// set up XML Parsing
		try {
			db = dbf.newDocumentBuilder();
			doc = db.parse(new File(DB));
			doc.getDocumentElement().normalize();
			new ActiveGameCountdown(doc);
			new WaitPlayersReady(doc);
		} catch (ParserConfigurationException e1) {
			e1.printStackTrace();
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (SAXException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			uTextAreaMsg.append("Error: Database not found. \n");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}