base class and user class