Based on Qt's implementation of signals/slots ( not asynchronous )