The upside, of course, is that this approach uses the type system in a better way.