refactors talk()