more flexible bcast use