rewritten in C++