replaced boost with c++11