public String getWinner(List<Card> black, List<Card> white) {
		reset();
		blackCards = black;
		whiteCards = white;
		Hand whType = getHand(whiteCards, whiteHand);
        Hand bhType = getHand(blackCards, blackHand);
        String winner;
 
        int cmp = whType.compareTo(bhType);
        if(cmp==0) {
        	switch (whType) {
        	case TWOPAIR:
        		cmp = cmpByHighCard(whiteHand, blackHand);
        		if(cmp==0){
        			cmp = cmpByHighCard(whiteHand.subList(0, 2), blackHand.subList(0, 2));
        		}
        		if(cmp==0){
        			List<Card> wRemaining = new ArrayList<>(whiteCards);
            		List<Card> bRemaining = new ArrayList<>(blackCards);
            		wRemaining.removeAll(whiteHand);
            		bRemaining.removeAll(blackHand);
        			cmp = cmpByHighCard(wRemaining, bRemaining);
        		}
        		break;
        	case PAIR:
        		List<Card> wRemaining = new ArrayList<>(whiteCards);
        		List<Card> bRemaining = new ArrayList<>(blackCards);
        		wRemaining.removeAll(whiteHand);
        		bRemaining.removeAll(blackHand);
        		cmp = cmpByRecursiveHighCard(wRemaining,bRemaining );
        		break;
			case HIGHCARD:
				cmp = cmpByRecursiveHighCard(whiteCards, blackCards);
				break;
			}
        }
        winner = cmp > 0 ? WHITE : cmp < 0 ? BLACK : TIE;
        return winner;
	}