Looks good to me. I've compile-tested this, but I don't have any of the relevant cards to test on.
--Aaron