diff --git a/client/query/query.html b/client/query/query.html
index a9ae690..828b37e 100644
--- a/client/query/query.html
+++ b/client/query/query.html
@@ -46,11 +46,17 @@
             <div class="currentSelections"></div>
             <div class="autocomplete">
               <div class="ui-widget">
-                <label for="tags"> Search: </label> <input id="autocompleteText"
-                  placeholder="/cmip" class="textbox"
-                  onkeydown="if (event.keyCode == 13) submitAutoComplete(); ">
-                <button id="autoButton" value="Search"
-                  onclick="submitAutoComplete()" id="autocompleteButton">Search</button>
+                <form class="form-inline" id="searchBar">
+                  <div class="form-group">
+                    <label for="searchBar">Search:&nbsp;</label>
+                    <div class="input-group">
+                      <input id="search" placeholder="/cmip" type="text" class="form-control">
+                      <div class="input-group-btn">
+                        <button id="searchButton" type="submit" class="btn btn-primary">Search</button>
+                      </div>
+                    </div>
+                  </div>
+                </form>
               </div>
             </div>
           </div>
diff --git a/client/query/query.js b/client/query/query.js
index 42f074c..5241edf 100644
--- a/client/query/query.js
+++ b/client/query/query.js
@@ -7,136 +7,182 @@
 
 // @}
 
-var Atmos = {}; //Placeholder for the class.
-
-(function(){
-  "use strict"; //Magic (If you really wanna know, look it up.)
-
-  function Atmos(catalog, config){
-    //Internal variables.
-    this.searchMenuOptions = {}
-    this.results = []
-    this.resultCount = 0;
-    this.page = 1;
-    this.totalPages = 1;
-    this.selectedSearch = {};
-    this.dropdown = [];
-    this.state = {};
-    this.currentViewIndex = 0;
-
-    this.face = new Face(config);
-    this.categories = $('#side-menu');
-    this.resultTable = $('#resultTable');
-
-    var scope = this;
-
-    this.resultTable.on('click', '.interest-button', function(){
-      var button = $(this);
-
-      var name = button.parent().prev().text();
-      var interest = new Interest(new Name('/retrieve' + name));
-      scope.face.expressInterest(interest, function(){
-        var message = $('<div class="success"><span class="glyphicon glyphicon-ok"></span> Success!</div>');
-        message.insertAfter(button);
-        message.fadeOut(5000);
-      }, function(){
-        var message = $('<div class="fail"><span class="glyphicon glyphicon-remove"></span> Failed!</div>');
-        message.insertAfter(button);
-        message.fadeOut(5000);
-      });
-
-    });
-
-    $.getJSON("search_catagories.json").done(function (data) {
-      $.each(data, function (pageSection, contents) {
-        if (pageSection == "SearchCatagories") {
-          $.each(contents, function (search, searchOptions) {
-            search = search.replace(/\_/g, " ");
-
-            searchMenu.append('<li id="' + search + '" onclick="getDropDown(this.id)"><a href="#">' + search + '</a></li>');
-            scope.searchMenuOptions[String(search)] = searchOptions;
-          });
-        }
-      });
-    });
-
-  }
-
-  Atmos.prototype.onData = function(data) {
-    var payloadStr = data.content.toString().split("\n")[0];
-
-    var queryResults = JSON.parse(payloadStr);
-
-    var scope = this;
-
-    $.each(this.queryResults, function (queryResult, field) {
-
-      if (queryResult == "next") {
-        scope.populateAutocomplete(field);
-      }
-
-      $.each(field, function (entryCount, name) {
-        scope.results.push(name);
-      });
-    });
-
-    // Calculating the current page and the view
-    this.totalPages = Math.ceil(this.resultCount / 20);
-    this.populateResults(0);
-  }
-
-  Atmos.prototype.query = function(prefix, parameters, callback, pipeline) {
-    this.results = [];
-    this.dropdown = [];
-    this.resultTable.empty();
-    this.resultTable.append('<tr><th colspan="2">Results</th></tr>');
-
-    var queryPrefix = new Name(prefix);
-    queryPrefix.append("query");
-
-    var jsonString = JSON.stringify(parameters);
-    queryPrefix.append(jsonString);
-
-    this.state = {
-        prefix: new Name(prefix),
-        userOnData: callback,
-        outstanding: {},
-        nextSegment: 0,
-    };
-
-    /*if (state.hasOwnProperty("version")) {
-                  console.log("state already has version");
-              }*/
-
-    var queryInterest = new Interest(queryPrefix);
-    queryInterest.setInterestLifetimeMilliseconds(10000);
-
-    var scope = this;
-
-    this.face.expressInterest(queryInterest,
-      function(){
-        onQueryData()
-      }, function(){
-        onQueryTimeout()
-      }
-    );
-
-    this.state["outstanding"][queryInterest.getName().toUri()] = 0;
-  }
-
-})(); //Run as soon as the script loads but keep the "use strict"" from escaping to the global space.
-
-
 var atmos = {}; //Comment this out if you don't want debug access.
 
 //Run when the document loads.
 $(function () {
-
+  
+  //remove "atmos =" if you don't want debug access
   atmos = new Atmos(catalog, config);
   
 });
 
