diff --git a/0.10.0-incubating/release_notes.md b/0.10.0-incubating/release_notes.md
index 2546eaa..00aba97 100644
--- a/0.10.0-incubating/release_notes.md
+++ b/0.10.0-incubating/release_notes.md
@@ -22,8 +22,6 @@
 limitations under the License.
 {% endcomment %}
 -->
-{% include JB/setup %}
-
 <br/><br/><br/>
 
 The **Apache SystemML 0.10.0-incubating release** was approved on June 3rd, 2016. It is the second release of Apache SystemML since it
diff --git a/0.9.0-incubating/release_notes.md b/0.9.0-incubating/release_notes.md
index cc72824..b80ca3a 100644
--- a/0.9.0-incubating/release_notes.md
+++ b/0.9.0-incubating/release_notes.md
@@ -22,8 +22,6 @@
 limitations under the License.
 {% endcomment %}
 -->
-{% include JB/setup %}
-
 <br/><br/><br/>
 
 Apache SystemML 0.9.0-incubating is the first release of SystemML since it joined Apache as an incubator project on November 2nd, 2015.
diff --git a/_includes/JB/analytics b/_includes/JB/analytics
deleted file mode 100644
index cbada67..0000000
--- a/_includes/JB/analytics
+++ /dev/null
@@ -1,18 +0,0 @@
-{% if site.analytics_on == true %}
-
-{% case site.analytics_provider %}
-{% when "google_classic" %}
-  {% include JB/analytics-providers/google-classic %}
-{% when "google_universal" %}
-  {% include JB/analytics-providers/google-universal %}
-{% when "getclicky" %}
-  {% include JB/analytics-providers/getclicky %}
-{% when "mixpanel" %}
-  {% include JB/analytics-providers/mixpanel %}
-{% when "piwik" %}
-  {% include JB/analytics-providers/piwik %}
-{% when "custom" %}
-  {% include custom/analytics %}
-{% endcase %}
-
-{% endif %}
\ No newline at end of file
diff --git a/_includes/JB/analytics-providers/getclicky b/_includes/JB/analytics-providers/getclicky
deleted file mode 100644
index e9462f4..0000000
--- a/_includes/JB/analytics-providers/getclicky
+++ /dev/null
@@ -1,12 +0,0 @@
-<script type="text/javascript">
-var clicky_site_ids = clicky_site_ids || [];
-clicky_site_ids.push({{ site.JB.analytics.getclicky.site_id }});
-(function() {
-  var s = document.createElement('script');
-  s.type = 'text/javascript';
-  s.async = true;
-  s.src = '//static.getclicky.com/js';
-  ( document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0] ).appendChild( s );
-})();
-</script>
-<noscript><p><img alt="Clicky" width="1" height="1" src="//in.getclicky.com/{{ site.JB.analytics.getclicky.site_id }}ns.gif" /></p></noscript>
diff --git a/_includes/JB/analytics-providers/google-classic b/_includes/JB/analytics-providers/google-classic
deleted file mode 100644
index af09907..0000000
--- a/_includes/JB/analytics-providers/google-classic
+++ /dev/null
@@ -1,11 +0,0 @@
-<script type="text/javascript">
-  var _gaq = _gaq || [];
-  _gaq.push(['_setAccount', '{{ site.JB.analytics.google_classic.tracking_id }}']);
-  _gaq.push(['_trackPageview']);
-
-  (function() {
-    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
-  })();
-</script>
\ No newline at end of file
diff --git a/_includes/JB/analytics-providers/mixpanel b/_includes/JB/analytics-providers/mixpanel
deleted file mode 100644
index 4406eb0..0000000
--- a/_includes/JB/analytics-providers/mixpanel
+++ /dev/null
@@ -1,11 +0,0 @@
-<script type="text/javascript">
-    var mpq = [];
-    mpq.push(["init", "{{ site.JB.analytics.mixpanel.token}}"]);
-    (function(){var b,a,e,d,c;b=document.createElement("script");b.type="text/javascript";
-    b.async=true;b.src=(document.location.protocol==="https:"?"https:":"http:")+
-    "//api.mixpanel.com/site_media/js/api/mixpanel.js";a=document.getElementsByTagName("script")[0];
-    a.parentNode.insertBefore(b,a);e=function(f){return function(){mpq.push(
-    [f].concat(Array.prototype.slice.call(arguments,0)))}};d=["init","track","track_links",
-    "track_forms","register","register_once","identify","name_tag","set_config"];for(c=0;c<
-    d.length;c++){mpq[d[c]]=e(d[c])}})();
-</script>
\ No newline at end of file
diff --git a/_includes/JB/analytics-providers/piwik b/_includes/JB/analytics-providers/piwik
deleted file mode 100755
index f016ed7..0000000
--- a/_includes/JB/analytics-providers/piwik
+++ /dev/null
@@ -1,10 +0,0 @@
-<script type="text/javascript">
-  var pkBaseURL = (("https:" == document.location.protocol) ? "https://{{ site.JB.analytics.piwik.baseURL }}/" : "http://{{ site.JB.analytics.piwik.baseURL }}/");
-  document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
-</script><script type="text/javascript">
-  try {
-    var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", {{ site.JB.analytics.piwik.idsite }});
-    piwikTracker.trackPageView();
-    piwikTracker.enableLinkTracking();
-  } catch( err ) {}
-</script><noscript><p><img src="http://{{ site.JB.analytics.piwik.baseURL }}/piwik.php?idsite={{ site.JB.analytics.piwik.idsite }}" style="border:0" alt="" /></p></noscript>
\ No newline at end of file
diff --git a/_includes/JB/categories_list b/_includes/JB/categories_list
deleted file mode 100644
index 83be2e2..0000000
--- a/_includes/JB/categories_list
+++ /dev/null
@@ -1,37 +0,0 @@
-{% comment %}<!--
-The categories_list include is a listing helper for categories.
-Usage:
-  1) assign the 'categories_list' variable to a valid array of tags.
-  2) include JB/categories_list
-  example:
-    <ul>
-  	  {% assign categories_list = site.categories %}  
-  	  {% include JB/categories_list %}
-  	</ul>
-  
-  Notes: 
-    Categories can be either a Hash of Category objects (hashes) or an Array of category-names (strings).
-    The encapsulating 'if' statement checks whether categories_list is a Hash or Array.
-    site.categories is a Hash while page.categories is an array.
-    
-  This helper can be seen in use at: ../_layouts/default.html
--->{% endcomment %}
-
-{% if site.JB.categories_list.provider == "custom" %}
-  {% include custom/categories_list %}
-{% else %}
-  {% if categories_list.first[0] == null %}
-    {% for category in categories_list %} 
-    	<li><a href="{{ BASE_PATH }}{{ site.JB.categories_path }}#{{ category }}-ref">
-    		{{ category | join: "/" }} <span>{{ site.categories[category].size }}</span>
-    	</a></li>
-    {% endfor %}
-  {% else %}
-    {% for category in categories_list %} 
-    	<li><a href="{{ BASE_PATH }}{{ site.JB.categories_path }}#{{ category[0] }}-ref">
-    		{{ category[0] | join: "/" }} <span>{{ category[1].size }}</span>
-    	</a></li>
-    {% endfor %}
-  {% endif %}
-{% endif %}
-{% assign categories_list = nil %}
\ No newline at end of file
diff --git a/_includes/JB/comments b/_includes/JB/comments
deleted file mode 100644
index 4e9e600..0000000
--- a/_includes/JB/comments
+++ /dev/null
@@ -1,16 +0,0 @@
-{% if site.JB.comments.provider and page.comments != false %}
-
-{% case site.JB.comments.provider %}
-{% when "disqus" %}
-  {% include JB/comments-providers/disqus %}
-{% when "livefyre" %}
-  {% include JB/comments-providers/livefyre %}
-{% when "intensedebate" %}
-  {% include JB/comments-providers/intensedebate %}
-{% when "facebook" %}
-  {% include JB/comments-providers/facebook %}
-{% when "custom" %}
-  {% include custom/comments %}
-{% endcase %}
-
-{% endif %}
\ No newline at end of file
diff --git a/_includes/JB/comments-providers/disqus b/_includes/JB/comments-providers/disqus
deleted file mode 100644
index 618a7b7..0000000
--- a/_includes/JB/comments-providers/disqus
+++ /dev/null
@@ -1,14 +0,0 @@
-<div id="disqus_thread"></div>
-<script type="text/javascript">
-    {% if site.safe == false %}var disqus_developer = 1;{% endif %}
-    var disqus_shortname = '{{ site.JB.comments.disqus.short_name }}'; // required: replace example with your forum shortname
-    {% if page.wordpress_id %}var disqus_identifier = '{{page.wordpress_id}} {{site.production_url}}/?p={{page.wordpress_id}}';{% endif %}
-    /* * * DON'T EDIT BELOW THIS LINE * * */
-    (function() {
-        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
-        dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
-        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
-    })();
-</script>
-<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
-<a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a>
diff --git a/_includes/JB/comments-providers/facebook b/_includes/JB/comments-providers/facebook
deleted file mode 100644
index 6b3e5e0..0000000
--- a/_includes/JB/comments-providers/facebook
+++ /dev/null
@@ -1,9 +0,0 @@
-<div id="fb-root"></div>
-<script>(function(d, s, id) {
-  var js, fjs = d.getElementsByTagName(s)[0];
-  if (d.getElementById(id)) return;
-  js = d.createElement(s); js.id = id;
-  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId={{ site.JB.comments.facebook.appid }}";
-  fjs.parentNode.insertBefore(js, fjs);
-}(document, 'script', 'facebook-jssdk'));</script>
-<div class="fb-comments" data-href="{{ site.production_url }}" data-num-posts="{{ site.JB.comments.facebook.num_posts }}" data-width="{{ site.JB.comments.facebook.width }}" data-colorscheme="{{ site.JB.comments.facebook.colorscheme }}"></div>
\ No newline at end of file
diff --git a/_includes/JB/comments-providers/intensedebate b/_includes/JB/comments-providers/intensedebate
deleted file mode 100644
index ab0c3c9..0000000
--- a/_includes/JB/comments-providers/intensedebate
+++ /dev/null
@@ -1,6 +0,0 @@
-<script>
-var idcomments_acct = '{{ site.JB.comments.intensedebate.account }}';
-var idcomments_post_id;
-var idcomments_post_url;
-</script>
-<script type="text/javascript" src="http://www.intensedebate.com/js/genericLinkWrapperV2.js"></script>
diff --git a/_includes/JB/comments-providers/livefyre b/_includes/JB/comments-providers/livefyre
deleted file mode 100644
index 704b803..0000000
--- a/_includes/JB/comments-providers/livefyre
+++ /dev/null
@@ -1,6 +0,0 @@
-<script type='text/javascript' src='http://zor.livefyre.com/wjs/v1.0/javascripts/livefyre_init.js'></script>
-<script type='text/javascript'>
-    var fyre = LF({
-        site_id: {{ site.JB.comments.livefyre.site_id }}
-    });
-</script>
\ No newline at end of file
diff --git a/_includes/JB/liquid_raw b/_includes/JB/liquid_raw
deleted file mode 100644
index a5c1783..0000000
--- a/_includes/JB/liquid_raw
+++ /dev/null
@@ -1,32 +0,0 @@
-{% comment%}<!--
-The liquid_raw helper is a way to display raw liquid code, as opposed to parsing it.
-Normally you'd use Liquid's built in 'raw' tag. 
-The problem is GitHub Jekyll does not support the current Liquid release.
-GitHub Jekyll supports the deprecated 'literal' tag.
-Using one will break the other if you plan to deploy to GitHub pages.
-  see: https://github.com/mojombo/jekyll/issues/425
-
-Since I don't want to mess with Liquid versions, I'll just rewrite the way I 
-intend to give liquid examples. It's not an elegant by any means:
-
-Usage: 
-  1) Define a 'text' variable with the block of liquid code you intend to display.
-  2) Pass the text variable to include JB/liquid_raw
-
-  example:
-  {% capture text %}|.% for tag in tags_list %.|
-    <li><a href="|.{ site.var.tags_path }.||.{ tag[0] }.|-ref">|.{ tag[0] }.| <span>|.{tag[1].size}.|</span></a></li>
-  |.% endfor %.|
-
-  |.% assign tags_list = null %.|{% endcapture %}    
-  {% include JB/liquid_raw %}
-  
-  As seen here, you must use "|." and ".|" as opening and closing brackets.
--->{% endcomment%}
-
-{% if site.JB.liquid_raw.provider == "custom" %}
-  {% include custom/liquid_raw %}
-{% else %}
-  <pre><code>{{text | replace:"|.", "&#123;" | replace:".|", "&#125;" | replace:">", "&gt;" | replace:"<", "&lt;" }}</code></pre>
-{% endif %}
-{% assign text = nil %}
\ No newline at end of file
diff --git a/_includes/JB/pages_list b/_includes/JB/pages_list
deleted file mode 100644
index 42f827a..0000000
--- a/_includes/JB/pages_list
+++ /dev/null
@@ -1,39 +0,0 @@
-{% comment %}<!--
-The pages_list include is a listing helper.
-Usage:
-  1) assign the 'pages_list' variable to a valid array of pages or posts.
-  2) include JB/pages_list
-  example:
-    <ul>
-  	  {% assign pages_list = site.pages %}  
-  	  {% include JB/pages_list %}
-  	</ul>
-  	
-  Grouping: (optional): 
-  	assign the 'group' variable to constrain the list to only pages/posts
-  	in the given group. Note you must define the group manually in the page/post
-  	meta-data to use this feature.
-  	Grouping is mainly helpful for non-post pages.
-  	If you want to group posts, it's easier/better to tag them, then pass the tagged posts array.
-  	i.e. site.tags.cool_tag (this returns an array of posts tagged: cool_tag)
-  	
-  This helper can be seen in use at: ../_layouts/default.html
--->{% endcomment %}
-
-{% if site.JB.pages_list.provider == "custom" %}
-  {% include custom/pages_list %}
-{% else %}
-  {% for node in pages_list %}
-    {% if node.title != null %}
-      {% if group == null or group == node.group %}
-      	{% if page.url == node.url %}
-      	<li class="active"><a href="{{ BASE_PATH }}{{node.url}}" class="active">{{node.title}}</a></li>
-      	{% else %}
-      	<li><a href="{{ BASE_PATH }}{{node.url}}">{{node.title}}</a></li>
-      	{% endif %}
-      {% endif %}
-    {% endif %}
-  {% endfor %}
-{% endif %}
-{% assign pages_list = nil %}
-{% assign group = nil %}
\ No newline at end of file
diff --git a/_includes/JB/posts_collate b/_includes/JB/posts_collate
deleted file mode 100644
index f612ade..0000000
--- a/_includes/JB/posts_collate
+++ /dev/null
@@ -1,55 +0,0 @@
-{% comment %}<!--
-Collate_posts helper. Collated posts by year and month.
-Usage:
-  1) assign the 'posts_collate' variable to a valid array of posts.
-  2) include JB/posts_collate
-  example:
-    {% assign posts_collate = site.posts %}
-    {% include JB/posts_collate %}
-
-  Ordering:
-    Posts are displayed in reverse chronological order.
-    For normal chronological order:
-      1) Change the for loop to this:
-        => 'for post in site.posts reversed'
-      2) Next make sure to change 'post.previous.date' to:
-        => 'post.next.date'
-        
--->{% endcomment %}
-
-{% if site.JB.posts_collate.provider == "custom" %}
-  {% include custom/posts_collate %}
-{% else %}
-  {% for post in posts_collate  %}
-    {% capture this_year %}{{ post.date | date: "%Y" }}{% endcapture %}
-    {% capture this_month %}{{ post.date | date: "%B" }}{% endcapture %}
-    {% capture next_year %}{{ post.previous.date | date: "%Y" }}{% endcapture %}
-    {% capture next_month %}{{ post.previous.date | date: "%B" }}{% endcapture %}
-  
-    {% if forloop.first %}
-      <h2>{{this_year}}</h2>
-      <h3>{{this_month}}</h3>
-      <ul>
-    {% endif %}
-  
-    <li><span>{{ post.date | date: "%B %e, %Y" }}</span> &raquo; <a href="{{ BASE_PATH }}{{ post.url }}">{{ post.title }}</a></li>
-  
-    {% if forloop.last %}
-      </ul>
-    {% else %}
-      {% if this_year != next_year %}
-        </ul>
-        <h2>{{next_year}}</h2>
-        <h3>{{next_month}}</h3>
-        <ul>
-      {% else %}    
-        {% if this_month != next_month %}
-          </ul>
-          <h3>{{next_month}}</h3>
-          <ul>
-        {% endif %}
-      {% endif %}
-    {% endif %}
-  {% endfor %}
-{% endif %}
-{% assign posts_collate = nil %}
\ No newline at end of file
diff --git a/_includes/JB/setup b/_includes/JB/setup
deleted file mode 100644
index efcd84b..0000000
--- a/_includes/JB/setup
+++ /dev/null
@@ -1,22 +0,0 @@
-{% capture jbcache %}
-  <!--
-  - Dynamically set liquid variables for working with URLs/paths
-  -->
-  {% if site.JB.setup.provider == "custom" %}
-    {% include custom/setup %}
-  {% else %}
-    {% if site.safe and site.JB.BASE_PATH and site.JB.BASE_PATH != '' %}
-      {% assign BASE_PATH = site.JB.BASE_PATH %}
-      {% assign HOME_PATH = site.JB.BASE_PATH %}
-    {% else %}
-      {% assign BASE_PATH = nil %}
-      {% assign HOME_PATH = "/" %}
-    {% endif %}
-
-    {% if site.JB.ASSET_PATH %}
-      {% assign ASSET_PATH = site.JB.ASSET_PATH %}
-    {% else %}
-      {% capture ASSET_PATH %}{{ BASE_PATH }}/assets/themes/{{ page.theme.name }}{% endcapture %}
-    {% endif %}  
-  {% endif %}
-{% endcapture %}{% assign jbcache = nil %}
\ No newline at end of file
diff --git a/_includes/JB/sharing b/_includes/JB/sharing
deleted file mode 100644
index f5b1151..0000000
--- a/_includes/JB/sharing
+++ /dev/null
@@ -1,8 +0,0 @@
-{% if site.safe and site.JB.sharing.provider and page.JB.sharing != false %}
-
-{% case site.JB.sharing.provider %}
-{% when "custom" %}
-  {% include custom/sharing %}
-{% endcase %}
-
-{% endif %}
\ No newline at end of file
diff --git a/_includes/JB/tags_list b/_includes/JB/tags_list
deleted file mode 100644
index 8eb62a7..0000000
--- a/_includes/JB/tags_list
+++ /dev/null
@@ -1,33 +0,0 @@
-{% comment %}<!--
-The tags_list include is a listing helper for tags.
-Usage:
-  1) assign the 'tags_list' variable to a valid array of tags.
-  2) include JB/tags_list
-  example:
-    <ul>
-  	  {% assign tags_list = site.tags %}  
-  	  {% include JB/tags_list %}
-  	</ul>
-  
-  Notes: 
-    Tags can be either a Hash of tag objects (hashes) or an Array of tag-names (strings).
-    The encapsulating 'if' statement checks whether tags_list is a Hash or Array.
-    site.tags is a Hash while page.tags is an array.
-    
-  This helper can be seen in use at: ../_layouts/default.html
--->{% endcomment %}
-
-{% if site.JB.tags_list.provider == "custom" %}
-  {% include custom/tags_list %}
-{% else %}
-  {% if tags_list.first[0] == null %}
-    {% for tag in tags_list %} 
-    	<li><a href="{{ BASE_PATH }}{{ site.JB.tags_path }}#{{ tag }}-ref">{{ tag }} <span>{{ site.tags[tag].size }}</span></a></li>
-    {% endfor %}
-  {% else %}
-    {% for tag in tags_list %} 
-    	<li><a href="{{ BASE_PATH }}{{ site.JB.tags_path }}#{{ tag[0] }}-ref">{{ tag[0] }} <span>{{ tag[1].size }}</span></a></li>
-    {% endfor %}
-  {% endif %}
-{% endif %}
-{% assign tags_list = nil %}
diff --git a/_includes/themes/apache/_navigation.html b/_includes/themes/apache/_navigation.html
index d0964be..353b6e5 100644
--- a/_includes/themes/apache/_navigation.html
+++ b/_includes/themes/apache/_navigation.html
@@ -8,7 +8,7 @@
             <span class="icon-bar"></span>
           </button>
           <a class="navbar-brand" href="index.html">
