allow subclasses