now using asio::signal_set instead of std::signal