public static TransactionSet DoApriori(TransactionSet transSet,double minSupportLevel) {
		ItemSet initialItemSet = transSet.GetUniqueItems();//get all singular unique items and put them into a ItemSet object
		TransactionSet finalLargeItemSet = new TransactionSet(); // resultant large itemsets
		TransactionSet LargeItemSet = new TransactionSet(); // large itemset in each iteration
		TransactionSet CandidateItemSet = new TransactionSet(); // candidate itemset in each iteration

		// first iteration (1-item itemsets)
		
		for (int i = 0; i < initialItemSet.getItemSet().size(); i++) {
			Item candidateItem = initialItemSet.getItemSet().get(i);
			ItemSet candidateItemSet = new ItemSet();
			candidateItemSet.getItemSet().add(candidateItem);
			double findSupport = transSet.findSupport(candidateItemSet);//calculate and find each successive support level for an transaction (remember it is an itemSet)
			candidateItemSet.setItemSetSupport(findSupport/(transSet.getTransactionSet().size()));//Set each successive support level for its respective transaction (remember it is an itemSet)
		 
			//CandidateItemSet.getTransactionSet().add(candidateTrans);
			
			if (candidateItemSet.getItemSetSupport() >= minSupportLevel) {
				//candidateItemSet.getItemSet().add(candidateItem);
				//Transaction candidateTrans = new Transaction(candidateItemSet);
				CandidateItemSet.getTransactionSet().add(new Transaction(candidateItemSet));
			}
		}

			CandidateItemSet = (CandidateItemSet.twoItemSubsets(CandidateItemSet, minSupportLevel, transSet));
			
		// next iterations
		int k = 3;
		while (CandidateItemSet.getTransactionSet().size() != 0) {
			//set LargeItemSetIteration from CandidateItemSet (pruning)
			LargeItemSet.getTransactionSet().clear();
			//System.out.println("START");
			for (Transaction transaction : CandidateItemSet.getTransactionSet()) {//loop through each transaction in each TransactionSet
				double findSupport = transSet.findSupport(transaction.getTransaction());//calculate and find each successive support level for an transaction (remember it is an itemSet)
				transaction.getTransaction().setItemSetSupport(findSupport/(transSet.getTransactionSet().size()));//Set each successive support level for its respective transaction (remember it is an itemSet)

				
				if (transaction.getTransaction().getItemSetSupport() >= minSupportLevel) {//Determine if the itemSet's support level meets or exceeds the supportThreshold to filter out
					
					//System.out.println(transaction.toString() + "-" + findSupport);//debugging info
					
					LargeItemSet.getTransactionSet().add(transaction);
					//if (transaction.getTransaction().getItemSet().size() > 1) {// this might not work in the long run
						
					
					finalLargeItemSet.getTransactionSet().add(transaction);//add the resultingLargeItemSet of final 
					//}
				}

			}
			CandidateItemSet.getTransactionSet().clear();//clear up the candidates to prep for finding all subsets
			//System.out.println("making candidates");
			CandidateItemSet = (CandidateItemSet.findKItemSubsets(LargeItemSet.GetUniqueItems(), k));//Add all the combinations of subsets for a given set of unique items/ItemSets
			//System.out.println("done making candidates");
			k += 1;
		}
		return finalLargeItemSet;//final returned value


	}