first round of flexibility: added baseclass