original upstream version
compile at c++11