ahh, i see. so instead of calling `finish()` here, down below when you get `counts.back()`, I would change it to use the internal `detail::read_single_value()` function which takes a queue argument and enqueues the operation. so something like: `return result + detail::read_single_value(counts.get_buffer(), counts.size() - 1, queue);`. This will still block at the end, but will remove the need for two separate host-device synchronization points (which happens now when you explicitly call `finish()`).