API inspired by C++11 standard library