Made compatible with c++0x