multicast abstraction