-              <img src="/assets/themes/apache/img/logo.png" width="80">
+              <img src="/assets/img/logo.png" width="80">
               {{ site.data.project.name }}
           </a>
         </div>
diff --git a/_includes/JB/analytics-providers/google-universal b/_includes/themes/apache/analytics/google-analytics
similarity index 98%
rename from _includes/JB/analytics-providers/google-universal
rename to _includes/themes/apache/analytics/google-analytics
index 67ae1ee..07d0e7b 100644
--- a/_includes/JB/analytics-providers/google-universal
+++ b/_includes/themes/apache/analytics/google-analytics
@@ -6,5 +6,4 @@
 
   ga('create', '{{ site.analytics_google_universal_tracking_id }}', 'auto');
   ga('send', 'pageview');
-
 </script>
diff --git a/_includes/themes/apache/default.html b/_includes/themes/apache/default.html
index f3442c9..be0f768 100644
--- a/_includes/themes/apache/default.html
+++ b/_includes/themes/apache/default.html
@@ -15,9 +15,9 @@
     <![endif]-->
 
     <!-- Le styles -->
-    <link href="{{ ASSET_PATH }}/bootstrap/css/bootstrap.css" rel="stylesheet">
-    <link href="{{ ASSET_PATH }}/css/style.css?body=1" rel="stylesheet" type="text/css">
-    <link href="{{ ASSET_PATH }}/css/syntax.css" rel="stylesheet"  type="text/css" media="screen" />
+    <link href="/assets/bootstrap/css/bootstrap.css" rel="stylesheet">
+    <link href="/assets/css/style.css?body=1" rel="stylesheet" type="text/css">
+    <link href="/assets/css/syntax.css" rel="stylesheet"  type="text/css" media="screen" />
     <!-- Le fav and touch icons -->
     <link rel="shortcut icon" href="{{ BASE_PATH }}/favicon.png">
     <!-- Update these with your own images
