I didn't do any performance investigation on this, since it just seems so much like the right approach.