separate delare and broadcast
refactoried and others