Refactored initialization code. - More detailed logging - Use exceptions to better propagate errors - Log signal type before shutdown