public ArrayList<Card> buildDeck(Integer numPlayers){
		// local var's
		int lvSuitCount;
		int lvCardId = 0;
		Card lvNewCard;
		ArrayList<Card> lvNewCardDeck = new ArrayList<Card>();

		//evaluate input and set number of Suits for the new deck
		if (numPlayers == 2 || numPlayers == 3) {
			lvSuitCount = numPlayers + 2;	
		} else {
			throw new IllegalArgumentException("illegal numPlayers, must be 2 or 3");
		}
		
		//build numbered Cards based on suitCount i.e. numPlayers and Haggis-rulebook;
		for (int cardRank=2; cardRank <= 10; cardRank++){
			for (int suitNumber=0; suitNumber < lvSuitCount; suitNumber++){
				lvNewCard = new Card(cardRank*10+suitNumber, cardRank, Card.SUITS[suitNumber], cardRank % 2);
				lvNewCardDeck.add(lvNewCard);
			}
		}
		
		//shuffle numbered Cards using Knuth shuffle
		int lvDeckSize = lvNewCardDeck.size(); 
		for (int i=0; i<lvDeckSize; i++){
			int rand = i + (int) (Math.random() * (lvDeckSize-i));
			Collections.swap(lvNewCardDeck, rand, i);
		}
		
		//build JokerCards based on numPlayers
		final int[] fibo = {2,3,5};
		int jokerSuit = 5;
		for (int i=0; i < numPlayers; i++){
			for (int ii = 11; ii < 14; ii++){
				lvNewCard = new Card(ii*10+jokerSuit, ii , Card.SUITS[jokerSuit], fibo[ii-11]);
				lvNewCardDeck.add(lvNewCard);
			}
		}

		// I realise now, that the cardID is utterly useless. And Beni knew it.
		return lvNewCardDeck;
	}//buildDeck