this is much much simpler with just multicast