Coroutines with multiple arguments

What's the best way to start a coroutine that has multiple arguments. For example:

// plays an animation and sends a message when done.
function PlayAnimWithCallback(aAnim, aObject, aCallback) {
    if (!aAnim.isPlaying) {
        aAnim.Play();
        yield WaitForSeconds(aAnim.clip.length);
        aObject.StartCoroutine(aCallback);
    }
}

Using the following gives an error along the lines of: "no appropriate version of '...StartCoroutine' for the argument list (System.String, System.Animation, System.Object, System.String) could be found."

yield StartCoroutine("PlayAnimWithCallback", snakeStrikeAnim, gameControllerScript, "StrikeAnimDone");

You could pass an array, a dictionary, or your own special object with your arguements.