added ported apriori implementation