reworked some base classes