for subclassing