def download(self, downloader,
                 report_back=lambda message, level=logging.INFO: None):
        """This method fetches repository into a temporary directory
        and returns path to this directory.

        It can report about downloading status using callback `report_back`.
        Everything what will passed to `report_back`, will be displayed to
        the end user in a processing log on a "Tune" page.
        """

        if isinstance(downloader, dict):
            params = downloader.get('params', {})
            downloader = downloader['name']
        else:
            params = {}

        params.update(self.downloader_settings or {})

        download = get_downloader(downloader)
        return download(self.source,
                        report_back=report_back,
                        **params)