public ArrayList<Meld> getInitialMeld() throws Exception{
		ArrayList<Meld> melds;
		int score;
		
		melds = getGroups();
		melds.addAll(getRuns());
		
		melds = findLargestSubset(new ArrayList<Tile>(this.getTiles()), new ArrayList<Tile>(), melds);
		
		if(melds == null)
			return null;
		
		score = 0; 
		for(int i=0; i<melds.size(); i++)
			score = score + melds.get(i).getScore();
		
		if(score < 30)
			return null;
		
		// FIXME move this
		for(Set set : melds)
			for(Tile usedTile : set.getTiles())
				this.removeTile(usedTile);

		return melds;
	}