designing base classes