Improved std::update