added <numeric> for std::accumulate