text: exports.newDesktopApp = function newDesktopApp() {
  
      let thisObject = {
          userProfiles: undefined,
          p2pNetworkClient: undefined,
          p2pNetwork: undefined,
          p2pNetworkPeers: undefined,
          webSocketsInterface: undefined,
          webAppInterface: undefined,
          p2pNetworkInterface: undefined,
          socialGraph: undefined,
          run: run
      }
  
      DK.desktopApp = thisObject
  
      return thisObject
  
      async function run() {
  
          await setupNetwork()
          await setupServices()
  
          async function setupNetwork() {
              /*
              We set up ourselves as a Network Client.
              */
              thisObject.p2pNetworkClient = SA.projects.network.modules.p2pNetworkClient.newNetworkModulesP2PNetworkClient()
              await thisObject.p2pNetworkClient.initialize()
              /*
              We will read all user profiles plugins and get from there our network identity.
              */
              thisObject.userProfiles = SA.projects.network.modules.userProfiles.newNetworkModulesUserProfiles()
              await thisObject.userProfiles.initialize(global.env.DESKTOP_APP_SIGNING_ACCOUNT, thisObject.p2pNetworkClient)
              /*
              We set up the P2P Network.
              */
              thisObject.p2pNetwork = SA.projects.network.modules.p2pNetwork.newNetworkModulesP2PNetwork()
              await thisObject.p2pNetwork.initialize('Network Client')
              /*
              Set up the connections to network nodes.
              */
              thisObject.p2pNetworkPeers = SA.projects.network.modules.p2pNetworkPeers.newNetworkModulesP2PNetworkPeers()
              await thisObject.p2pNetworkPeers.initialize(
                  'Network Client',
                  thisObject.p2pNetworkClient,
                  thisObject.p2pNetwork,
                  global.env.DESKTOP_APP_MAX_OUTGOING_PEERS
              )
          }
  
          async function setupServices() {
              /*
              This is where we will process all the messages comming from our web app.
              */
              thisObject.webAppInterface = DK.projects.socialTrading.modules.webAppInterface.newSocialTradingModulesWebAppInterface()
              /*
              This is where we will process all the events comming from the p2p network.
              */
              thisObject.p2pNetworkInterface = DK.projects.socialTrading.modules.p2pNetworkInterface.newSocialTradingModulesP2PNetworkInterface()
              /*
              This is the Personal Social Graph for the user running this App.
              */
              thisObject.socialGraph = DK.projects.socialTrading.modules.socialGraph.newSocialTradingModulesSocialGraph()
              await thisObject.socialGraph.initialize()
              /* 
              These are the Network Interfaces by which the Web App interacts with this Desktop Client.
              */
              thisObject.webSocketsInterface = DK.projects.socialTrading.modules.webSocketsInterface.newDesktopModulesWebSocketsInterface()
              thisObject.webSocketsInterface.initialize()
              console.log('Desktop Client Web Sockets Interface ......................................... Listening at port ' + JSON.parse(DK.desktopApp.p2pNetworkClient.node.config).webSocketsPort)
  
              thisObject.httpInterface = DK.projects.socialTrading.modules.httpInterface.newDesktopModulesHttpInterface()
              thisObject.httpInterface.initialize()
              console.log('Desktop Client Http Interface ................................................ Listening at port ' + JSON.parse(DK.desktopApp.p2pNetworkClient.node.config).webPort)
          }
      }
  }
  