start adding C++ functionality