support for C++98 standard