diff --git a/web/themes/asc_bootstrap/asc_bootstrap.theme b/web/themes/asc_bootstrap/asc_bootstrap.theme
index dee8ebcc9b9bd3d30d0c69d657e70c1363661619..ed531369aced9a1f484edb9eb357686c0feb2207 100755
--- a/web/themes/asc_bootstrap/asc_bootstrap.theme
+++ b/web/themes/asc_bootstrap/asc_bootstrap.theme
@@ -70,7 +70,7 @@ function asc_bootstrap_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $
   /*
   * events and news filters
   */
-  if (($form['#id'] == 'views-exposed-form-events-page-1')||($form['#id'] == 'views-exposed-form-news-page-1')) {
+  if (($form['#id'] == 'views-exposed-form-events-page-1')||($form['#id'] == 'views-exposed-form-news-page-1')||($form['#id'] == 'views-exposed-form-research-project-directory-page-1')) {
     /*
     * add new HTML content to filters (headers and spacer)
     * and setting weights for where they should appear in the form hierarchy
@@ -117,6 +117,32 @@ function asc_bootstrap_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $
     if(count($form['field_news_terms_2_target_id']['#options']) == 1) {
       $form['field_news_terms_2_target_id']['#access'] = FALSE;
     }
+
+    if(count($form['field_research_departments_target_id']['#options']) == 1) {
+      $form['field_research_departments_target_id']['#access'] = FALSE;
+    }
+
+    if(count($form['field_research_other_target_id']['#options']) == 1) {
+      $form['field_research_other_target_id']['#access'] = FALSE;
+    }
+
+    if(count($form['field_research_year_target_id']['#options']) == 1) {
+      $form['field_research_year_target_id']['#access'] = FALSE;
+    }
+    /*
+    * research filters - setting default value on select box to taxonomy vocabulary
+    */
+    if(count($form['field_research_departments_target_id']['#options']['#value']) == "All") {
+      $form['field_research_departments_target_id']['#options']['All'] = $form['#info']['filter-field_research_departments_target_id']['label'];
+    }
+
+    if(count($form['field_research_other_target_id']['#options']['#value']) == "All") {
+      $form['field_research_other_target_id']['#options']['All'] = $form['#info']['filter-field_research_other_target_id']['label'];
+    }
+
+    if(count($form['field_research_year_target_id']['#options']['#value']) == "All") {
+      $form['field_research_year_target_id']['#options']['All'] = $form['#info']['filter-field_research_year_target_id']['label'];
+    }
   }
 
   /*
diff --git a/web/themes/asc_bootstrap/assets/sass/components/_research.scss b/web/themes/asc_bootstrap/assets/sass/components/_research.scss
index e6214fd5fc95992cfcf6758d0e3e806e830eff1f..58bcd467583e76d9d0a9378db46680665a16ef2b 100644
--- a/web/themes/asc_bootstrap/assets/sass/components/_research.scss
+++ b/web/themes/asc_bootstrap/assets/sass/components/_research.scss
@@ -5,6 +5,117 @@
 // Research
 // --------------------------------------------------
 
-//## Research.
+//## Research Directory.
 
+.view-research-project-directory {
 
+  table {
+
+    .views-field-title {
+      width: 35%
+    }
+  }
+}
+
+// --------------------------------------------------
+
+//## Research Article.
+
+.page-node-type-research {
+
+  article {
+    margin-bottom: 16px;
+  }
+
+  .page-header {
+    display: none;
+  }
+
+  .research-title-wrapper {
+    padding-left: 0;
+  }
+
+  .research-cont {
+    padding-left: 0;
+
+    .field--name-field-research-body {
+      margin: 20px 0 40px;
+    }
+  }
+
+  .research-users {
+    margin-bottom: 15px;
+
+    h2 {
+      line-height: 0;
+      font-size: 18px;
+    }
+  }
+
+  .taxonomy-research-heading {
+    width: 100%;
+    padding-top: 15px;
+
+    h3 {
+      line-height: 0;
+      font-size: 18px;
+    }
+  }
+
+}
+
+.research {
+
+  .field--name-field-research-body {
+    margin-bottom: 20px;
+  }
+}
+
+
+
+// --------------------------------------------------
+
+//## Research Project Gallery.
+.view-research-project-gallery {
+
+  .row {
+    display: flex;
+    margin-bottom: 40px;
+  }
+
+  .form-actions {
+    .button {
+      text-transform: uppercase;
+      border-radius: 0;
+    }
+  }
+
+  .view-filters {
+    background: #D8D8D8;
+    padding: 10px;
+  }
+}
+
+.page-node-type-research-project-gallery {
+
+  article {
+    margin-bottom: 16px;
+  }
+
+  .page-header {
+    display: none;
+  }
+
+  .rgall-title-wrapper {
+    padding-left: 0;
+  }
+
+  .rgall-cont {
+    padding-left: 0;
+
+    .field--name-body {
+      margin: 20px 0 40px;
+    }
+  }
+
+}
diff --git a/web/themes/asc_bootstrap/assets/sass/components/_webforms.scss b/web/themes/asc_bootstrap/assets/sass/components/_webforms.scss
index 132a0b62017987d2f4ba1d9099c8356f29e079a6..7bf66139ad9c98f470f81ef0014977e8b7240b91 100644
--- a/web/themes/asc_bootstrap/assets/sass/components/_webforms.scss
+++ b/web/themes/asc_bootstrap/assets/sass/components/_webforms.scss
@@ -18,3 +18,12 @@ textarea.form-control {
 label {
   width: 100%;
 }
+
+form {
+
+  .form-required:after {
+    background-size: 7px 7px;
+    height: 7px;
+    width: 7px;
+  }
+}
diff --git a/web/themes/asc_bootstrap/css/style.css b/web/themes/asc_bootstrap/css/style.css
index e923a54de280b596b85fe279c5cd12b3ac20a33a..4518ccb193ebf4dd9b5f13bacac807d8354f7eb1 100644
--- a/web/themes/asc_bootstrap/css/style.css
+++ b/web/themes/asc_bootstrap/css/style.css
@@ -11953,6 +11953,93 @@ article.news-story {
 #block-views-block-people-directory-block-1 .views-field.views-field-mail a {
   font-size: smaller;
 }*/
+/* line 14, ../assets/sass/components/_research.scss */
+.view-research-project-directory table .views-field-title {
+  width: 35%;
+}
+
+/* line 26, ../assets/sass/components/_research.scss */
+.page-node-type-research article {
+  margin-bottom: 16px;
+}
+/* line 30, ../assets/sass/components/_research.scss */
+.page-node-type-research .page-header {
+  display: none;
+}
+/* line 34, ../assets/sass/components/_research.scss */
+.page-node-type-research .research-title-wrapper {
+  padding-left: 0;
+}
+/* line 38, ../assets/sass/components/_research.scss */
+.page-node-type-research .research-cont {
+  padding-left: 0;
+}
+/* line 41, ../assets/sass/components/_research.scss */
+.page-node-type-research .research-cont .field--name-field-research-body {
+  margin: 20px 0 40px;
+}
+/* line 46, ../assets/sass/components/_research.scss */
+.page-node-type-research .research-users {
+  margin-bottom: 15px;
+}
+/* line 49, ../assets/sass/components/_research.scss */
+.page-node-type-research .research-users h2 {
+  line-height: 0;
+  font-size: 18px;
+}
+/* line 55, ../assets/sass/components/_research.scss */
+.page-node-type-research .taxonomy-research-heading {
+  width: 100%;
+  padding-top: 15px;
+}
+/* line 59, ../assets/sass/components/_research.scss */
+.page-node-type-research .taxonomy-research-heading h3 {
+  line-height: 0;
+  font-size: 18px;
+}
+
+/* line 69, ../assets/sass/components/_research.scss */
+.research .field--name-field-research-body {
+  margin-bottom: 20px;
+}
+
+/* line 81, ../assets/sass/components/_research.scss */
+.view-research-project-gallery .row {
+  display: flex;
+  margin-bottom: 40px;
+}
+/* line 87, ../assets/sass/components/_research.scss */
+.view-research-project-gallery .form-actions .button {
+  text-transform: uppercase;
+  border-radius: 0;
+}
+/* line 93, ../assets/sass/components/_research.scss */
+.view-research-project-gallery .view-filters {
+  background: #D8D8D8;
+  padding: 10px;
+}
+
+/* line 101, ../assets/sass/components/_research.scss */
+.page-node-type-research-project-gallery article {
+  margin-bottom: 16px;
+}
+/* line 105, ../assets/sass/components/_research.scss */
+.page-node-type-research-project-gallery .page-header {
+  display: none;
+}
+/* line 109, ../assets/sass/components/_research.scss */
+.page-node-type-research-project-gallery .rgall-title-wrapper {
+  padding-left: 0;
+}
+/* line 113, ../assets/sass/components/_research.scss */
+.page-node-type-research-project-gallery .rgall-cont {
+  padding-left: 0;
+}
+/* line 116, ../assets/sass/components/_research.scss */
+.page-node-type-research-project-gallery .rgall-cont .field--name-body {
+  margin: 20px 0 40px;
+}
+
 /* line 1, ../assets/sass/components/_simplemenu.scss */
 body {
   overflow-x: hidden;
@@ -12251,6 +12338,13 @@ label {
   width: 100%;
 }
 
+/* line 24, ../assets/sass/components/_webforms.scss */
+form .form-required:after {
+  background-size: 7px 7px;
+  height: 7px;
+  width: 7px;
+}
+
 /* line 9, ../assets/sass/components/_wysiwyg.scss */
 .align-right .field--name-field-media-image {
   padding: 0 0 15px 15px;
diff --git a/web/themes/asc_bootstrap/templates/node/node--research-project-gallery.html.twig b/web/themes/asc_bootstrap/templates/node/node--research-project-gallery.html.twig
new file mode 100644
index 0000000000000000000000000000000000000000..77fdd0cf93e808ccaff6d33568938d3318775a87
--- /dev/null
+++ b/web/themes/asc_bootstrap/templates/node/node--research-project-gallery.html.twig
@@ -0,0 +1,137 @@
+{#
+/**
+ * @file
+ * Theme override to display a Research Project Gallery node.
+ *
+ * Available variables:
+ * - node: The node entity with limited access to object properties and methods.
+     Only "getter" methods (method names starting with "get", "has", or "is")
+     and a few common methods such as "id" and "label" are available. Calling
+     other methods (such as node.delete) will result in an exception.
+ * - label: The title of the node.
+ * - content: All node items. Use {{ content }} to print them all,
+ *   or print a subset such as {{ content.field_example }}. Use
+ *   {{ content|without('field_example') }} to temporarily suppress the printing
+ *   of a given child element.
+ * - author_picture: The node author user entity, rendered using the "compact"
+ *   view mode.
+ * - metadata: Metadata for this node.
+ * - date: Themed creation date field.
+ * - author_name: Themed author name field.
+ * - url: Direct URL of the current node.
+ * - display_submitted: Whether submission information should be displayed.
+ * - attributes: HTML attributes for the containing element.
+ *   The attributes.class element may contain one or more of the following
+ *   classes:
+ *   - node: The current template type (also known as a "theming hook").
+ *   - node--type-[type]: The current node type. For example, if the node is an
+ *     "Article" it would result in "node--type-article". Note that the machine
+ *     name will often be in a short form of the human readable label.
+ *   - node--view-mode-[view_mode]: The View Mode of the node; for example, a
+ *     teaser would result in: "node--view-mode-teaser", and
+ *     full: "node--view-mode-full".
+ *   The following are controlled through the node publishing options.
+ *   - node--promoted: Appears on nodes promoted to the front page.
+ *   - node--sticky: Appears on nodes ordered above other non-sticky nodes in
+ *     teaser listings.
+ *   - node--unpublished: Appears on unpublished nodes visible only to site
+ *     admins.
+ * - title_attributes: Same as attributes, except applied to the main title
+ *   tag that appears in the template.
+ * - content_attributes: Same as attributes, except applied to the main
+ *   content tag that appears in the template.
+ * - author_attributes: Same as attributes, except applied to the author of
+ *   the node tag that appears in the template.
+ * - title_prefix: Additional output populated by modules, intended to be
+ *   displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ *   displayed after the main title tag that appears in the template.
+ * - view_mode: View mode; for example, "teaser" or "full".
+ * - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'.
+ * - page: Flag for the full page state. Will be true if view_mode is 'full'.
+ * - readmore: Flag for more state. Will be true if the teaser content of the
+ *   node cannot hold the main body content.
+ * - logged_in: Flag for authenticated user status. Will be true when the
+ *   current user is a logged-in member.
+ * - is_admin: Flag for admin user status. Will be true when the current user
+ *   is an administrator.
+ *
+ * @ingroup templates
+ *
+ * @see template_preprocess_node()
+ *
+ * @todo Remove the id attribute (or make it a class), because if that gets
+ *   rendered twice on a page this is invalid CSS for example: two lists
+ *   in different view modes.
+ */
+#}
+{%
+  set classes = [
+    node.bundle|clean_class,
+    node.isPromoted() ? 'is-promoted',
+    node.isSticky() ? 'is-sticky',
+    not node.isPublished() ? 'is-unpublished',
+    view_mode ? view_mode|clean_class,
+    'clearfix',
+  ]
+%}
+<article{{ attributes.addClass(classes) }}>
+<div class="col-sm-12 rgall-title-wrapper">
+  <div class="col-xs-12 col-sm-8 rgall-title-wrapper">
+
+    <h1 class="rgall-title">
+      {{ label }}
+    </h1>
+
+      {{ title_prefix }}
+      {% if not page %}
+        <h2{{ title_attributes }}>
+          <a href="{{ url }}" rel="bookmark">{{ label }}</a>
+        </h2>
+      {% endif %}
+      {{ title_suffix }}
+    {#
+     {% if display_submitted %}
+        <footer>
+          {{ author_picture }}
+          <div{{ author_attributes.addClass('author') }}>
+            {% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}
+            {{ metadata }}
+          </div>
+        </footer>
+      {% endif %}
+    #}
+  </div>
+</div>
+
+  <div class="col-sm-4 col-sm-push-8 rgall-img">
+    {{ content.field_research_gallery_image }}
+  </div>
+  <div{{ content_attributes.addClass('content') }}>
+    <div class="col-sm-8 col-sm-pull-4 rgall-cont">
+    {{ content.body }}
+
+      {% if content.research_gallery_tags.0 != '' %}
+        <div class="taxonomy-rgall-heading">
+          <h2>Project Tags:</h2>
+        </div>
+      {% endif %}
+
+      {% for item in content.research_gallery_tags %}
+        {% if item['#title'] %}
+          <div class="taxonomy-rgall">
+            <a href="/news?field_news_terms_1_target_id={{ item['#url']|render|split('/')|last }}">
+              {{ item['#title'] }}
+            </a>
+          </div>
+        {% endif %}
+      {% endfor %}
+
+      <hr/>
+      {% if node.field_research_gallery_social.value == 1 %}
+        {{ content.field_research_gallery_social }}
+      {% endif %}
+    </div>
+  </div>
+
+</article>
diff --git a/web/themes/asc_bootstrap/templates/node/node--research.html.twig b/web/themes/asc_bootstrap/templates/node/node--research.html.twig
index b6be68adb9b9e6307dbb2d1be7e0360e368f5f30..2cbc3e8afd7431947640bb48a1d6fd37ec9e6352 100644
--- a/web/themes/asc_bootstrap/templates/node/node--research.html.twig
+++ b/web/themes/asc_bootstrap/templates/node/node--research.html.twig
@@ -1,7 +1,7 @@
 {#
 /**
  * @file
- * Theme override to display a research article node.
+ * Theme override to display a Research Project node.
  *
  * Available variables:
  * - node: The node entity with limited access to object properties and methods.
@@ -76,11 +76,87 @@
   ]
 %}
 <article{{ attributes.addClass(classes) }}>
+<div class="col-sm-12 research-title-wrapper">
+  <div class="col-xs-12 col-sm-8 research-title-wrapper">
 
+    <h1 class="research-title">
+      {{ label }}
+    </h1>
+
+      {{ title_prefix }}
+      {% if not page %}
+        <h2{{ title_attributes }}>
+          <a href="{{ url }}" rel="bookmark">{{ label }}</a>
+        </h2>
+      {% endif %}
+      {{ title_suffix }}
+    {#
+     {% if display_submitted %}
+        <footer>
+          {{ author_picture }}
+          <div{{ author_attributes.addClass('author') }}>
+            {% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}
+            {{ metadata }}
+          </div>
+        </footer>
+      {% endif %}
+    #}
+  </div>
+</div>
+
+  <div class="col-sm-4 col-sm-push-8 research-img">
+    {# content.field_research_image2 #}
+  </div>
   <div{{ content_attributes.addClass('content') }}>
-    <div class="col-sm-12 research-cont">
-    {{ content }}
+    <div class="col-sm-8 col-sm-pull-4 research-cont">
+      <div class="research-users">
+        <h2>Investigators:</h2>
+          {{content.field_research_user}}
+      </div>
+    {{ content.field_research_body }}
+
+      {% if (content.field_research_departments.0 != '') or (content.field_research_other.0 != '') or (content.field_research_year.0 != '') %}
+        <div class="taxonomy-research-heading">
+          <h3>Research Filters:</h3>
+        </div>
+      {% endif %}
+
+      {% for item in content.field_research_year %}
+        {% if item['#title'] %}
+          <div class="taxonomy-research">
+            <a href="/research-project-directory?field_research_year_target_id={{ item['#url']|render|split('/')|last }}">
+              {{ item['#title'] }}
+            </a>
+          </div>
+        {% endif %}
+      {% endfor %}
+
+      {% for item in content.field_research_departments %}
+        {% if item['#title'] %}
+          <div class="taxonomy-research">
+            <a href="/research-project-directory?field_research_departments_target_id={{ item['#url']|render|split('/')|last }}">
+              {{ item['#title'] }}
+            </a>
+          </div>
+        {% endif %}
+      {% endfor %}
+
+      {% for item in content.field_research_other %}
+        {% if item['#title'] %}
+          <div class="taxonomy-research">
+            <a href="/research-project-directory?field_research_other_target_id={{ item['#url']|render|split('/')|last }}">
+              {{ item['#title'] }}
+            </a>
+          </div>
+        {% endif %}
+      {% endfor %}
+
+      <hr/>
+      {% if node.field_research_social_media.value == 1 %}
+        {{ content.field_research_social_media }}
+      {% endif %}
     </div>
   </div>
 
 </article>
+