@@ -41,7 +41,7 @@
       </footer>
     </div>
 
-    {% include JB/analytics %}
+
     <script src="{{ ASSET_PATH }}/jquery/jquery-2.1.1.min.js"></script>
 
     <script src="{{ ASSET_PATH }}/bootstrap/js/bootstrap.min.js"></script>
diff --git a/_includes/themes/apache/footer.html b/_includes/themes/apache/footer.html
index e80fa48..1fab9a4 100644
--- a/_includes/themes/apache/footer.html
+++ b/_includes/themes/apache/footer.html
@@ -29,4 +29,6 @@
 
   </div>
 
+  {% include themes/apache/analytics/google-analytics %}
+
 </footer>
diff --git a/_includes/themes/apache/post.html b/_includes/themes/apache/post.html
deleted file mode 100644
index 2774711..0000000
--- a/_includes/themes/apache/post.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<div class="page-header">
-  <h1>{{ page.title }} {% if page.tagline %}<small>{{page.tagline}}</small>{% endif %}</h1>
-</div>
-
-<div class="row-fluid post-full">
-  <div class="span12">
-    <div class="date">
-      <span>{{ page.date | date_to_long_string }}</span>
-    </div>
-    <div class="content">
-      {{ content }}
-    </div>
-
-  {% unless page.categories == empty %}
-    <ul class="tag_box inline">
-      <li><i class="icon-folder-open"></i></li>
-      {% assign categories_list = page.categories %}
-      {% include JB/categories_list %}
-    </ul>
-  {% endunless %}  
-
-  {% unless page.tags == empty %}
-    <ul class="tag_box inline">
-      <li><i class="icon-tags"></i></li>
-      {% assign tags_list = page.tags %}
-      {% include JB/tags_list %}
-    </ul>
-  {% endunless %}  
-
-    <hr>
-    <div class="pagination">
-      <ul>
-      {% if page.previous %}
-        <li class="prev"><a href="{{ BASE_PATH }}{{ page.previous.url }}" title="{{ page.previous.title }}">&larr; Previous</a></li>
-      {% else %}
-        <li class="prev disabled"><a>&larr; Previous</a></li>
-      {% endif %}
-        <li><a href="{{ BASE_PATH }}{{ site.JB.archive_path }}">Archive</a></li>
-      {% if page.next %}
-        <li class="next"><a href="{{ BASE_PATH }}{{ page.next.url }}" title="{{ page.next.title }}">Next &rarr;</a></li>
-      {% else %}
-        <li class="next disabled"><a>Next &rarr;</a>
-      {% endif %}
-      </ul>
-    </div>
-    <hr>
-    {% include JB/comments %}
-  </div>
-</div>
diff --git a/_layouts/default.html b/_layouts/default.html
index c0e59fd..6897503 100644
--- a/_layouts/default.html
+++ b/_layouts/default.html
@@ -2,5 +2,4 @@
 theme :
  name : apache
 ---
