     std::partial_sum(queue_sizes, queue_sizes+MAX_ADJ_UNIONS_BINS, queue_pos+1);
     // transfer prefx results to device
     cudaMemcpy(hd_queue_info().d_queue_pos, queue_pos, (MAX_ADJ_UNIONS_BINS+1)*sizeof(unsigned long long), cudaMemcpyHostToDevice);
-   /* 
+    /* 
     for (auto i = 0; i < MAX_ADJ_UNIONS_BINS+1; i++)
         printf("queue=%d prefix sum: %llu\n", i, queue_pos[i]);
-   */
+    */
     // bin edges
     if (vertex_pairs.size())
         forAllVertexPairs(hornet, vertex_pairs, bin_edges {hd_queue_info, false});

    TM.stop();
    TM.print("queueing and binning:");
    TM.reset();
    
    // balanced kernel
    unsigned int start_index = 0;
    unsigned int end_index = queue_pos[MAX_ADJ_UNIONS_BINS/2];
    long long size = end_index - start_index;
    printf("balanced, (%llu, %llu), size=%llu\n", start_index, end_index, size); 
    TM.start();
    forAllEdgesAdjUnionBalanced(hornet, hd_queue_info().d_edge_queue, start_index, end_index, op, 0);
    TM.stop();

    end_index = queue_pos[MAX_ADJ_UNIONS_BINS];
    size = end_index - start_index;
    printf("imbalanced, (%llu, %llu), size=%llu\n", start_index, end_index, size); 
    totalEdgesCounted += size;
    TM.start();
    forAllEdgesAdjUnionImbalanced(hornet, hd_queue_info().d_edge_queue, start_index, end_index, op, 1);
    TM.stop();
    TM.reset();
    TM.print("imbalanced kernel runtime:");
    std::cout << "total edges in graph: " << hornet.nE() << std::endl; 
    std::cout << "total edges processed: " << totalEdgesCounted << std::endl;
    free(queue_sizes);
    free(queue_pos);
}
