Restructure files and add C++ generator