compatible for compiling with gcc 4.7, AS IS! :D