add C++ support