Here comes C++ version