public boolean RemovePiece(Player player, int pieceID, boolean valid)
	{
		GamePiece curPiece = player.getPiece(pieceID);
		Location curLoc = GetPieceLocation(curPiece);
		
		if(!valid)
			return newMessageDialog("You cannot remove your own piece", 1500);

		
		if (curPiece == null)
		{
			return newMessageDialog("Invalid Piece ID - Piece not found", 1500);
		}
			
		if (!curPiece.inPlay())
		{
			return newMessageDialog("Invalid Piece - It is not placed or alive/in play", 1500);

		}
		
		if (player.getScore() > 3 && IsMill(curLoc))
		{
			return newMessageDialog("You cannot remove a member of a mill", 1500);

		}
		
		
		curLoc.setPiece(null);
		curPiece.setStatus(GamePiece.DEAD);
		// Grab the player's new calculated score.
		int score = player.getScore();
		
		if (score == 3 && !this.cheatMode){
			String s = "%s has engaged fly mode with 3 pieces remaining";
			s = String.format(s, player.getName());
			JOptionPane.showMessageDialog(this.mw, s);
		}
		
		// See if the player has less than 3 pieces remaining, that leads to gameover phase.
		// if not set the phase to movement phase.
		if(score < 3)
		{
			SetCurrentPhase(GAMEOVER_PHASE);
			// We will return false so we crown the correct victor 
			// We would stay on this player otherwise, because this method was
			// passed the opposite player of the current player to remove his piece.
			return false;
		} else
			SetCurrentPhase(MOVEMENT_PHASE);
		
		return true;

	}