1. Create a 'Q(Core|Gui)Application' object.
2. Create a 'KDSingleApplication' object.
3. Check if the current instance is *primary* (or master) or *secondary* (or slave) by calling 'isPrimaryInstance':
* the *primary* instance needs to listen from messages coming from the secondary instances, by connecting a slot to the 'messageReceived' signal;
* the *secondary* instances can send messages to the primary instance by calling 'sendMessage'.