def shutdown(self):

        # Cancel all the dcalls here
        dcall_discard(self, 'sendStatus_dcall')
        dcall_discard(self, 'statusLimit_dcall')

        # If I'm still syncing, shutdown the SyncManager
        if self.sm:
            self.sm.shutdown()

        # Shut down the MessageRoutingManager (and broadcast NX)
        if self.mrm:
            self.mrm.shutdown()

        # Shut down the BridgeServerManager
        if self.bsm:
            self.bsm.shutdown()

        # Shut down all nodes
        for n in self.nodes:
            n.shutdown(self.main)

        # Shut down the PingManager (and notify outbounds)
        if self.pgm:
            self.pgm.shutdown()

        # Shut down the BanManager (just cancels some dcalls)
        if self.banm:
            self.banm.shutdown()

        # Shut down the BridgeClientManager
        if self.bcm:
            self.bcm.shutdown()

        # Shut down the SyncRequestRoutingManager
        if self.yqrm:
            self.yqrm.shutdown()