Ah, one more thing. You can nest coroutines. That is, if you start a coroutine from inside a coroutine the outer coroutine waits for the inner to finish and resumes execution at the right point. If you call StopCoroutine() with the IEnumerator handle from the outer coroutine while execution is in the inner coroutine the whole thing stops, just as expected.