    <div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="index.html">
              <img src="/assets/img/logo.png" width="80">
              {{ site.data.project.name }}
          </a>
        </div>
          <nav class="navbar-collapse collapse" role="navigation">
              <ul class="nav navbar-nav navbar-right">
                  {% for entry in site.data.navigation.topnav %}
                  <li id="{{ entry.title | slugify }}">
                      {% if entry.subcategories %}
                      <a href="#" data-toggle="dropdown" class="dropdown-toggle">{{ entry.title }}<b class="caret"></b></a>
                      <ul class="dropdown-menu dropdown-left">
                          {% for subitem in entry.subcategories %}
                          {% if subitem.url contains "http" %}
                          {% assign target = "_blank" %}{% else %}
                          {% assign target = "_self" %}{% endif %}
                          <li><a href="{{ subitem.url }}" target="{{ target }}">{{ subitem.title }}</a></li>
                          {% endfor %}
                      </ul>
                      {% else %}
                      {% if entry.url contains "http" %}
                      {% assign target = "_blank" %}{% else %}
                      {% assign target = "_self" %}{% endif %}
                      <a href="{{ entry.url }}" target="{{ target }}">{{ entry.title }}</a>
                      {% endif %}
                  </li>
                  {% endfor %}
              </ul>
          </nav><!--/.navbar-collapse -->
      </div>
    </div>

{% if page.type == "Home" %}
<div class="jumbotron">
  <div class="container">
    <h1>{{ site.data.project.name }}</h1>
    <p>{{ site.data.project.description }}</p>

    {% if site.data.project.download %}
       <a href="{{ site.data.project.download }}" class="btn btn-primary btn-lg bigFingerButton" role="button">Get {{ site.data.project.short_name }}</a></p>
    {% endif %}
  </div>
</div>
{% endif %}
