must be compatible with parent class