use c++0x standard for better compatibility