use c++0x to be compatible with more compilers