no need for std::algorithm