private void makeSuggestion(Player suggester){

		cluedo.board.Room physicalRoom = suggester.getRoom();
		if (physicalRoom == null){
			// player is not in a room
			Dialogs.showMustBeInRoomWarning();
		}
		Game.Room room = physicalRoom.getName();

		MurderHypothesis suggestion = selectSuggestion(room);

		if (suggestion == null){
			// player cancelled the suggestion
			return;
		}

		Player suggestedPlayer = null;
		for(Player p: game.getPlayers()){
			if(p.getPiece().getCharacter() == suggestion.getCharacter().getCharacter()){
				suggestedPlayer = p;
				break;
			}
		}

		cluedo.board.Room suggestedRoom = null;
		for(cluedo.board.Room r: board.rooms){
			if(r.getName() == suggestion.getRoom().getRoom()){
				suggestedRoom = r;
				break;
			}
		}

		board.removePlayerFromBoard(suggestedPlayer);
		board.placePlayerInRoom(suggestedPlayer, suggestedRoom);

		// else proceed with suggestion
		Player currentPlayer = game.getPlayerToLeft(suggester);
		// cycle through all player
		for (int playerCount = 0; playerCount < game.getNumberOfPlayers()-1; playerCount++){

			List<Card> matchingCards = new ArrayList<Card>();
			matchingCards.addAll(suggestion.whichCardsMatch(currentPlayer.getCards()));
			if (matchingCards.isEmpty()){
				Dialogs.showCantRefuteDialog(currentPlayer, suggestion);
			}
			else {
				// player can refute, show dialog asking them to choose which card to refute with
				Card refuteCard = Dialogs.showCanRefuteDialog(currentPlayer, suggestion, matchingCards);
				Dialogs.showWasRefutedDialog(suggester, currentPlayer, refuteCard);
				// move onto the next turn
				nextTurn();
				return;
			}
			currentPlayer = game.getPlayerToLeft(currentPlayer);
		}

		// cycled through all players which means the suggestion must be correct!
		winGame(currentPlayer);
	}