Finished C++14 version