diff --git a/metobsapi/files.py b/metobsapi/files.py
index bcf0799c656159e4eff2576560e907d167daf418..98e1881b9f15cd6a231f0c58eba2a4bff3a842b9 100644
--- a/metobsapi/files.py
+++ b/metobsapi/files.py
@@ -83,10 +83,7 @@ def get_data(dates, streams, frame=True):
 
 
 def handleCSV(frame):
-    # Normalize the frame that was given so we only have expected information
     columns = ['filename', 'url', 'site', 'inst', 'level', 'version', 'size']
-    frame = frame[columns]
-
     body = StringIO()
 
     output = StringIO()
@@ -94,15 +91,17 @@ def handleCSV(frame):
     output.write('# status: success\n# code: 200\n# message:\n')
 
     output.write('# num_results: ' + str(len(list(frame.index))) + '\n')
-    output.write('# Fields: {}'.format(', '.join(columns)))
+    output.write('# Fields: {}'.format(','.join(columns)))
 
     output.write('\n' + body.getvalue())
 
     if frame.empty:
         return output.getvalue()
 
+    # Normalize the frame that was given so we only have expected information
+    frame = frame[columns]
     for row in frame.values:
-        output.write(', '.join(str(x) for x in row) + '\n')
+        output.write(','.join(str(x) for x in row) + '\n')
 
     return output.getvalue()    
 
diff --git a/metobsapi/templates/files_index.html b/metobsapi/templates/files_index.html
index 9a248f5b03421e1b0e9f77266a64d56ee9a7b7f9..0687d228f6f0885cbf242fb0efc22ef9171832d3 100644
--- a/metobsapi/templates/files_index.html
+++ b/metobsapi/templates/files_index.html
@@ -167,6 +167,15 @@
                                 End of the query interval in UTC as YYYY-MM-DD. If not provided, it defaults to today.
                             </td>
                         </tr>
+                        <tr>
+                            <td style='padding: 6px;'>
+                                <b>dates:</b>
+                            </td>
+                            <td style='padding: 6px;'>
+                                Individual query dates separated by colons in the format of YYYY-MM-DD. If provided,
+                                this parameter overrides the begin and end parameters.
+                            </td>
+                        </tr>
                     </table>
                 </div>    
             </div>
@@ -258,51 +267,40 @@
                     <li style='font-size: 15px'>
                         Latest ASCII file for AOSS Tower:
                         <ul>
-                            <a href="{{ url_for('get_files', fmt='csv', streams='aoss.tower.ascii.l00') }}" }}>
-                                {{ url_for('get_files', fmt='csv', streams='aoss.tower.ascii.level_00') | replace('%3A', ':') }}
+                            <a href="{{ url_for('get_files', fmt='csv', streams='aoss.tower.ascii.l00.*') }}" }}>
+                                {{ url_for('get_files', fmt='csv', streams='aoss.tower.ascii.level_00.*') | replace('%3A', ':') | replace('%2A', '*') }}
                             </a>    
                         </ul>
                     </li>
                     <li style='font-size: 15px'>
                         Latest .SCR files AOSS AERI:
                         <ul>
-                            <a href="{{ url_for('get_files', fmt='csv', streams='aoss.aeri.R_SCR.l00:aoss.aeri.E_SCR.l00:aoss.aeri.Y_SCR.l00') }}">
-                                {{ url_for('get_files', fmt='csv', streams='aoss.aeri.R_SCR.l00:aoss.aeri.E_SCR.l00:aoss.aeri.Y_SCR.l00') | replace('%3A', ':') }}
+                            <a href="{{ url_for('get_files', fmt='csv', streams='aoss.aeri.scr-aesitter.l00.*:aoss.aeri.scr-radiance.l00.*:aoss.aeri.scr-summary.l00.*') }}">
+                                {{ url_for('get_files', fmt='csv', streams='aoss.aeri.scr-aesitter.l00.*:aoss.aeri.scr-radiance.l00.*:aoss.aeri.scr-summary.l00.*') | replace('%3A', ':') | replace('%2A', '*') }}
                             </a>    
                         </ul>
                     </li>
                     <li style='font-size: 15px'>
-                        Last 2 days of all AOSS AERI files:
+                        Last 2 days of all AOSS AERI level 00 files:
                         <ul>
