use more modern C++