I have a coroutine which I called from the update on every click.

like this 

    void Update () {
    			if (Input.GetMouseButtonDown (0)) {
    				AddTrunk ();
    				if (!isRunning) {
    					StartCoroutine (BranchOutAnimation ());
    				}
    			}
    		}

and I don't know the problem but I am not able to get proper output.

Here is the code for coroutine,

    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;
    			}
    		}

now here is the flow what I want first AddTrunk method call then it run move animation for 0.3 seconds and after 0.3 seconds it calls destroy and then it changes `transform.position` but in my case before completing animation it runs `transform.animation` and because of that problem it first moves my tree down and then does animation. now tell me or guide me what I did wrong?