-{% include JB/setup %}
 {% include themes/apache/default.html %}
diff --git a/_layouts/page.html b/_layouts/page.html
index 4d1a858..69d959d 100644
--- a/_layouts/page.html
+++ b/_layouts/page.html
@@ -1,5 +1,4 @@
 ---
 layout: default
 ---
-{% include JB/setup %}
 {% include themes/apache/page.html %}
diff --git a/_layouts/post.html b/_layouts/post.html
deleted file mode 100644
index 271e8de..0000000
--- a/_layouts/post.html
+++ /dev/null
@@ -1,5 +0,0 @@
----
-layout: default
----
-{% include JB/setup %}
-{% include themes/apache/post.html %}
diff --git a/_posts/2016-01-07-welcome-to-systemml.markdown b/_posts/2016-01-07-welcome-to-systemml.markdown
deleted file mode 100644
index cf28418..0000000
--- a/_posts/2016-01-07-welcome-to-systemml.markdown
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: post
-title:  "Welcome to Apache SystemML (incubating)!"
-date:   2016-01-07
-categories: ML
----
-Apache SystemML (incubating) is a flexible, scalable machine learning (ML) system.
diff --git a/community-members.md b/community-members.md
index 38f9a41..87605ca 100644
--- a/community-members.md
+++ b/community-members.md
@@ -22,8 +22,6 @@
 limitations under the License.
 {% endcomment %}
 -->
