add c++ functions