abstract
add broadcast
fix bug