make signal_handler optional