Cpp interface