improve broadcast method