         int flag = 0;
         // FIXME: change Operator and its args as well
         if (hd_queue_info().queue_sizes[bin] == 0) continue;
-        if (bin == 0 || true) {
+        if (false) { // bin == 0
             threads_per = 1;
             TM.start();
-            forAllEdgesAdjUnionSequential(hornet, hd_queue_info().queues[bin], op, flag);
+            // forAllEdgesAdjUnionSequential(hornet, hd_queue_info().queues[bin], op, flag);
             TM.stop();
             TM.print("running next bin");
             TM.reset();

    for (auto i = queue_id; i < size; i += queue_stride) {
        auto src_vtx = hornet.vertex(array[i].x);
        auto dst_vtx = hornet.vertex(array[i].y);
        int srcLen = src_vtx.out_degree();
        int destLen = dst_vtx.out_degree();
        int total_work = srcLen + destLen;
        vid_t src = src_vtx.id();
        vid_t dest = dst_vtx.id();

        OPERATOR(Vertex& src, Vertex& dst, Edge& edge) {
            // Choose the bin to place this edge into
            if (src.id() > dst.id()) return; // imposes ordering
            int bin = 1;
            //bin = bin | (1 * (src.degree() + dst.degree() > 128));
            /*
            if (src.degree() + dst.degree() <= 256)
                bin = 0;
            else if (src.degree() + dst.degree() <= 256)
                bin = 1;
            else if (src.degree() + dst.degree() > 256)
                return;
            */
            // Either count or add the item to the appropriate queue
            if (countOnly)
                atomicAdd(&(d_queue_info.ptr()->queue_sizes[bin]), 1);