-{% include JB/setup %}
-
 <br/><br/><br/>
 
 
diff --git a/community.md b/community.md
index 4dc58b7..b17ee19 100644
--- a/community.md
+++ b/community.md
@@ -22,8 +22,6 @@
 limitations under the License.
 {% endcomment %}
 -->
-{% include JB/setup %}
-
 <br/><br/><br/>
 
 ## {{ site.data.project.name }} Community
diff --git a/download.md b/download.md
index 3f3d673..4ddf0e9 100644
--- a/download.md
+++ b/download.md
@@ -22,8 +22,6 @@
 limitations under the License.
 {% endcomment %}
 -->
-{% include JB/setup %}
-
 <br/><br/><br/>
 
 ## {{ site.data.project.name }} Downloads
diff --git a/index.md b/index.md
index da6ea99..8359c1f 100644
--- a/index.md
+++ b/index.md
@@ -22,8 +22,6 @@
 limitations under the License.
 {% endcomment %}
 -->
-{% include JB/setup %}
-
 ## Apache SystemML
 
 SystemML provides declarative large-scale machine learning (ML) that aims at flexible specification of ML algorithms and automatic generation of hybrid runtime plans ranging from single-node, in-memory computations, to distributed computations on Apache Hadoop and Apache Spark.
diff --git a/privacy-policy.md b/privacy-policy.md
index 6a952c9..0ed380f 100644
--- a/privacy-policy.md
+++ b/privacy-policy.md
@@ -22,8 +22,6 @@
 limitations under the License.
 {% endcomment %}
 -->
-{% include JB/setup %}
-
 <br/><br/><br/>
 
 ## {{ site.data.project.name }} Privacy Policy
