move std::erase_if => util::erase_if
don't initialize sources multiple times