private synchronized void updateBoard() {
		if (this.board == null)
			this.board = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_4BYTE_ABGR);

		Graphics2D g = this.board.createGraphics();
		g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

		synchronized (this) {
			if (doCompleteRepaint) {
				for (PaintObject obj : backup) {
					obj.draw(g);
				}
				doCompleteRepaint = false;
			}
			for (PaintObject obj : ingoing) {
				obj.draw(g);
				backup.add(obj);
			}
			ingoing.clear();
		}

	}