use std::cond_variable for event implementation
group sources