Subclassing to share functionality