Allow custom signal names
Add message arg and clean up some bugs exposed in the process