-                            <a href="{{ url_for('get_files', fmt='csv', streams=('aoss.aeri.PAR.l00:aoss.aeri.QC.l00:aoss.aeri.SUM.l00:' +
-                             'aoss.aeri.B1_CXS.l00:aoss.aeri.B1_UVS.l00:aoss.aeri.B2_CXS.l00:aoss.aeri.B2_UVS.l00:aoss.aeri.C1_RNC.l00:aoss.aeri.C2_RNC.l00:' +
-                             'aoss.aeri.F1_CSV.l00:aoss.aeri.F1_CXS.l00:aoss.aeri.F1_UVS.l00:aoss.aeri.F2_CSV.l00:aoss.aeri.F2_CXS.l00:aoss.aeri.F2_UVS.l00:' +
-                             'aoss.aeri.R_SCR.l00:aoss.aeri.E_SCR.l00:aoss.aeri.Y_SCR.l00'), begin='-2') }}" >
-                             <!-- 'aoss.aeri.B1_CXS.l00:aoss.aeri.B1_UVS.l00:aoss.aeri.B2_CXS.l00:aoss.aeri.B2_UVS.l00:aoss.aeri.C1_RNC.l00:aoss.aeri.C2_RNC.l00:' +
-                              aoss.aeri.F1_CSV.l00:aoss.aeri.F1_CXS.l00:aoss.aeri.F1_UVS.l00:aoss.aeri.F2_CSV.l00:aoss.aeri.F2_CXS.l00:aoss.aeri.F2_UVS.l00' + 
-                             'aoss.aeri.R_SCR.l00:aoss.aeri.E_SCR.l00:aoss.aeri.Y_SCR.l00'), begin='-2') }} "> -->
-                                {{ url_for('get_files', fmt='csv', streams=('aoss.aeri.PAR.l00:aoss.aeri.QC.l00:aoss.aeri.SUM.l00:' +
-                                        'aoss.aeri.B1_CXS.l00:aoss.aeri.B1_UVS.l00:aoss.aeri.B2_CXS.l00:aoss.aeri.B2_UVS.l00:aoss.aeri.C1_RNC.l00:aoss.aeri.C2_RNC.l00:' + 
-                                        'aoss.aeri.F1_CSV.l00:aoss.aeri.F1_CXS.l00:aoss.aeri.F1_UVS.l00:aoss.aeri.F2_CSV.l00:aoss.aeri.F2_CXS.l00:aoss.aeri.F2_UVS.l00' +
-                                        'aoss.aeri.R_SCR.l00:aoss.aeri.E_SCR.l00:aoss.aeri.Y_SCR.l00'
-
-                            ),  begin='-2') | replace('%3A', ':') }}
+                            <a href="{{ url_for('get_files', fmt='csv', streams=('aoss.aeri.*.l00.*',), begin='-2') }}" >
+                                {{ url_for('get_files', fmt='csv', streams=('aoss.aeri.*.l00.*',),  begin='-2') | replace('%3A', ':') | replace('%2A', '*') }}
                             </a>
                         </ul>
                     </li>
                     <li style='font-size: 15px'>
                         AOSS AERI Par, QC, and B1.UVS files for 2016-07-11
                         <ul>
-                            <a href="{{ url_for('get_files', fmt='csv', streams='aoss.aeri.PAR.l00:aoss.aeri.QC.l00:aoss.aeri.B1_UVS.l00', begin='2016-07-11', end='2016-07-11') }}">
-                                {{ url_for('get_files', fmt='csv', streams='aoss.aeri.PAR.l00:aoss.aeri.QC.l00:aoss.aeri.B1_UVS.l00', begin='2016-07-11', end='2016-07-11') | replace('%3A', ':') }}
+                            <a href="{{ url_for('get_files', fmt='csv', streams='aoss.aeri.par.l00.*:aoss.aeri.qc.l00.*:aoss.aeri.uvs-b1.l00.*', dates='2016-07-11') }}">
+                                {{ url_for('get_files', fmt='csv', streams='aoss.aeri.par.l00.*:aoss.aeri.qc.l00.*:aoss.aeri.uvs-b1.l00.*', dates='2016-07-11') | replace('%3A', ':') | replace('%2A', '*') }}
                             </a>
                         </ul>
                     </li>
                     <li style='font-size: 15px'>
                         AOSS AERI Par and AOSS Tower ASCII files for 2016-07-11
                         <ul>
