add speaker && refactoring