event handlers for subclasses to implement