abstract classes, build process