-function expressNextInterest() {
+/*
+  Atmos
+  Version 2
+*/
+
+function Atmos(catalog, config){
+  "use strict";
+  //Internal variables.
+  this.results = []
+  this.resultCount = 0;
+  this.page = 1;
+  this.totalPages = 1;
+  this.selectedSearch = {};
+  this.dropdown = [];
+  this.state = {};
+  this.currentViewIndex = 0;
+
+  this.face = new Face(config);
+  this.categories = $('#side-menu');
+  this.resultTable = $('#resultTable');
+
+  var scope = this;
+
+  this.resultTable.on('click', '.interest-button', function(){
+    var button = $(this);
+
+    var name = button.parent().prev().text();
+    var interest = new Interest(new Name('/retrieve' + name));
+    scope.face.expressInterest(interest, function(){
+      var message = $('<div class="success"><span class="glyphicon glyphicon-ok"></span> Success!</div>');
+      message.insertAfter(button);
+      message.fadeOut(5000);
+    }, function(){
+      var message = $('<div class="fail"><span class="glyphicon glyphicon-remove"></span> Failed!</div>');
+      message.insertAfter(button);
+      message.fadeOut(5000);
+    });
+
+  });
+
+  $.getJSON("search_catagories.json").done(function (data) {
+    $.each(data, function (pageSection, contents) {
+      if (pageSection == "SearchCatagories") {
+        $.each(contents, function (search, searchOptions) {
+          var e = $('<li><a href="#">' + search.replace(/\_/g, " ") + '</a><ul class="subnav nav nav-pills nav-stacked"></ul></li>');
+
+          var sub = e.find('ul.subnav');
+          $.each(searchOptions, function(index, name){
+            var item = $('<li><a href="#">' + name + '</a></li>');
+            sub.append(item);
+            item.click(function(){
+              scope.submitCatalogSearch(name);
+            });
+          });
+
+          //Toggle the menus.
+          e.click(function(){
+            scope.categories.find('.subnav').slideUp();
+            var t = $(this).find('.subnav');
+            if ( !t.is(':visible')){
+              t.slideDown().triggerHandler('focus'); //Cancel other animations and slide down.
+            }
+          });
+
+          scope.categories.append(e);
+        });
+      }
+    });
+  });
+
+  $('#searchBar').submit(function(e){
+    e.preventDefault();
+  })
+
+}
+
+Atmos.prototype.onData = function(data) {
+  var payloadStr = data.content.toString().split("\n")[0];
+
+  var queryResults = JSON.parse(payloadStr);
+
+  var scope = this;
+
+  $.each(this.queryResults, function (queryResult, field) {
+
+    if (queryResult == "next") {
+      scope.populateAutocomplete(field);
+    }
+
+    $.each(field, function (entryCount, name) {
+      scope.results.push(name);
+    });
+  });
+
+  // Calculating the current page and the view
+  this.totalPages = Math.ceil(this.resultCount / 20);
+  this.populateResults(0);
+}
+
+Atmos.prototype.query = function(prefix, parameters, callback, pipeline) {
+  this.results = [];
+  this.dropdown = [];
+  this.resultTable.empty();
+  this.resultTable.append('<tr><th colspan="2">Results</th></tr>');
+
+  var queryPrefix = new Name(prefix);
+  queryPrefix.append("query");
+
+  var jsonString = JSON.stringify(parameters);
+  queryPrefix.append(jsonString);
+
+  this.state = {
+      prefix: new Name(prefix),
+      userOnData: callback,
+      outstanding: {},
+      nextSegment: 0,
+  };
+
+  /*if (state.hasOwnProperty("version")) {
+                console.log("state already has version");
+            }*/
+
+  var queryInterest = new Interest(queryPrefix);
+  queryInterest.setInterestLifetimeMilliseconds(10000);
+
+  var scope = this;
+
+  this.face.expressInterest(queryInterest,
+    function(){ //FIXME
+      scope.onQueryData.apply(scope, arguments); //TODO
+    }, function(){
+      scope.onQueryTimeout.apply(scope, arguments);
+    }
+  );
+
+  this.state["outstanding"][queryInterest.getName().toUri()] = 0;
+}
+
+Atmos.prototype.submitCatalogSearch = function(field) {
+  console.log("Sumbit Catalog Search: " + field);
+  // @todo: this logic isn't quite right
+  var remove = false;
+  var scope = this;
+  $.each(scope.selectedSearch, function (search, f) {
+    if (field == f) {
+      delete scope.selectedSearch[field];
+      remove = true;
+    }
+  });
+  if (!remove) {
+    $.each(scope.searchMenuOptions, function (search, fields) {
+      $.each(fields, function (index, f) {
+        if (f == field) {
+          scope.selectedSearch[search] = field;
+        }
+      });
+    });
+  }
+  this.query(scope.catalog, scope.selectedSearch, function(){
+    scope.onData.apply(scope, arguments); //Unknown arguments. FIXME (Works but could be improved for readability)
+  }, 1);
+  scope.populateCurrentSelections();
+  return false;//?? Is this used?
+}
+
+Atmos.prototype.expressNextInterest = function() {
   // @todo pipelines
   var nextName = new Name(state["results"]);
   nextName.appendSegment(state["nextSegment"]);
@@ -144,116 +190,133 @@
   var nextInterest = new Interest(nextName);
   nextInterest.setInterestLifetimeMilliseconds(10000);
 
-  face.expressInterest(nextInterest,
-      onQueryResultsData,
-      onQueryResultsTimeout);
+  var scope = this;
 
-  state["nextSegment"] ++;
-  state["outstanding"][nextName.toUri()] = 0;
+  this.face.expressInterest(nextInterest,
+      function(){
+        scope.onQueryResultsData.apply(scope, arguments); //FIXME
+      },
+      function(){
+        scope.onQueryResultsTimeout.apply(scope, arguments); //FIXME
+      });
+
+  this.state["nextSegment"] ++;
+  this.state["outstanding"][nextName.toUri()] = 0;
 }
 
-function onQueryData(interest, data) {
+Atmos.prototype.onQueryData = function(interest, data) {
   var name = data.getName();
 
-  delete state["outstanding"][interest.getName().toUri()];
+  delete this.state["outstanding"][interest.getName().toUri()];
 
-  state["version"] = name.get(state["prefix"].size() + 2).toVersion();
+  this.state["version"] = name.get(this.state["prefix"].size() + 2).toVersion();
 
-  state["results"] = new Name(state["prefix"]).append("query-results").appendVersion(state["version"]);
+  this.state["results"] = new Name(this.state["prefix"]).append("query-results").appendVersion(this.state["version"]);
 
-  expressNextInterest();
+  this.expressNextInterest();
 }
 
-function onQueryResultsData(interest, data) {
+Atmos.prototype.onQueryResultsData = function(interest, data) {
   var name = data.getName();
-  delete state["outstanding"][interest.getName().toUri()];
+  delete this.state["outstanding"][interest.getName().toUri()];
   if (!name.get(-1).equals(data.getMetaInfo().getFinalBlockId())) {
-    expressNextInterest();
+    this.expressNextInterest();
   } //else {
     //alert("found final block");
   //}
 
-  state["userOnData"](data);
+  this.state["userOnData"](data);
 }
 
-function onQueryTimeout(interest) {
+Atmos.prototype.onQueryTimeout = function(interest) {
   var uri = interest.getName().toUri();
-  if (state["outstanding"][uri] < 1) {
-    state["outstanding"][uri] ++;
-    face.expressInterest(interest,
-        onQueryData,
-        onQueryTimeout);
+  if (this.state["outstanding"][uri] < 1) {
+    this.state["outstanding"][uri] ++;
+    var scope = this;
+    this.face.expressInterest(interest,
+        function(){
+          scope.onQueryData.apply(scope, arguments);
+        },
+        function(){
+          scope.onQueryTimeout.apply(scope, arguments);
+        });
   } else {
-    delete state["outstanding"][uri];
+    delete this.state["outstanding"][uri];
 
     // We modify the autocomplete box here because we need to know
     // we have all of the entries first. Fairly hacky.
+    /* TODO FIXME
+    var autocompleteFullName = this.autocompleteText.value;
+    for (var i = 0; i < dropdown.length; ++i) {
+      if (this.dropdown[i].substr(0, dropdown[i].length - 1).toUpperCase === this.autocompleteText.value.toUpperCase || dropdown.length == 1) {
+        autocompleteText.value = dropdown[i];
+      }
+    }
+    */
+  }
+}
+
+Atmos.prototype.onQueryResultsTimeout = function(interest) {
+  var uri = interest.getName().toUri();
+  if (this.state["outstanding"][uri] < 1) {
+    this.state["outstanding"][uri] ++;
+    var scope = this;
+    this.face.expressInterest(interest,
+        function(){
+          scope.onQueryResultsData.apply(scope, arguments);
+        },
+        function(){
+          scope.onQueryResultsTimeout.apply(scope, arguments);
+        });
+  } else {
+    delete this.state["outstanding"][uri];
+    // We modify the autocomplete box here because we need to know
+    // we have all of the entries first. Fairly hacky.
+    /* TODO FIXME
     var autocompleteFullName = autocompleteText.value;
     for (var i = 0; i < dropdown.length; ++i) {
       if (dropdown[i].substr(0, dropdown[i].length - 1).toUpperCase === autocompleteText.value.toUpperCase || dropdown.length == 1) {
         autocompleteText.value = dropdown[i];
       }
     }
+    */
   }
 }
 
-function onQueryResultsTimeout(interest) {
-  var uri = interest.getName().toUri();
-  if (state["outstanding"][uri] < 1) {
-    state["outstanding"][uri] ++;
-    face.expressInterest(interest,
-        onQueryResultsData,
-        onQueryResultsTimeout);
+Atmos.prototype.populateResults = function(startIndex) {
+  this.resultTable.empty();
+  this.resultTable.append('<tr><th colspan="2">Results</th></tr>');
+
+
+  for (var i = startIndex; i < startIndex + 20 && i < this.results.length; ++i) {
+    resultTable.append('<tr><td>' + this.results[i]
+    + '</td><td><button class="interest-button btn btn-default btn-xs">Retrieve</button></td></tr>');
+  }
+
+  if (this.results.length <= 20) {
+    this.page = 1;
   } else {
-    delete state["outstanding"][uri];
-    // We modify the autocomplete box here because we need to know
-    // we have all of the entries first. Fairly hacky.
-    var autocompleteFullName = autocompleteText.value;
-    for (var i = 0; i < dropdown.length; ++i) {
-      if (dropdown[i].substr(0, dropdown[i].length - 1).toUpperCase === autocompleteText.value.toUpperCase || dropdown.length == 1) {
-        autocompleteText.value = dropdown[i];
-      }
-    }
-  }
-}
-
-
-
-
-function populateResults(startIndex) {
-  var resultTable = $(".resultTable");
-  resultTable.empty();
-  resultTable.append('<tr><th colspan="2">Results</th></tr>');
-
-
-  for (var i = startIndex; i < startIndex + 20 && i < results.length; ++i) {
-    resultTable.append('<tr><td>' + results[i]
-    + '</td><td><button class="interest-button btn btn-default btn-xs">Express Interest</button></td></tr>');
+    this.page = startIndex / 20 + 1;
   }
 
-  if (results.length <= 20) {
-    page = 1;
-  } else {
-    page = startIndex / 20 + 1;
-  }
+  this.totalPages = Math.ceil(this.results.length / 20);
 
-  totalPages = Math.ceil(results.length / 20);
-
+  //TODO Fix the page to fit the theme.
   var currentPage = $(".page");
   currentPage.empty();
-  if (page != 1) {
+  if (this.page != 1) {
     currentPage.append('<a href="#" onclick="getPage(this.id);" id="<"><</a>');
   }
   // This section of code creates the paging for the results.
   // To prevent it from having a 1000+ pages, it will only show the 5 pages before/after
   // the current page and the total pages (expect users not to really jump around a lot).
-  for (var i = 1; i <= totalPages; ++i) {
-    if (i == 1 || i == totalPages     // Min or max
-        || (i <= page && i + 5 >= page)    // in our current page range
-        || (i >= page && i - 5 <= page)) { // in our current page range
-      if (i != page) {
+  for (var i = 1; i <= this.totalPages; ++i) {
+    if (i == 1 || i == this.totalPages      // Min or max
+        || (i <= this.page && i + 5 >= this.page)    // in our current page range
+        || (i >= this.page && i - 5 <= this.page)) { // in our current page range
+      if (i != this.page) {
         currentPage.append(' <a href="#" onclick="getPage(' + i + ');">' + i + '</a>')
-        if (i == 1 && page > i + 5) {
+        if (i == 1 && this.page > i + 5) {
           currentPage.append(' ... ');
         }
       } else {
@@ -264,49 +327,23 @@
         currentPage.append(' ... ');
 
         currentPage.append(' <a href="#" onclick="getPage(this.id);" id=">">></a>')
-        i = totalPages - 1;
+        i = this.totalPages - 1;
       }
     }
   }
-  currentPage.append('  ' + results.length + ' results');
+  currentPage.append('  ' + this.results.length + ' results');
 }
 
-var dropState = "";
-
-function getDropDown(str) {
-  var searchMenu = $("#side-menu");
-  if (str == dropState) {
-    dropState = "";
-    searchMenu.find("#" + str).find("#options_" + str).empty();
-  } else {
-    dropState = str;
-
-    $.each(searchMenuOptions, function (search, fields) {
-      if (search === str) {
-        searchMenu.find("#" + search).append('<ul id="options_' + search + '" class="sub-menu">');
-        for (var i = 0; i < fields.length; ++i) {
-          searchMenu.find("#options_" + search).append('<li id="' + fields[i] + '" onclick="submitCatalogSearch(this.id)"><a href="#">' + fields[i] + '</a></li>');
-        }
-        searchMenu.append('</ul>');
-      } else {
-        var ul = $("options_" + search);
-        ul.empty();
-        searchMenu.find("#" + search).find("#options_" + search).empty();
-      }
-    });
-  }
-}
-
-function getPage(clickedPage) {
+Atmos.prototype.getPage = function(clickedPage) {
   console.log(clickedPage);
 
   var nextPage = clickedPage;
   if (clickedPage === "<") {
-    nextPage = page - 5;
+    nextPage = this.page - 5;
   } else if (clickedPage === ">") {
     console.log("> enabled");
 
-    nextPage = page + 5;
+    nextPage = this.page + 5;
   }
 
   nextPage--; // Need to adjust for starting at 0
@@ -314,16 +351,18 @@
   if (nextPage < 0 ) {
     nextPage = 0;
     console.log("0 enabled");
-  } else if (nextPage > totalPages - 1) {
-    nextPage = totalPages - 1;
+  } else if (nextPage > this.totalPages - 1) {
+    nextPage = this.totalPages - 1;
     console.log("total enabled");
   }
 
-  populateResults(nextPage * 20);
+  this.populateResults(nextPage * 20);
   return false;
 }
 
-function submitAutoComplete() {
+
+Atmos.prototype.submitAutoComplete = function() {
+  /* FIXME TODO
   if (autocompleteText.value.length > 0) {
     var selection = autocompleteText.value;
     $.each(dropdown, function (i, dropdownEntry) {
@@ -336,33 +375,11 @@
     query(catalog, selectedSearch, onData, 1);
     delete selectedSearch["?"];
   }
+  */
 }
 
-function submitCatalogSearch(field) {
-  console.log("Sumbit Catalog Search: " + field);
-  // @todo: this logic isn't quite right
-  var remove = false;
-  $.each(selectedSearch, function (search, f) {
-    if (field == f) {
-      delete selectedSearch[field];
-      remove = true;
-    }
-  });
-  if (!remove) {
-    $.each(searchMenuOptions, function (search, fields) {
-      $.each(fields, function (index, f) {
-        if (f == field) {
-          selectedSearch[search] = field;
-        }
-      });
-    });
-  }
-  query(catalog, selectedSearch, onData, 1);
-  populateCurrentSelections();
-  return false;
-}
-
-function populateAutocomplete(fields) {
+Atmos.prototype.populateAutocomplete = function(fields) {
+  /* FIXME TODO
   var isAutocompleteFullName = (autocompleteText.value.charAt(autocompleteText.value.length - 1) === "/");
   var autocompleteFullName = autocompleteText.value;
   for (var i = 0; i < fields.length; ++i) {
@@ -403,35 +420,34 @@
   $("#autocompleteText").autocomplete({
     source: dropdown
   });
+  */
 }
 
-function populateCurrentSelections() {
+Atmos.prototype.populateCurrentSelections = function() { //TODO
   var currentSelection = $(".currentSelections");
   currentSelection.empty();
 
   currentSelection.append("<p>Filtering on:");
 
-  $.each(selectedSearch, function (searchMenuCatagory, selection) {
-    currentSelection.append('  <a href="#" onclick="removeFilter(this.id);" id="' + searchMenuCatagory + ':' + selection + '">[X] ' + searchMenuCatagory + ":" + selection + '</a>');
+  var scope = this;
+
+  $.each(this.selectedSearch, function (searchMenuCatagory, selection) {
+    var e = $('<a href="#">[X] ' + searchMenuCatagory + ":" + selection + '</a>');
+    e.onclick(function(){
+      var searchFilter = $(this).text();
+
+      var search = "";
+      for (var j = 0; j < searchFilter.length; ++j) {
+        search += searchFilter[j] + " ";
+      }
+      console.log("Split values: '" + search + "'");
+
+      delete this.selectedSearch[searchFilter[0]];
+      this.query(catalog, selectedSearch, onData, 1);
+      populateCurrentSelections();
+    });
+    currentSelection.append(e);
   });
 
   currentSelection.append("</p>");
 }
-
-
-function removeFilter(filter) {
-  console.log("Remove filter" + filter);
-  var searchFilter = filter.split(":");
-
-  var search = "";
-  for (var j = 0; j < searchFilter.length; ++j) {
-    search += searchFilter[j] + " ";
-  }
-  console.log("Split values: '" + search + "'");
-
-  delete selectedSearch[searchFilter[0]];
-  query(catalog, selectedSearch, onData, 1);
-  populateCurrentSelections();
-
-  return false;
-}
\ No newline at end of file
diff --git a/client/query/query2.css b/client/query/query2.css
index d5e28d3..a39b328 100644
--- a/client/query/query2.css
+++ b/client/query/query2.css
@@ -17,3 +17,11 @@
 .sucess {
   color: green;
 }
+
+.subnav {
+  display: none;
+  max-height: 500px;
+  overflow: auto;
+  margin-left: 15px;
+  border-left: gray 3px solid;
+}
diff --git a/client/query/search_catagories.json b/client/query/search_catagories.json
index f506486..8d902ad 100644
--- a/client/query/search_catagories.json
+++ b/client/query/search_catagories.json
@@ -1,27 +1,539 @@
 {
     "SearchCatagories": {
-        "activity": ["CMIP5"],
-        "product": ["output1", "output2", "restricted", "unsolicited"],
-        "organization": ["BCC", "BNU", "CCCMA", "CMCC", "CNRM-CERFACS", "COLA-CFS", "CSIRO-BOM", "CSIRO-QCCCE", "FIO", "ICHEC", "INM", "INPE", "IPSL", "LASG-CESS", "LASG-IAP", "MIROC", "MOHC", "MPI-M", "MRI", "NASA-GISS", "NASA-GMAO", "NCAR", "NCC", "NCEP", "NICAM", "NIMR-KMA", "NOAA-GFDL", "NSF-DOE-NCAR", "SMHI", "UNSW"],
-        "model": ["ACCESS1.0", "ACCESS1.3", "BCC - CSM1.1", "BCC - CSM1.1(m)", "BNU - ESM", "CCSM4", "CESM1(BGC)", "CESM1(CAM5)", "CESM1(CAM5.1, FV2)", "CESM1(FASTCHEM)", "CESM1(WACCM)", "CFSv2 - 2011", "CMCC - CESM", "CMCC - CM", "CMCC - CMS", " CNRM - CM5", "CNRM - CM5 - 2", "CSIRO - Mk3.6.0", "CSIRO - Mk3L - 1 - 2", "CanAM4", "CanCM4", "CanESM2", "EC - EARTH", "FGOALS - g2", "FGOALS - gl", "FGOALS - s2", "FIO - ESM", "GEOS - 5", "GFDL - CM2.1", "GFDL - CM3", "GFDL - ESM2G", "GFDL - ESM2M", "GFDL - HIRAM - C180", "GFDL - HIRAM - C360", "GISS - E2 - H", "GISS - E2 - H - CC", "GISS - E2 - R", "GISS - E2 - R - CC", "HadCM3", "HadGEM2 - A", "HadGEM2 - AO", "HadGEM2 - CC ", "HadGEM2 - ES", "INM - CM4", "IPSL - CM5A - LR", "IPSL - CM5A - MR", "IPSL - CM5B - LR", "MIROC - ESM", "MIROC - ESM - CHEM", "MIROC4h", "MIROC5", "MPI - ESM - LR", "MPI - ESM - MR", "MPI - ESM - P", "MRI - AGCM3.2H", "MRI - AGCM3.2S", "MRI - CGCM3", "MRI - ESM1", "NICAM - 09", "NorESM1 - M", "NorESM1 - ME"],
-        "experiment": ["abrupt4xCO2", "amip", "amip4K", "amip4xCO2", "amipFuture", "aqua4K", "aqua4xCO2", "aquaControl", "decadal1959", "decadal1960", "decadal1961", "decadal1962", "decadal1963", "decadal1964", "decadal1965", "decadal1966", "decadal1967", "decadal1968", "decadal1969", "decadal1970", "decadal1971", "decadal1972", "decadal1973", "decadal1974", "decadal1975", "decadal1976", "decadal1977", "decadal1978", "decadal1979", "decadal1980", "decadal1981", "decadal1982", "decadal1983", "decadal1984", "decadal1985", "decadal1986", "decadal1987", "decadal1988", "decadal1989", "decadal1990", "decadal1991", "decadal1992", "decadal1993", "decadal1994", "decadal1995", "decadal1996", "decadal1997", "decadal1998", "decadal1999", "decadal2000", "decadal2001", "decadal2002", "decadal2003", "decadal2004", "decadal2005", "decadal2006", "decadal2007", "decadal2008", "decadal2009", "decadal2010", " decadal2011", "decadal2012", "esmControl", "esmFdbk1", "esmFdbk2", "esmFixClim1", "esmFixClim2", "esmHistorical", "esmrcp85", "historical", "historicalExt", "historicalGHG", "historicalMisc", "historicalNat", "lgm", "midHolocene", "noVolc1960", "noVolc1965", "noVolc1970", "noVolc1975", "noVolc1985", "noVolc1990", "noVolc1995", "noVolc2000", "noVolc2005", "past1000", "piControl", "rcp26", "rcp45", "rcp60", "rcp85", "sst2030", "sst2090", "sst2090rcp45", "sstClim", "sstClim4xCO2", "sstClimAerosol", "sstClimSulfate", "volcIn2010"],
-        "frequency": ["3hr", "6hr", "day", "fx", "mon", "monClim", "subhr", "yr"],
-        "modeling_realm": ["aerosol", "atmos", "land", "landIce", "ocean", "seaIce"],
-        "variable_name": ["agessc",
-                          "albisccp",
-                          "areacella",
-                          "areacello",
-                          "bmelt",
-                          "burntArea",
-                          "cCwd",
-                          "cLeaf",
-                          "cLitter",
-                          "cMisc",
-                          "cProduct",
-                          "cRoot",
-                          "cSoil",
-                          "cSoilFast",
-                          "cSoilMedium", "cSoilSlow", "cVeg", "cWood", "ccb", "cct", "cfc11", "ch4", "chl", "chlcalc", "chldiat", "chldiaz", "chlpico", "ci", "cl", "clcalipso", "clhcalipso", "cli", "clic", "clis", "clisccp", "clivi", "cllcalipso", "clmcalipso", "clt", "cltcalipso", "cltisccp", "clw", "clwc", "clws", "clwvi", "co2", "co3", "co3satarag", "co3satcalc", "deptho", "dfe", "dissic", "dissoc", "divice", "dpco2", "epc100", "epcalc100", "epfe100", "epsi100", "evap", "evspsbl", "expc", "expcalc", "expcfe", "expsi", "fFire", "fLitterSoil", "fLuc", "fVegLitter", "fbddtalk", "fbddtdic", "fbddtdife", "fbddtdin", "fbddtdip", "fbddtdisi", "fddtalk", "fddtdic", "fddtdife", "fddtdin", "fddtdip", "fddtdisi", "fgco2", "fgo2", "frn", "gpp", "grCongel", "grFrazil", "h2o", "hflssi", "hfss", "hfssi", "hur", "hurs", "hus", "huss", "intdic", "intpbsi", "intpcalc", "intpcalcite", "intpdiat", "intpdiaz", "intpn2", "intpnitrate", "intpp", "intppico", "lai", "lwsnl", "masso", "mc", "mrfso", "mrlsl", "mrro", "mrros", "mrso", "mrsofc", "mrsos", "msftbarot", "msftmyz", "msftmyzba", "n2o", "nbp", "nh4", "no3", "npp", "nppLeaf", "nppRoot", "nppWood", "o2", "o2min", "od550aer", "omlmax", "orog", "ph", "phyc", "phyfe", "phyn", "phyp", "phypico", "physi", "po4", "pr", "prc", "prsn", "prveg", "prw", "ps", "psl", "rGrowth", "rMaint", "ra", "reffclic", "reffclis", "reffclwc", "reffclws", "reffrains", "rlds", "rldscs", "rldssi", "rlus", "rlussi", "rlut", "rlutcs", "rsds", "rsdscs", "rsdssi", "rsdt", "rsntds", "rsus", "rsuscs", "rsut", "rsutcs", "rtmt", "sci", "sfcWind", "sftgif", "sftlf", "sftof", "si", "sic", "sit", "snc", "snoToIce", "snomelt", "snw", "so", "soga", "sootsn", "sos", "spco2", "strairx", "strairy", "streng", "strocnx", "strocny", "ta", "ta700", "talk", "tas", "tasmax", "tasmin", "tauu", "tauuo", "tauv", "tauvo", "thetao", "thetaoga", "thkcello", "tmelt", "tnhus", "tnhusa", "tnhusc", "tnhusd", "tnhusmp", "tnhusscpbl", "tnt", "tntc", "tntmp", "tntr", "tntscpbl", "tos", "tossq", "tran", "tro3", "ts", "tsice", "tsl", "ua", "umo", "uo", "usi", "va", "vmo", "vo", "volcello", "vsi", "wap", "wmo", "wmosq", "zg", "zo2min", "zooc", "zos", "zosga", "zossga", "zossq", "zostoga", "zsatarag", "zsatcalc"],
-        "ensemble": ["r0i0p0", "r10i1p1", "r10i2p1", "r1i1p1", "r1i1p10", "r1i1p11", "r1i1p12", "r1i1p13", "r1i1p14", "r1i1p15", "r1i1p16", "r1i1p17", "r1i1p2", "r1i1p3", "r1i2p1", "r1i2p2", "r2i1p1", "r2i1p10", "r2i1p11", "r2i1p12", "r2i1p13", "r2i1p14", "r2i1p16", "r2i1p17", "r2i2p1", "r3i1p1", "r3i1p10", "r3i1p11", "r3i1p13", "r3i1p14", "r3i1p16", "r3i1p17", "r3i2p1", "r4i1p1", "r4i1p10", "r4i1p11", "r4i1p12", "r4i1p14", "r4i1p15", "r4i1p16", "r4i1p17", "r4i2p1", "r5i1p1", "r5i2p1", "r6i1p1", "r6i1p10", "r6i1p11", "r6i1p12", "r6i1p13", "r6i1p14", "r6i1p15", "r6i1p16", "r6i1p17", "r6i2p1", "r7i1p1", "r7i2p1", "r8i1p1", "r8i2p1", "r9i1p1", "r9i2p1"]
+        "activity": [
+            "CMIP5"
+        ],
+        "product": [
+            "output1",
+            "output2",
+            "restricted",
+            "unsolicited"
+        ],
+        "organization": [
+            "BCC",
+            "BNU",
+            "CCCMA",
+            "CMCC",
+            "CNRM-CERFACS",
+            "COLA-CFS",
+            "CSIRO-BOM",
+            "CSIRO-QCCCE",
+            "FIO",
+            "ICHEC",
+            "INM",
+            "INPE",
+            "IPSL",
+            "LASG-CESS",
+            "LASG-IAP",
+            "MIROC",
+            "MOHC",
+            "MPI-M",
+            "MRI",
+            "NASA-GISS",
+            "NASA-GMAO",
+            "NCAR",
+            "NCC",
+            "NCEP",
+            "NICAM",
+            "NIMR-KMA",
+            "NOAA-GFDL",
+            "NSF-DOE-NCAR",
+            "SMHI",
+            "UNSW"
+        ],
+        "model": [
+            "ACCESS1.0",
+            "ACCESS1.3",
+            "BCC - CSM1.1",
+            "BCC - CSM1.1(m)",
+            "BNU - ESM",
+            "CCSM4",
+            "CESM1(BGC)",
+            "CESM1(CAM5)",
+            "CESM1(CAM5.1, FV2)",
+            "CESM1(FASTCHEM)",
+            "CESM1(WACCM)",
+            "CFSv2 - 2011",
+            "CMCC - CESM",
+            "CMCC - CM",
+            "CMCC - CMS",
+            " CNRM - CM5",
+            "CNRM - CM5 - 2",
+            "CSIRO - Mk3.6.0",
+            "CSIRO - Mk3L - 1 - 2",
+            "CanAM4",
+            "CanCM4",
+            "CanESM2",
+            "EC - EARTH",
+            "FGOALS - g2",
+            "FGOALS - gl",
+            "FGOALS - s2",
+            "FIO - ESM",
+            "GEOS - 5",
+            "GFDL - CM2.1",
+            "GFDL - CM3",
+            "GFDL - ESM2G",
+            "GFDL - ESM2M",
+            "GFDL - HIRAM - C180",
+            "GFDL - HIRAM - C360",
+            "GISS - E2 - H",
+            "GISS - E2 - H - CC",
+            "GISS - E2 - R",
+            "GISS - E2 - R - CC",
+            "HadCM3",
+            "HadGEM2 - A",
+            "HadGEM2 - AO",
+            "HadGEM2 - CC ",
+            "HadGEM2 - ES",
+            "INM - CM4",
+            "IPSL - CM5A - LR",
+            "IPSL - CM5A - MR",
+            "IPSL - CM5B - LR",
+            "MIROC - ESM",
+            "MIROC - ESM - CHEM",
+            "MIROC4h",
+            "MIROC5",
+            "MPI - ESM - LR",
+            "MPI - ESM - MR",
+            "MPI - ESM - P",
+            "MRI - AGCM3.2H",
+            "MRI - AGCM3.2S",
+            "MRI - CGCM3",
+            "MRI - ESM1",
+            "NICAM - 09",
+            "NorESM1 - M",
+            "NorESM1 - ME"
+        ],
+        "experiment": [
+            "abrupt4xCO2",
+            "amip",
+            "amip4K",
+            "amip4xCO2",
+            "amipFuture",
+            "aqua4K",
+            "aqua4xCO2",
+            "aquaControl",
+            "decadal1959",
+            "decadal1960",
+            "decadal1961",
+            "decadal1962",
+            "decadal1963",
+            "decadal1964",
+            "decadal1965",
+            "decadal1966",
+            "decadal1967",
+            "decadal1968",
+            "decadal1969",
+            "decadal1970",
+            "decadal1971",
+            "decadal1972",
+            "decadal1973",
+            "decadal1974",
+            "decadal1975",
+            "decadal1976",
+            "decadal1977",
+            "decadal1978",
+            "decadal1979",
+            "decadal1980",
+            "decadal1981",
+            "decadal1982",
+            "decadal1983",
+            "decadal1984",
+            "decadal1985",
+            "decadal1986",
+            "decadal1987",
+            "decadal1988",
+            "decadal1989",
+            "decadal1990",
+            "decadal1991",
+            "decadal1992",
+            "decadal1993",
+            "decadal1994",
+            "decadal1995",
+            "decadal1996",
+            "decadal1997",
+            "decadal1998",
+            "decadal1999",
+            "decadal2000",
+            "decadal2001",
+            "decadal2002",
+            "decadal2003",
+            "decadal2004",
+            "decadal2005",
+            "decadal2006",
+            "decadal2007",
+            "decadal2008",
+            "decadal2009",
+            "decadal2010",
+            " decadal2011",
+            "decadal2012",
+            "esmControl",
+            "esmFdbk1",
+            "esmFdbk2",
+            "esmFixClim1",
+            "esmFixClim2",
+            "esmHistorical",
+            "esmrcp85",
+            "historical",
+            "historicalExt",
+            "historicalGHG",
+            "historicalMisc",
+            "historicalNat",
+            "lgm",
+            "midHolocene",
+            "noVolc1960",
+            "noVolc1965",
+            "noVolc1970",
+            "noVolc1975",
+            "noVolc1985",
+            "noVolc1990",
+            "noVolc1995",
+            "noVolc2000",
+            "noVolc2005",
+            "past1000",
+            "piControl",
+            "rcp26",
+            "rcp45",
+            "rcp60",
+            "rcp85",
+            "sst2030",
+            "sst2090",
+            "sst2090rcp45",
+            "sstClim",
+            "sstClim4xCO2",
+            "sstClimAerosol",
+            "sstClimSulfate",
+            "volcIn2010"
+        ],
+        "frequency": [
+            "3hr",
+            "6hr",
+            "day",
+            "fx",
+            "mon",
+            "monClim",
+            "subhr",
+            "yr"
+        ],
+        "modeling_realm": [
+            "aerosol",
+            "atmos",
+            "land",
+            "landIce",
+            "ocean",
+            "seaIce"
+        ],
+        "variable_name": [
+            "agessc",
+            "albisccp",
+            "areacella",
+            "areacello",
+            "bmelt",
+            "burntArea",
+            "cCwd",
+            "cLeaf",
+            "cLitter",
+            "cMisc",
+            "cProduct",
+            "cRoot",
+            "cSoil",
+            "cSoilFast",
+            "cSoilMedium",
+            "cSoilSlow",
+            "cVeg",
+            "cWood",
+            "ccb",
+            "cct",
+            "cfc11",
+            "ch4",
+            "chl",
+            "chlcalc",
+            "chldiat",
+            "chldiaz",
+            "chlpico",
+            "ci",
+            "cl",
+            "clcalipso",
+            "clhcalipso",
+            "cli",
+            "clic",
+            "clis",
+            "clisccp",
+            "clivi",
+            "cllcalipso",
+            "clmcalipso",
+            "clt",
+            "cltcalipso",
+            "cltisccp",
+            "clw",
+            "clwc",
+            "clws",
+            "clwvi",
+            "co2",
+            "co3",
+            "co3satarag",
+            "co3satcalc",
+            "deptho",
+            "dfe",
+            "dissic",
+            "dissoc",
+            "divice",
+            "dpco2",
+            "epc100",
+            "epcalc100",
+            "epfe100",
+            "epsi100",
+            "evap",
+            "evspsbl",
+            "expc",
+            "expcalc",
+            "expcfe",
+            "expsi",
+            "fFire",
+            "fLitterSoil",
+            "fLuc",
+            "fVegLitter",
+            "fbddtalk",
+            "fbddtdic",
+            "fbddtdife",
+            "fbddtdin",
+            "fbddtdip",
+            "fbddtdisi",
+            "fddtalk",
+            "fddtdic",
+            "fddtdife",
+            "fddtdin",
+            "fddtdip",
+            "fddtdisi",
+            "fgco2",
+            "fgo2",
+            "frn",
+            "gpp",
+            "grCongel",
+            "grFrazil",
+            "h2o",
+            "hflssi",
+            "hfss",
+            "hfssi",
+            "hur",
+            "hurs",
+            "hus",
+            "huss",
+            "intdic",
+            "intpbsi",
+            "intpcalc",
+            "intpcalcite",
+            "intpdiat",
+            "intpdiaz",
+            "intpn2",
+            "intpnitrate",
+            "intpp",
+            "intppico",
+            "lai",
+            "lwsnl",
+            "masso",
+            "mc",
+            "mrfso",
+            "mrlsl",
+            "mrro",
+            "mrros",
+            "mrso",
+            "mrsofc",
+            "mrsos",
+            "msftbarot",
+            "msftmyz",
+            "msftmyzba",
+            "n2o",
+            "nbp",
+            "nh4",
+            "no3",
+            "npp",
+            "nppLeaf",
+            "nppRoot",
+            "nppWood",
+            "o2",
+            "o2min",
+            "od550aer",
+            "omlmax",
+            "orog",
+            "ph",
+            "phyc",
+            "phyfe",
+            "phyn",
+            "phyp",
+            "phypico",
+            "physi",
+            "po4",
+            "pr",
+            "prc",
+            "prsn",
+            "prveg",
+            "prw",
+            "ps",
+            "psl",
+            "rGrowth",
+            "rMaint",
+            "ra",
+            "reffclic",
+            "reffclis",
+            "reffclwc",
+            "reffclws",
+            "reffrains",
+            "rlds",
+            "rldscs",
+            "rldssi",
+            "rlus",
+            "rlussi",
+            "rlut",
+            "rlutcs",
+            "rsds",
+            "rsdscs",
+            "rsdssi",
+            "rsdt",
+            "rsntds",
+            "rsus",
+            "rsuscs",
+            "rsut",
+            "rsutcs",
+            "rtmt",
+            "sci",
+            "sfcWind",
+            "sftgif",
+            "sftlf",
+            "sftof",
+            "si",
+            "sic",
+            "sit",
+            "snc",
+            "snoToIce",
+            "snomelt",
+            "snw",
+            "so",
+            "soga",
+            "sootsn",
+            "sos",
+            "spco2",
+            "strairx",
+            "strairy",
+            "streng",
+            "strocnx",
+            "strocny",
+            "ta",
+            "ta700",
+            "talk",
+            "tas",
+            "tasmax",
+            "tasmin",
+            "tauu",
+            "tauuo",
+            "tauv",
+            "tauvo",
+            "thetao",
+            "thetaoga",
+            "thkcello",
+            "tmelt",
+            "tnhus",
+            "tnhusa",
+            "tnhusc",
+            "tnhusd",
+            "tnhusmp",
+            "tnhusscpbl",
+            "tnt",
+            "tntc",
+            "tntmp",
+            "tntr",
+            "tntscpbl",
+            "tos",
+            "tossq",
+            "tran",
+            "tro3",
+            "ts",
+            "tsice",
+            "tsl",
+            "ua",
+            "umo",
+            "uo",
+            "usi",
+            "va",
+            "vmo",
+            "vo",
+            "volcello",
+            "vsi",
+            "wap",
+            "wmo",
+            "wmosq",
+            "zg",
+            "zo2min",
+            "zooc",
+            "zos",
+            "zosga",
+            "zossga",
+            "zossq",
+            "zostoga",
+            "zsatarag",
+            "zsatcalc"
+        ],
+        "ensemble": [
+            "r0i0p0",
+            "r10i1p1",
+            "r10i2p1",
+            "r1i1p1",
+            "r1i1p10",
+            "r1i1p11",
+            "r1i1p12",
+            "r1i1p13",
+            "r1i1p14",
+            "r1i1p15",
+            "r1i1p16",
+            "r1i1p17",
+            "r1i1p2",
+            "r1i1p3",
+            "r1i2p1",
+            "r1i2p2",
+            "r2i1p1",
+            "r2i1p10",
+            "r2i1p11",
+            "r2i1p12",
+            "r2i1p13",
+            "r2i1p14",
+            "r2i1p16",
+            "r2i1p17",
+            "r2i2p1",
+            "r3i1p1",
+            "r3i1p10",
+            "r3i1p11",
+            "r3i1p13",
+            "r3i1p14",
+            "r3i1p16",
+            "r3i1p17",
+            "r3i2p1",
+            "r4i1p1",
+            "r4i1p10",
+            "r4i1p11",
+            "r4i1p12",
+            "r4i1p14",
+            "r4i1p15",
+            "r4i1p16",
+            "r4i1p17",
+            "r4i2p1",
+            "r5i1p1",
+            "r5i2p1",
+            "r6i1p1",
+            "r6i1p10",
+            "r6i1p11",
+            "r6i1p12",
+            "r6i1p13",
+            "r6i1p14",
+            "r6i1p15",
+            "r6i1p16",
+            "r6i1p17",
+            "r6i2p1",
+            "r7i1p1",
+            "r7i2p1",
+            "r8i1p1",
+            "r8i2p1",
+            "r9i1p1",
+            "r9i2p1"
+        ]
     }
-}
+}
\ No newline at end of file
