Heya, Some time ago I had problems with client.c's architecture. It would allow me to easily report completed discoveries without causing crashes. The attached patch moves all the static variables into the main BluetoothClient object, and instead of return a new object when using _new() we return an existing instance of the client. This makes no changes to the external API for the BluetoothClient, and should work just as well as older versions did. A couple of bugs I found in client.c: - launch test-client with a dongle inserted, remove and reinsert the dongle, the bdaddr of the device is not set anymore - launch test-client without a dongle inserted, insert it, the bdaddr is not set and there's no children to the adapter (although there are if inserted when started) - launch test-client with a dongle inserted, remove it, add another one, the set of known devices underneath hasn't changed All those problems exist in the old version of client.c, and I intend on fixing them, as well as making the search button work as expected in the device selection widget. Cheers