initial commit for 0019
accepted in C++11