<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def download(self, scenes, bands=None):
 """ Download scenese from Google Storage or Amazon S3 if bands are provided :param scenes: A list of scene IDs :type scenes: List :param bands: A list of bands. Default value is None. :type scenes: List :returns: (List) includes downloaded scenes as key and source as value (aws or google) """


        if isinstance(scenes, list):
            files = []

            for scene in scenes:

                # for all scenes if bands provided, first check AWS, if the bands exist
                # download them, otherwise use Google and then USGS.
                try:
                    # if bands are not provided, directly go to Goodle and then USGS
                    if not isinstance(bands, list):
                        raise RemoteFileDoesntExist
                    files.append(self.amazon_s3(scene, bands))

                except RemoteFileDoesntExist:
                    try:
                        files.append(self.google_storage(scene, self.download_dir))
                    except RemoteFileDoesntExist:
                        files.append(self.usgs_eros(scene, self.download_dir))

            return files

        else:
            raise Exception('Expected sceneIDs list')