refactored talk method