public void ProcessNext()
    {
        Card c = stack.RemoveFirst();

        if (!c)
        {
            if (IsCurrentLevelComplete())
            {
                EndLevel();
            }
            else
            {
                ShowRestart();
                AudioManager.Instance.Highpass(true);
                AudioManager.Instance.PlayEffectAt(18, Vector3.zero, 0.5f);
                AudioManager.Instance.PlayEffectAt(26, Vector3.zero, 0.5f);
            }

            return;
        }

        float height = 1.5f;

        Vector3 pos;

        c.AddMove(guide1.position, true);
        c.AddMove(guide2.position, true);
        c.AddMove(startPoint.position, true);

        bool addExtraDelay = false;

        if (!treeFirst)
        {
            if (level == 0)
            {
                ShowTutorial(3, 0.5f);
                Invoke("DelayedTutorialHide", 3.5f);
                c.delayBeforeNext = 3f;
            }

            treeFirst = c;
            pos       = startPoint.position + new Vector3(0f, height * 0.75f, 0f);
            c.SetLineRoot(startPoint.position);
        }
        else
        {
            Card  parent = treeFirst.AddLink(c);
            float mod    = c.number < parent.number ? -1f : 1f;
            pos = parent.transform.position + new Vector3(1f * mod * lengthSlider.value, height * lengthSlider.value, 0f);
        }

        pos.z = 0;

        c.AddMove(pos, false);

        c.NextMove(0);
    }