It's probably better to have a name other than "Error" in the base class - otherwise you end up having a "Warning" subclassing an "Error". BaseCheckMessage perhaps? (any other collective noun for "errors and warnings" will also do.