base interface class