def METHOD_NAME(args, logfile):
    log(logfile, f'starting download at {local_iso_time()} ...')
    start_time = time.time()
    course_instance_path = f'/course_instances/{args.course_instance_id}'
    course_instance_info = get_and_save_json(course_instance_path, 'course_instance_info', args, logfile)
    gradebook = get_and_save_json(f'{course_instance_path}/gradebook', 'gradebook', args, logfile)
    course_instance_access_rules = get_and_save_json(f'{course_instance_path}/course_instance_access_rules', 'course_instance_access_rules', args, logfile)
    assessments = get_and_save_json(f'{course_instance_path}/assessments', 'assessments', args, logfile)
    for assessment in assessments:
        assessment_instances = get_and_save_json(
                f'{course_instance_path}/assessments/{assessment["assessment_id"]}/assessment_instances', 
                f'assessment_{assessment["assessment_id"]}_instances', 
                args, logfile)
        assessment_access_rules = get_and_save_json(
                f'{course_instance_path}/assessments/{assessment["assessment_id"]}/assessment_access_rules', 
                f'assessment_{assessment["assessment_id"]}_access_rules', 
                args, logfile)
        for assessment_instance in assessment_instances:
            instance_questions = get_and_save_json(
                    f'{course_instance_path}/assessment_instances/{assessment_instance["assessment_instance_id"]}/instance_questions', 
                    f'assessment_instance_{assessment_instance["assessment_instance_id"]}_instance_questions', 
                    args, logfile)
            submissions = get_and_save_json(
                    f'{course_instance_path}/assessment_instances/{assessment_instance["assessment_instance_id"]}/submissions', 
                    f'assessment_instance_{assessment_instance["assessment_instance_id"]}_submissions', 
                    args, logfile)
            submission_log = get_and_save_json(
                    f'{course_instance_path}/assessment_instances/{assessment_instance["assessment_instance_id"]}/log', 
                    f'assessment_instance_{assessment_instance["assessment_instance_id"]}_log', 
                    args, logfile)
    end_time = time.time()
    log(logfile, f'successfully completed downloaded at {local_iso_time()}')
    log(logfile, f'total time elapsed: {end_time - start_time} seconds')