IEnumerator SnailWaitRepeat(AVR_Snail snail)
    {
        int moveAmount = (int)Random.Range(1f, 30.0f);

        snail.Move(moveAmount);

        float waitTime = Random.Range(0.2f, 3f);

        yield return(new WaitForSecondsRealtime(waitTime));

        StartCoroutine(SnailWaitRepeat(snail));
    }
    // Update is called once per frame
    void Update()
    {
        if (isFlip)
        {
            Flip();
            isFlip = false;
        }
        if (Input.GetKeyUp(KeyCode.Space))
        {
            Flip();
        }

        if (!_isTesting && isTesting)
        {
            // Turn on Testing
            StartTesting();
            _isTesting = isTesting;
        }

        if (_isTesting && !isTesting)
        {
            // Turn off Testing
            StopTesting();
            _isTesting = isTesting;
        }

        // Get Leader
        float leaderX = float.PositiveInfinity;

        foreach (AVR_Snail snail in snails)
        {
            //Bounds b = item.bodyGeo.GetComponent<Renderer>().bounds;
            //if (b.center.x < leaderX)
            if (snail.bodyGeo.position.x < leaderX)
            {
                leaderX         = snail.bodyGeo.position.x;
                leader          = snail.name;
                bottomText.text = "Heart to Snail\n" + snail.name + " Leads";
                leadSnail       = snail;
                camera.target   = leadSnail.bodyGeo.transform;
            }
        }

        // Make sure trailing snails catch up to leader
        foreach (AVR_Snail snail in snails)
        {
            if (snail.bodyGeo.position.x > leadSnail.bodyGeo.position.x + maxLead && !isFlipped)
            {
                snail.MoveFixedAmount((leadSnail.bodyGeo.position.x - snail.bodyGeo.position.x) / 30);
            }
        }
    }