use more c++ 11 feature