temp = comm.recv(source = remoteJ, tag = 3*k - 2)
	    print 'POLLING SITE ' + str(rank) + ': receive local_large from REMOTE SITES' + ', STEP ' + str(k)
            for tranAndSup in temp:
                '''update large_site'''
                [local_pruning, large_site] = polling.insert(tranAndSup, remoteJ,local_pruning, large_site)
    
    '''gather support values'''
    temp = comm.gather(Transaction, 0)   
    if rank == 0:
    	for pollingJ in range(1,size):
	    comm.send(temp[1:], pollingJ, 3*k-1)
	
    if rank != 0:
        '''generate global large sets'''
	temp = comm.recv(source = 0, tag = 3*k-1)
        Global_set, Global_set_supp = polling.gen_global_set(temp, size-1, NORM, SUP, local_pruning)    
    
    '''homesite'''
    '''get global sets from all polling sites'''
    temp = comm.gather(Global_set, 0)
    temp_supp = comm.gather(Global_set_supp, 0)
    site = comm.gather(large_site, 0)
    if rank == 0:
	print 'HOME SITE: get Global_large and large_site from POLLING SITES ' + ', STEP ' + str(k)
        temp = temp[1:]
	temp_supp = temp_supp[1:]
        site = site[1:]
	if k == 1:
	    large_supp = {}
        '''generate large set'''
        large, large_supp = home.compute_large(temp, temp_supp, site, size - 1, CONF, large, large_supp)
    Global_set = [[]] * size
    Global_set_supp = Global_set
    large_site = {}  # large_site[rank] = {transaction:[site1,site2,...],...}
    for rank in range(size):
        """receive local_large sets from all remote sites"""
        local_pruning = []  # Local_Pruning[rank] = [transaction1,transaction2,...]
        large_site[rank] = {}  # large_site[rank] = {transaction:[site1,site2,...],...}
        for remoteJ in range(size):
            """receive LL(i,j)(k) to rank j site"""
            temp = local_large[remoteJ][rank]
            for tranAndSup in temp:
                """update large_site"""
                [local_pruning, large_site[rank]] = polling.insert(tranAndSup, remoteJ, local_pruning, large_site[rank])
            """gather support values, in Transacion"""
            """generate global large sets"""
        result = polling.gen_global_set(Transaction, size, NORM, SUP, local_pruning)
        Global_set[rank] = result[0]
        print Global_set[rank]
        Global_set_supp[rank] = result[1]
        print Global_set_supp[rank]

    """homesite"""
    """get global sets from all polling sites, in Global_set"""
    """generate large set"""
    large = {}
    large_supp = {}
    large, large_supp = home.compute_large(Global_set, Global_set_supp, large_site, size, large, large_supp)
    if len(large) == 0:  # no transactions added (global_large)
        print "BREAK IN STEP " + str(k) + " global_set no update"
        break