use C++ idiom