Why can't we just have a `BooleanValue` class that references a `BooleanType` class which inherits from a `Type` class? That's more consistent with the front-end, simplifies this interface, and seems to be more amenable to extension (see [open/closed principle](http://en.wikipedia.org/wiki/Open/closed_principle))