This is cute, and would be nice in client code, but does quite a bit more work than the straight approach.