improve the broadcast implementation