re-worked talk_state