~ sync with scx upstream
! joinable() must be checked before join()!
! if (stream.is_open()) => if (stream)
~ use more c++11 features