basic structure for derived classes