private void listen() {
		try {
			int buffLen = GlobalConfig.MAX_BYTES_IN_PACKAGE;
			byte[] buff = new byte[buffLen];
			
			DatagramPacket received = new DatagramPacket(buff, buffLen);
			
			while(!shuttingDown) {
				socket.receive(received);
				lastDatagram = received; 
				interpretDatagram(received);
			}
			
		} catch (SocketException e) {
			if(Thread.interrupted()) {
				// The socket was closed elegantly
				Logger.log("Server shutting down...");
			}
			else {
				Logger.fatalError("Something went terribly wrong!", e);
			}
		} catch (IOException e) {
			Logger.fatalError("General IO error.", e);
		}
	}