move stuff into CPP namespace
adding a new library generator