                     has_neighbor = 1;
                     }
 
-                } while (0); // loop that we can break out of when we get exclusions
+                } while (0); // particle is processed exactly once
 
             // advance cur_offset
             cur_offset += threads_per_particle;

            static unsigned int max_block_size = UINT_MAX;
            if (max_block_size == UINT_MAX)
                max_block_size = get_max_block_size_multi(gpu_compute_nlist_multi_binned_kernel<2,cur_tpp>);
            if (compute_capability < 35) gpu_nlist_multi_binned_bind_texture(d_cell_xyzf, cli.getNumElements());

            unsigned int run_block_size = (block_size < max_block_size) ? block_size : max_block_size;
            dim3 grid(N / (block_size/threads_per_particle) + 1);

            static unsigned int max_block_size = UINT_MAX;
            if (max_block_size == UINT_MAX)
                max_block_size = get_max_block_size_multi(gpu_compute_nlist_multi_binned_kernel<1,cur_tpp>);
            if (compute_capability < 35) gpu_nlist_multi_binned_bind_texture(d_cell_xyzf,
                                                                             cli.getNumElements(),
                                                                             d_stencil,
                                                                             stencil_idx.getNumElements());

            unsigned int run_block_size = (block_size < max_block_size) ? block_size : max_block_size;
            dim3 grid(N / (block_size/threads_per_particle) + 1);
