finished base class and major interfaces