simplified by just doing an early break. This works, but causes issues because the channel never actually closes. Still WIP.