public void paintComponents(Board newBoard, boolean turn) {
		board = newBoard;
		pane.removeAll();
		JButton[] buttons = new JButton[64];
		pane.setLayout(new GridBagLayout());
		GridBagConstraints c = new GridBagConstraints();
		ButtonListener bl = new ButtonListener(this, game);
		ButtonObserver bo = new ButtonObserver(game);

		LinkedList<Coordinate> allowedFields = board
				.getAllowedFields(game.orderMark);

		for (Integer index = 0; index < 64; index++) {
			buttons[index] = new JButton(index.toString());
			c.fill = GridBagConstraints.BOTH;
			c.gridx = board.coordinates[index].getY();
			c.gridy = board.coordinates[index].getX();
			c.weightx = 0.5;
			c.weighty = 0.5;
			c.insets = new Insets(3, 3, 3, 3);
			buttons[index].setPreferredSize(new Dimension(50, 50));
			buttons[index].setText("");
			buttons[index].setBackground(board.getField(
					board.coordinates[index]).getColor());
			buttons[index].setActionCommand(index.toString());
			buttons[index].addActionListener(bl);
			bl.addObserver(bo);
			buttons[index].setEnabled(false);
			for (Coordinate coord : allowedFields) {
				int field = coord.getIndex();
				if (field == index && turn) {
					buttons[index].setEnabled(true);
					buttons[index].setBackground(new Color(200, 200, 200));
				}
				if (field == index && index == hint && turn) {
					buttons[index].setBackground(Color.magenta);
				}
			}
			pane.add(buttons[index], c);

		}
		JButton button;
		button = new JButton("Current Mark");
		c.fill = GridBagConstraints.BOTH;
		c.gridx = 8;
		c.gridy = 1;
		c.weightx = 0.5;
		c.weighty = 0.5;
		c.insets = new Insets(0, 15, 0, 15);
		button.setPreferredSize(new Dimension(50, 50));
		button.setText("");
		button.setBackground(game.orderMark.getColor());
		button.setEnabled(false);
		pane.add(button, c);
		
		button = new JButton("Hint");
		c.fill = GridBagConstraints.HORIZONTAL;
		c.gridx = 8;
		c.gridy = 4;
		c.weightx = 0.5;
		c.weighty = 0.5;
		c.insets = new Insets(3, 15, 3, 15);
		button.setPreferredSize(new Dimension(150, 50));
		button.addActionListener(new ActionListener() {
			/*
			 * (non-Javadoc)
			 * 
			 * @see
			 * java.awt.event.ActionListener#actionPerformed(java.awt.event.
			 * ActionEvent)
			 */
			public void actionPerformed(ActionEvent event) {
				giveHint(board);
			}
		});
		pane.add(button, c);
		
		if (mainGUI.multiplayer) {
			button = new JButton("Lobby");
			c.fill = GridBagConstraints.HORIZONTAL;
			c.gridx = 8;
			c.gridy = 5;
			c.weightx = 0.5;
			c.weighty = 0.5;
			c.insets = new Insets(3, 15, 3, 15);
			button.setPreferredSize(new Dimension(150, 50));
			button.addActionListener(new ActionListener() {
				/*
				 * (non-Javadoc)
				 * 
				 * @see
				 * java.awt.event.ActionListener#actionPerformed(java.awt.event.
				 * ActionEvent)
				 */
				public void actionPerformed(ActionEvent event) {
					frame.dispose();
					LobbyGUI.lobbyGUI.startLobbyGUI();
				}
			});
			pane.add(button, c);
		}
		
		if (!mainGUI.multiplayer) {
			button = new JButton("Restart Game");
			c.fill = GridBagConstraints.HORIZONTAL;
			c.gridx = 8;
			c.gridy = 5;
			c.weightx = 0.5;
			c.weighty = 0.5;
			c.insets = new Insets(3, 15, 3, 15);
			button.setPreferredSize(new Dimension(150, 50));
			button.addActionListener(new ActionListener() {
				/*
				 * (non-Javadoc)
				 * 
				 * @see
				 * java.awt.event.ActionListener#actionPerformed(java.awt.event.
				 * ActionEvent)
				 */
				public void actionPerformed(ActionEvent event) {
					frame.dispose();
					game.restartGame();
				}
			});
			pane.add(button, c);
		}
		
		button = new JButton("Main Menu");
		c.fill = GridBagConstraints.HORIZONTAL;
		c.gridx = 8;
		c.gridy = 6;
		c.weightx = 0.5;
		c.weighty = 0.5;
		c.insets = new Insets(3, 15, 3, 15);
		button.setPreferredSize(new Dimension(150, 50));
		button.addActionListener(new ActionListener() {
			/*
			 * (non-Javadoc)
			 * 
			 * @see
			 * java.awt.event.ActionListener#actionPerformed(java.awt.event.
			 * ActionEvent)
			 */
			public void actionPerformed(ActionEvent event) {
				MainGUI.mainGUI.numberOfPlayers = "4";
				MainGUI.mainGUI.startMainGUI();
				frame.dispose();
			}
		});
		pane.add(button, c);

		button = new JButton("Quit");
		c.fill = GridBagConstraints.HORIZONTAL;
		c.gridx = 8;
		c.gridy = 7;
		c.weightx = 0.5;
		c.weighty = 0.5;
		c.insets = new Insets(3, 15, 3, 15);
		button.setPreferredSize(new Dimension(150, 50));
		button.addActionListener(new ActionListener() {
			/*
			 * (non-Javadoc)
			 * 
			 * @see
			 * java.awt.event.ActionListener#actionPerformed(java.awt.event.
			 * ActionEvent)
			 */
			public void actionPerformed(ActionEvent event) {
				frame.dispose();
			}
		});
		pane.add(button, c);

		JLabel label;
		label = new JLabel("Current Player:");
		label.setFont(new Font("SANS_SERIF", Font.PLAIN, 18));
		label.setPreferredSize(new Dimension(300, 50));
		c.fill = GridBagConstraints.BOTH;
		c.gridx = 8;
		c.gridy = 0;
		c.weightx = 0.5;
		c.weighty = 0.5;
		c.insets = new Insets(3, 15, 0, 15);
		pane.add(label, c);
		
		label = new JLabel(game.order.get(game.orderMark).getUsername());
		label.setFont(new Font("SANS_SERIF", Font.PLAIN, 18));
		c.fill = GridBagConstraints.BOTH;
		c.gridx = 8;
		c.gridy = 2;
		c.weightx = 0.5;
		c.weighty = 0.5;
		c.insets = new Insets(3, 15, 0, 15);
		pane.add(label, c);
		pane.repaint();
		pane.revalidate();
	}