private static IEnumerator StartFadeOut(CanvasGroup group, float fadeDuration, Action finishedCallback)
    {
        float startingAlpha = group.alpha;
        float currentDuration = 0;
        float startTime = Time.time;

        while (currentDuration < fadeDuration) {
            group.alpha = Mathf.Lerp(startingAlpha, 0, currentDuration / fadeDuration);
            yield return 0;
            currentDuration = Time.time - startTime;
        }

        group.SetVisible(false);

        if (finishedCallback != null) {
            finishedCallback();
        }
    }