refactored to use speaker queue