internal void TerminateInternal()
{
List<string> dispose = new List<string> ();
foreach (string bus_name in applications.Keys)
dispose.Add (bus_name);
// TODO: Thread safety
foreach (string bus_name in dispose)
if (applications.ContainsKey (bus_name))
applications [bus_name].Dispose ();
applications = null;
}