initial commit for 0018
accepted in C++11