The problem with developing an application that has several systems in it is the idea of the developer having to reconstruct all of the their systems from scratch. The concept of a macro application is not new but it seems to be avoided as a bad practice. The application would take advantage of things such as an external network traffic tool or chat functionality and is basically independent of the main application.
example
application()
{
invoke('network');
invoke('chat');
return application;
}