use signals and slots for global message handling (multithreading)