Nit: for these simple booleans, don't use a virtual method, but a local field and an implementation in the base class that returns it. That means less indirection at runtime.