I have a coroutine, which I called from the `Update()` method on every click.

First, I call `AddTrunk()` to add to my `trunkList`, before I use my coroutine to move the animation for 0.3 seconds. After 0.3 seconds, it calls `Destroy()`, and then it changes `transform.position`. However, before completing the animation, it runs `transform.position`; it first my tree down *first*, and then does the animation. 

----

This is where I call my coroutine:

    void Update () 
    {
        if (Input.GetMouseButtonDown (0)) 
        {
            AddTrunk ();

            if (!isRunning) 
            {
                StartCoroutine (BranchOutAnimation ());
            }
        }
  	}

Here is the coroutine `BranchOutAnimation()`:

    IEnumerator BranchOutAnimation()
    {
        while (true) 
        {
            isRunning = true;
            iTween.MoveTo (trunkList[index], 
                new Vector3 (trunkList[index].transform.position.x 
                - 5f, trunkList[index].transform.position.y, 
                trunkList [index].transform.position.z), 0.3f);
            yield return new WaitForSeconds (0.3f);

            Destroy (trunkList [index]);
            trunkList.RemoveAt (index);
            transform.position = new Vector3 (transform.position.x, transform.position.y 
                - treeHeight, transform.position.z);
            isRunning = false;
            yield break;
        }
    }

----

What am I doing wrong?