turn broadcasts into a function rather than a channel