refactored baseclass inheritance