-                            <a href="{{ url_for('get_files', fmt='csv', streams='aoss.aeri.PAR.l00:aoss.tower.ascii.l00', begin='2016-07-11', end='2016-07-11') }}">
-                                {{ url_for('get_files', fmt='csv', streams='aoss.aeri.PAR.l00:aoss.tower.ascii.l00', begin='2016-07-11', end='2016-07-11') | replace('%3A', ':') }}
+                            <a href="{{ url_for('get_files', fmt='csv', streams='aoss.aeri.par.l00.*:aoss.tower.ascii.l00.*', dates='2016-07-11') }}">
+                                {{ url_for('get_files', fmt='csv', streams='aoss.aeri.par.l00.*:aoss.tower.ascii.l00.*', dates='2016-07-11') | replace('%3A', ':') | replace('%2A', '*') }}
                             </a>
                         </ul>
                     </li>
diff --git a/metobsapi/util/file_responses.py b/metobsapi/util/file_responses.py
index 92fb044ac3bac37ca90163201d24af00a6fc9a15..6c72dfb70b7d5a4f74501cc01cdf19c4fbb93d29 100644
--- a/metobsapi/util/file_responses.py
+++ b/metobsapi/util/file_responses.py
@@ -60,15 +60,15 @@ ARCHIVE_INFO = {
                         'products': {
                             'par': {
                                 'frequency': ProductFrequency.DAILY_DIR,
-                                'pattern': '%y%m%d.par',
+                                'pattern': '%y%m%d.PAR',
                             },
                             'qc': {
                                 'frequency': ProductFrequency.DAILY_DIR,
-                                'pattern': '%y%m%d.qc',
+                                'pattern': '%y%m%d.QC',
                             },
                             'sum': {
                                 'frequency': ProductFrequency.DAILY_DIR,
-                                'pattern': '%y%m%d.sum',
+                                'pattern': '%y%m%d.SUM',
                             },
                             'scr-aesitter': {
                                 'frequency': ProductFrequency.DAILY_DIR,
@@ -97,6 +97,7 @@ ARCHIVE_INFO = {
 }
 # Add the other AERI file types
 for file_suffix in ('B1.CXS',
+                    'B1.UVS',
                     'B2.CXS',
                     'B2.UVS',
                     'C1.RNC',
@@ -198,5 +199,5 @@ ERROR_MESSAGES = {
     'missing_level': (400, 'missing or unknown level parameter'),
     'missing_stream_pattern': (400, 'missing or unknown stream pattern parameter'),
     'missing_version': (400, 'missing or unknown version parameter'),
-    'unknown_stream': (400, 'unknown stream ID, expected <site>.<inst>.<level=lXX>.<pattern>.<versionXX or \"*\">'),
+    'unknown_stream': (400, "unknown stream ID, expected 'site'.'inst'.'level=lXX'.'pattern'.'versionXX or \"*\"'"),
 }
diff --git a/metobsapi_development.py b/metobsapi_development.py
index 34f7207bf929fd83e0393003b93d7b160fb4b5f9..985da4748ecc65f0dfdaebd39f0b32e57b036f2c 100644
--- a/metobsapi_development.py
+++ b/metobsapi_development.py
@@ -1,23 +1,7 @@
 import os
 from metobsapi.common_config import *
-from metobsapi.util import FAKE_ARCHIVE_PATH, create_fake_archive, ProductFrequency
+from metobsapi.util import FAKE_ARCHIVE_PATH, create_fake_archive
+from metobsapi.util.file_responses import ARCHIVE_INFO
 
-ARCHIVE_INFO = {
-    'aoss': {
-        'tower': {
-            '00': {
-                'ascii': {
-                    'frequency': ProductFrequency.DAILY_FILE,
-                    'pattern': 'rig_tower.%Y-%m-%d.ascii',
-                },
-            },
-        },
-    },
-    'mendota': {
-
-    },
-}
-
-if not os.path.exists(FAKE_ARCHIVE_PATH):
-    create_fake_archive(ARCHIVE_INFO)
-ARCHIVE_ROOT = FAKE_ARCHIVE_PATH
\ No newline at end of file
+create_fake_archive(ARCHIVE_INFO, root=FAKE_ARCHIVE_PATH)
+ARCHIVE_ROOT = FAKE_ARCHIVE_PATH