<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def start(self):
 """ Perform full system setup. Method logs in and sets auth token, urls, and ids for future requests. Essentially this is just a wrapper function for ease of use. """

        if self._username is None or self._password is None:
            if not self.login():
                return
        elif not self.get_auth_token():
            return

        camera_list = self.get_cameras()
        networks = self.get_ids()
        for network_name, network_id in networks.items():
            if network_id not in camera_list.keys():
                camera_list[network_id] = {}
                _LOGGER.warning("No cameras found for %s", network_name)
            sync_module = BlinkSyncModule(self,
                                          network_name,
                                          network_id,
                                          camera_list[network_id])
            sync_module.start()
            self.sync[network_name] = sync_module
        self.cameras = self.merge_cameras()