private IEnumerator RunConversationCoroutine(Conversation conversation)
    {
        IsInProgress = true;

        Coroutine alignCoroutine = conversation.alignCharacters ? StartCoroutine(AlignCharactersCoroutine()) : null;

        if (conversation.controlCamera)
            camera.target = conversationTarget;
        
        foreach(DialogCard card in conversation.Cards())
        {
            dialog.SetDialogQueue(card);
            dialog.DisplayNextCard();
            while (dialog.IsDisplaying())
                yield return null;

            yield return null;
        }

        if (alignCoroutine != null)
            StopCoroutine(alignCoroutine);
        camera.target = teaganFollowTarget;

        IsInProgress = false;
    }