baseclass should be abstract