container class
virtual functions