diff --git a/workflow/conf/biohpc.config b/workflow/conf/biohpc.config
index 07407ef8c8d5c3b4f34f0ade0b9ff2c8d78b69ce..739fce695526dc7434cd5cbc0b42c38e4ed32bd1 100644
--- a/workflow/conf/biohpc.config
+++ b/workflow/conf/biohpc.config
@@ -60,7 +60,14 @@ process {
     module = ['python/3.6.1-2-anaconda', 'meme/4.11.1-gcc-openmpi', 'bedtools/2.26.0']
     cpus = 32
   }
-
+  withName: softwareVersions {
+    module = ['python/3.6.1-2-anaconda']
+    executor = 'local'
+  }
+  withName: softwareReport {
+    module = ['python/3.6.1-2-anaconda']
+    executor = 'local'
+  }
 }
 
 params {
diff --git a/workflow/main.nf b/workflow/main.nf
index ceed1c12bc6a9dd939199e32e7197bffc6df8db2..513c4b55164881a06eb256de0e79d766352fd973 100644
--- a/workflow/main.nf
+++ b/workflow/main.nf
@@ -47,6 +47,7 @@ cutoffRatio = params.cutoffRatio
 outDir = params.outDir
 extendReadsLen = params.extendReadsLen
 topPeakCount = params.topPeakCount
+references = params.references
 
 // Check design file for errors
 process checkDesignFile {
@@ -478,7 +479,7 @@ process diffPeaks {
 }
 
 // Collect Software Versions and references
-process softwareVersions {
+process softwareReport {
 
   input:
 
@@ -495,10 +496,12 @@ process softwareVersions {
   experimentQCVersions
 
   output:
-  file 'software_versions_mqc.yaml' into softwareVersions
+  file '*_mqc.yaml' into softwareVersions
+  file '*_mqc.yaml' into softwareReferences
 
   script:
   """
-  software_report.py > software_versions_mqc.yaml
+  python3 $baseDir/scripts/software_report.py -o software_versions
+  python3 $baseDir/scripts/generate_references.py -r $references -o software_references
   """
 }
diff --git a/workflow/scripts/software_report.py b/workflow/scripts/software_report.py
index 5f9abe1aed34ba27b9d5aba0ed334533497a554a..2823bcef1518ed511a68faf215b818a65f14f7a1 100644
--- a/workflow/scripts/software_report.py
+++ b/workflow/scripts/software_report.py
@@ -6,9 +6,22 @@
 from __future__ import print_function
 from collections import OrderedDict
 import re
+import logging
+import argparse
 
+EPILOG = '''
+For more details:
+        %(prog)s --help
+'''
 
-software_regex = {
+# SETTINGS
+
+logger = logging.getLogger(__name__)
+logger.addHandler(logging.NullHandler())
+logger.propagate = False
+logger.setLevel(logging.INFO)
+
+SOFTWARE_REGEX = {
     'Trim Galore!': ['version_trimgalore.txt', r"version (\S+)"],
     'Cutadapt': ['version_cutadapt.txt', r"Version (\S+)"],
     'BWA': ['version_bwa.txt', r"Version: (\S+)"],
@@ -25,45 +38,72 @@ software_regex = {
     'deepTools': ['version_deeptools.txt', r"deeptools (\S+)"],
 }
 
-results = OrderedDict()
-results['Trim Galore!'] = '<span style="color:#999999;\">N/A</span>'
-results['Cutadapt'] = '<span style="color:#999999;\">N/A</span>'
-results['BWA'] = '<span style="color:#999999;\">N/A</span>'
-results['Trim Galore!'] = '<span style="color:#999999;\">N/A</span>'
-results['Cutadapt'] = '<span style="color:#999999;\">N/A</span>'
-results['BWA'] = '<span style="color:#999999;\">N/A</span>'
-results['Samtools'] = '<span style="color:#999999;\">N/A</span>'
-results['Sambamba'] = '<span style="color:#999999;\">N/A</span>'
-results['BEDTools'] = '<span style="color:#999999;\">N/A</span>'
-results['R'] = '<span style="color:#999999;\">N/A</span>'
-results['SPP'] = '<span style="color:#999999;\">N/A</span>'
-results['MACS2'] = '<span style="color:#999999;\">N/A</span>'
-results['bedGraphToBigWig'] = '<span style="color:#999999;\">N/A</span>'
-results['ChIPseeker'] = '<span style="color:#999999;\">N/A</span>'
-results['MEME-ChIP'] = '<span style="color:#999999;\">N/A</span>'
-results['DiffBind'] = '<span style="color:#999999;\">N/A</span>'
-results['deepTools'] = '<span style="color:#999999;\">N/A</span>'
-
-# Search each file using its regex
-for k, v in software_regex.items():
-    with open(v[0]) as x:
-        versions = x.read()
-        match = re.search(v[1], versions)
-        if match:
-            results[k] = "v{}".format(match.group(1))
-
-# Dump to YAML
-print(
-    '''
-    id: 'Software Versions'
-    section_name: 'Software Versions'
-    section_href: 'https://git.biohpc.swmed.edu/BICF/Astrocyte/chipseq_analysis/'
-    plot_type: 'html'
-    description: 'are collected at run time from the software output.'
-    data: |
-        <dl class="dl-horizontal">
-    '''
-)
-for k, v in results.items():
-    print("        <dt>{}</dt><dd>{}</dd>".format(k, v))
-print("        </dl>")
+
+def get_args():
+    '''Define arguments.'''
+
+    parser = argparse.ArgumentParser(
+        description=__doc__, epilog=EPILOG,
+        formatter_class=argparse.RawDescriptionHelpFormatter)
+
+    parser.add_argument('-o', '--output',
+                        help="The out file name.",
+                        required=True)
+
+    args = parser.parse_args()
+    return args
+
+
+def main():
+    args = get_args()
+    output = args.output
+
+    out_filename = output + '_mqc.yaml'
+
+    results = OrderedDict()
+    results['Trim Galore!'] = '<span style="color:#999999;\">N/A</span>'
+    results['Cutadapt'] = '<span style="color:#999999;\">N/A</span>'
+    results['BWA'] = '<span style="color:#999999;\">N/A</span>'
+    results['Trim Galore!'] = '<span style="color:#999999;\">N/A</span>'
+    results['Cutadapt'] = '<span style="color:#999999;\">N/A</span>'
+    results['BWA'] = '<span style="color:#999999;\">N/A</span>'
+    results['Samtools'] = '<span style="color:#999999;\">N/A</span>'
+    results['Sambamba'] = '<span style="color:#999999;\">N/A</span>'
+    results['BEDTools'] = '<span style="color:#999999;\">N/A</span>'
+    results['R'] = '<span style="color:#999999;\">N/A</span>'
+    results['SPP'] = '<span style="color:#999999;\">N/A</span>'
+    results['MACS2'] = '<span style="color:#999999;\">N/A</span>'
+    results['bedGraphToBigWig'] = '<span style="color:#999999;\">N/A</span>'
+    results['ChIPseeker'] = '<span style="color:#999999;\">N/A</span>'
+    results['MEME-ChIP'] = '<span style="color:#999999;\">N/A</span>'
+    results['DiffBind'] = '<span style="color:#999999;\">N/A</span>'
+    results['deepTools'] = '<span style="color:#999999;\">N/A</span>'
+
+    # Search each file using its regex
+    for k, v in SOFTWARE_REGEX.items():
+        with open(v[0]) as x:
+            versions = x.read()
+            match = re.search(v[1], versions)
+            if match:
+                results[k] = "v{}".format(match.group(1))
+
+    # Dump to YAML
+    print(
+        '''
+        id: 'Software Versions'
+        section_name: 'Software Versions'
+        section_href: 'https://git.biohpc.swmed.edu/BICF/Astrocyte/chipseq_analysis/'
+        plot_type: 'html'
+        description: 'are collected at run time from the software output.'
+        data: |
+            <dl class="dl-horizontal">
+        '''
+    , file = open(out_filename, "w"))
+
+    for k, v in results.items():
+        print("        <dt>{}</dt><dd>{}</dd>".format(k, v), file = open(out_filename, "a"))
+    print("        </dl>", file = open(out_filename, "a"))
+
+
+if __name__ == '__main__':
+    main()