diff --git a/ajaxLogin.php b/ajaxLogin.php
deleted file mode 100644
index d78fae3..0000000
--- a/ajaxLogin.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-/*******************************************************************************
- * Copyright (c) 2014 Eclipse Foundation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Christopher Guindon (Eclipse Foundation) - Initial implementation
- *    Edouard Poitras (Eclipse Foundation) - Some modifications
- *******************************************************************************/
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/friends/friend.class.php");
-require_once("/home/data/httpd/eclipse-php-classes/system/ldapconnection.class.php");
-
-$App = new App();
-$Friend = new Friend();
-$LDAP = new LDAPConnection();
-
-// Date in the past
-header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
-// always modified
-header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
-// HTTP/1.1
-header("Cache-Control: no-store, no-cache, must-revalidate");
-header("Cache-Control: post-check=0, pre-check=0", false);
-// HTTP/1.0
-header("Pragma: no-cache");
-
-$login = filter_var($_GET['login'], FILTER_SANITIZE_EMAIL);
-$id = $LDAP->getUIDFromMail($login);
-if ($id) echo "Verified!";
-else echo "Invalid Login";
diff --git a/assets/public/stylesheets/improve.min.css b/assets/public/stylesheets/improve.min.css
index d782a0d..26484af 100644
--- a/assets/public/stylesheets/improve.min.css
+++ b/assets/public/stylesheets/improve.min.css
@@ -23,6 +23,7 @@
   width: 20px;
   min-height: 150px;
   max-height: 100%;
+  height: 100%;
 }
 
 .rangeslider--disabled {
@@ -110,4 +111,4 @@
   box-shadow: 0 0 8px rgba(255, 0, 255, 0.9);
 }
 
-.jumbotron{background-color:#f6f6f6;min-height:400px}@media (max-width:768px){.donate-container{max-width:355px;margin:0 auto}}.donate-container .form-inline .input-group>.form-control{font-size:1.2em}@media (min-width:768px){.donate-container .form-inline .input-group>.form-control{width:120px}}.donate-submit .input-group-addon{font-size:.8em}.donate-container-content{background-image:url(../../../images/donate_mountain_bg.jpg);background-repeat:no-repeat;background-position:bottom center;background-size:100%;height:155px;position:relative;margin-bottom:30px}@media (min-width:768px){.donate-container-content{height:255px}}.donate-container-content h1{font-size:24px}@media (min-width:768px){.donate-container-content h1{font-size:42px}}@media (max-width:768px){.btn-donate{margin-top:20px}}.donate-bar{position:absolute;bottom:0}.list-donate-amount{font-size:18px;color:#9d9fa1}@media (min-width:768px){.list-donate-amount{font-size:24px}}.list-donate-amount li{padding:0}@media (max-width:1200px){.list-donate-amount li.one{padding-left:19px;padding-right:119px}.list-donate-amount li.two{padding-right:116px}.list-donate-amount li.three{padding-right:113px}.list-donate-amount li.four{padding-right:98px}}@media (max-width:992px){.list-donate-amount li.one{padding-left:19px;padding-right:78px}.list-donate-amount li.two{padding-right:74px}.list-donate-amount li.three{padding-right:72px}.list-donate-amount li.four{padding-right:58px}}@media (max-width:768px){.list-donate-amount li.one{padding-left:19px;padding-right:40px}.list-donate-amount li.two{padding-right:33px}.list-donate-amount li.three{padding-right:33px}.list-donate-amount li.four{padding-right:24px}}@media (min-width:1201px){.list-donate-amount li.one{padding-left:19px;padding-right:157px}.list-donate-amount li.two{padding-right:154px}.list-donate-amount li.three{padding-right:150px}.list-donate-amount li.four{padding-right:136px}}.grey-link{font-weight:normal;text-decoration:underline;color:#9d9fa1}.grey-link:hover{text-decoration:none}.rangeslider{position:absolute;bottom:-7px}.rangeslider__handle,.rangeslider__handle:after,.rangeslider__handle:active{background-image:url(../../../images/donate_eclipse_logo.png);background-repeat:no-repeat;width:50px;height:47px;border:none}.rangeslider__fill{background:#ccc}.donate-modal .modal-content{background-image:url(../../../images/donate_modal_bg.jpg);background-position:bottom center;background-repeat:no-repeat;border-radius:0}.donate-modal .modal-content h4{font-size:1.2em}.donate-modal .modal-footer{border-top:none}.donate-modal .modal-header{border-bottom:none;padding-bottom:0}.donate-modal .recognition-text{color:#999;font-size:.9em}.donate-modal .donate-modal-footer{text-align:center;padding-top:0}.jumbotron.background-image{background-image:url(../../../images/header.jpg);background-size:cover}@media (min-width:768px){.jumbotron.background-image{padding:80px 0}}.jumbotron.background-image h1{font-size:32px;color:#fff}@media (min-width:768px){.jumbotron.background-image h1{font-size:42px}}.jumbotron.background-image p{font-size:16px;color:#fff}@media (min-width:768px){.jumbotron.background-image p{font-size:21px}}.jumbotron.background-image p strong{color:#f7941e}
\ No newline at end of file
+.jumbotron{background-color:#f6f6f6;min-height:400px}@media (max-width:768px){.donate-container{max-width:355px;margin:0 auto}}.donate-container .form-inline .input-group>.form-control{font-size:1.2em}@media (min-width:768px){.donate-container .form-inline .input-group>.form-control{width:120px}}.donate-submit .input-group-addon{font-size:.8em}.donate-container-content{background-image:url(../../../images/donate_mountain_bg.jpg);background-repeat:no-repeat;background-position:bottom center;background-size:100%;height:155px;position:relative;margin-bottom:30px}@media (min-width:768px){.donate-container-content{height:255px}}.donate-container-content h1{font-size:24px}@media (min-width:768px){.donate-container-content h1{font-size:42px}}@media (max-width:768px){.btn-donate{margin-top:20px}}.donate-bar{position:absolute;bottom:0}.list-donate-amount{font-size:18px;display:flex;position:relative;color:#9d9fa1}@media (min-width:768px){.list-donate-amount{font-size:24px}}.list-donate-amount li{padding:0;width:20%}.list-donate-amount li.one{margin-left:20px}.list-donate-amount li.two{margin-left:10px}.list-donate-amount li.four{margin-right:20px}@media (min-width:768px){.list-donate-amount li.two{margin-left:50px}.list-donate-amount li.four{margin-right:60px}}.grey-link{font-weight:normal;text-decoration:underline;color:#9d9fa1}.grey-link:hover{text-decoration:none}.rangeslider{position:absolute;bottom:-7px}.rangeslider__handle,.rangeslider__handle:after,.rangeslider__handle:active{background-image:url(../../../images/donate_eclipse_logo.png);background-repeat:no-repeat;width:50px;height:47px;border:none}.rangeslider__fill{background:#ccc}.donate-modal .modal-content{background-image:url(../../../images/donate_modal_bg.jpg);background-position:bottom center;background-repeat:no-repeat;border-radius:0}.donate-modal .modal-content h4{font-size:1.2em}.donate-modal .modal-footer{border-top:none}.donate-modal .modal-header{border-bottom:none;padding-bottom:0}.donate-modal .recognition-text{color:#999;font-size:.9em}.donate-modal .donate-modal-footer{text-align:center;padding-top:0}.jumbotron.background-image{background-image:url(../../../images/header.jpg);background-size:cover}@media (min-width:768px){.jumbotron.background-image{padding:80px 0}}.jumbotron.background-image h1{font-size:32px;color:#fff}@media (min-width:768px){.jumbotron.background-image h1{font-size:42px}}.jumbotron.background-image p{font-size:16px;color:#fff}@media (min-width:768px){.jumbotron.background-image p{font-size:21px}}.jumbotron.background-image p strong{color:#f7941e}
\ No newline at end of file
diff --git a/benefits.php b/benefits.php
index 54cd7bb..2291ac5 100644
--- a/benefits.php
+++ b/benefits.php
@@ -1,42 +1,18 @@
 <?php
-/*******************************************************************************
- * Copyright (c) 2014 Eclipse Foundation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://eclipse.org/legal/epl-v10.html
+/**
+ * Copyright (c) 2014, 2018 Eclipse Foundation.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
  *
  * Contributors:
- *    Christopher Guindon (Eclipse Foundation) - Initial implementation
- *******************************************************************************/
+ *   Christopher Guindon (Eclipse Foundation) - Initial implementation
+ *   Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
 
 // Infra 2166 - We now redirect traffic to faq.php
 header('Location: /donate/faq.php', TRUE, 302);
-
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");
-
-$App 	= new App();
-$Nav	= new Nav();
-$Menu 	= new Menu();
-
-# Begin: page-specific settings.  Change these.
-$pageTitle = "Friend of Eclipse Benefits";
-$pageKeywords = "friends of eclipse, donation, contribution, benefits";
-$pageAuthor = "Christopher Guindon";
-
-// Place your html content in a file called content/en_pagename.php
-ob_start();
-include("content/en_" . $App->getScriptName());
-$html = ob_get_clean();
-
-// Custom theme variables
-$variables = array();
-$variables['main_container_classes'] = 'container-full';
-$App->setThemeVariables($variables);
-
-# Generate the web page
-//$App->AddExtraJSFooter('<script type="text/javascript" src="assets/public/javascript/scripts.min.js"></script>');
-$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="assets/public/stylesheets/improve.min.css" media="screen" />');
-$App->generatePage(NULL, $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
+exit();
\ No newline at end of file
diff --git a/bower.json b/bower.json
index 097a6c0..66c1c36 100644
--- a/bower.json
+++ b/bower.json
@@ -1,6 +1,5 @@
 {
   "name": "eclipse-donate",
-  "version": "0.0.1",
   "authors": [
     "Christopher Guindon <chris.guindon@eclipse.org>"
   ],
diff --git a/content/en_benefits.php b/content/en_benefits.php
deleted file mode 100644
index 71b3e8b..0000000
--- a/content/en_benefits.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php
-/*******************************************************************************
- * Copyright (c) 2015 Eclipse Foundation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Eric Poirier (Eclipse Foundation) - Initial implementation
- *******************************************************************************/
-?>
-
-<section class="jumbotron breadcrumbs-offset">
-  <div class="container">
-    <div class="content">
-    <h1><strong>Together</strong> we can improve Eclipse</h1>
-      <div class="row">
-        <div class="col-md-16">
-          <p>Eclipse is a great <strong>IDE and community</strong>. We want to make it even better!
-          All money donated by Friends of Eclipse will go directly to funding <strong>Eclipse IDE development.</strong></p>
-        </div>
-        <div class="col-md-8">
-          <img src="images/logo-friend-of-eclipse.png" alt="Friend of Eclipse">
-        </div>
-      </div>
-    </div>
-  </div>
-</section>
-
-<section class="content-benefits">
-  <div class="container">
-    <div class="row">
-      <div class="col-md-16">
-      <h1><?php print $pageTitle;?></h1>
-        <p>Eclipse is a great IDE and community. We want to make it even better!
-        All money donated by Friends of Eclipse will go directly to funding Eclipse
-        IDE development. As a thank you, here are the benefits you receive for your donation*.
-        </p>
-
-        <h2>Friend of Eclipse Benefits</h2>
-
-        <p>Donate between 35 USD and 49.99 USD and you will be identified as a Friend
-        of Eclipse for 1 year. Benefits include:<p>
-        <ul>
-          <li>Friend of Eclipse Mirror Site - This will allow you to download new
-          versions of Eclipse faster**</li>
-          <li>Friend of Eclipse logo***</li>
-          <li>40% off prints and 50% off ebooks at
-          <a href="https://www.oreilly.com" title="oreilly.com" target="_blank">oreilly.com</a></li>
-        </ul>
-
-        <h2>Best Friend of Eclipse Benefits</h2>
-
-        <p>Donate more than 50 USD and you will be identified as a Best Friend of
-        Eclipse for 1 year. Benefits include:</p>
-        <ul>
-          <li>Receive an <b>Eclipse T-Shirt</b></li>
-          <li>Friend of Eclipse Mirror Site - This will allow you to download new
-          versions of Eclipse faster**</li>
-          <li>Friend of Eclipse logo***</li>
-          <li>40% off prints and 50% off ebooks at
-          <a href="https://www.oreilly.com" title="oreilly.com" target="_blank">oreilly.com</a></li>
-          <li>EclipseCon Friend of Eclipse discount****</li>
-        </ul>
-
-        <p class="small">*Eclipse Foundation Inc. is a not-for-profit, member
-        supported corporation. Please note that contributions or gifts to the
-        Eclipse Foundation Inc. are not tax deductible as charitable contributions.</p>
-
-        <p class="small">**Eclipse Foundation Inc. cannot guarantee that the Friends mirror
-        will be faster than its other mirrors, however it will give users of
-        this mirror priority. This Friends Mirror is only available for downloads
-        through our website.
-        <br/>When you donate US$35 or more you will have access to the Friends of
-        Eclipse Mirror Site. You will need an Eclipse.org account to gain access
-        to this mirror. If you need an account click here to launch the registration
-        page is a new window.</p>
-
-        <p class="small">***The Friends of Eclipse program is for individuals,
-        so the logo should not be used on an organization website.</p>
-
-        <p class="small">****The discount is valid for a year and can be used for all three
-        EclipseCon events. The discount amount varies for each individual conference
-        and will be identified on their respective registration pages at eclipsecon.org.
-        The friend discount cannot be combined with other EclipseCon discounts such as
-        alumni, member, etc</p>
-
-        <p><a href="faq.php" title="Friend of Eclipse FAQ" class="btn btn-info">Friend of Eclipse FAQ</a></p>
-      </div>
-      <?php include('en_sidebar.php');?>
-    </div>
-  </div>
-</section>
\ No newline at end of file
diff --git a/content/en_credit.php b/content/en_credit.php
index 80ed060..5404767 100644
--- a/content/en_credit.php
+++ b/content/en_credit.php
@@ -1,15 +1,17 @@
 <?php
-/*******************************************************************************
- * Copyright (c) 2015, 2016 Eclipse Foundation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://eclipse.org/legal/epl-v10.html
+/**
+ * Copyright (c) 2015, 2016, 2018 Eclipse Foundation.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
  *
  * Contributors:
- *    Christopher Guindon (Eclipse Foundation) - Initial implementation
- *    Eric Poirier (Eclipse Foundation)
- *******************************************************************************/
+ *   Christopher Guindon (Eclipse Foundation) - Initial implementation
+ *   Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
 ?>
 <div class="jumbotron breadcrumbs-offset">
   <div class="container">
@@ -18,13 +20,12 @@
       <h1><?php print $pageTitle;?></h1>
       <p>Eclipse technology is a success thanks to our awesome open source
       community. We want to make it even better! All donations
-      go directly to funding Eclipse Platform development</a>.</p>
+      go directly to funding Eclipse Platform development.</p>
     </div>
   </div>
 </div>
-
 <div class="thankyou">
-  <header>
+  <div class="section-title">
     <div class="container">
       <div class="row">
         <div class="col-md-12">
@@ -35,7 +36,7 @@
         </div>
       </div>
     </div>
-  </header>
+  </div>
   <div class="container">
     <div class="row">
       <div class="col-md-12">
@@ -53,7 +54,7 @@
       </div> <!-- end of .col-md-12 -->
     </div>
   </div>
-  <header class="visible-sm visible-xs">
+  <div class="section-title visible-sm visible-xs">
     <div class="container">
       <div class="row">
         <div class="col-sm-24">
@@ -61,7 +62,7 @@
         </div>
       </div>
     </div>
-  </header>
+  </div>
   <div class="container visible-sm visible-xs">
     <div class="row">
       <div class="col-sm-24">
@@ -73,7 +74,7 @@
 </div><!-- end of .thankyou -->
 
 <div class="friends">
-  <header>
+  <div class="section-title">
     <div class="container">
       <div class="row">
         <div class="col-md-24">
@@ -81,7 +82,7 @@
         </div>
       </div>
     </div>
-  </header>
+  </div>
   <div class="container">
     <div class="row">
       <?php print $donationlist_35_html;?>
diff --git a/content/en_donorlist.php b/content/en_donorlist.php
index 0a5720d..390457b 100644
--- a/content/en_donorlist.php
+++ b/content/en_donorlist.php
@@ -1,19 +1,22 @@
 <?php
-/*******************************************************************************
- * Copyright (c) 2014, 2015 Eclipse Foundation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://eclipse.org/legal/epl-v10.html
+/**
+ * Copyright (c) 2014, 2015, 2018 Eclipse Foundation.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
  *
  * Contributors:
- *    Nathan Gervais (Eclipse Foundation) - Initial implementation (2007-11-07)
- *    Edouard Poitras (Eclipse Foundation) - Further modifications
- *    Christopher Guindon (Eclipse Foundation)
- *******************************************************************************/
+ *   Nathan Gervais (Eclipse Foundation) - Initial implementation (2007-11-07)
+ *   Edouard Poitras (Eclipse Foundation) - Further modifications
+ *   Christopher Guindon (Eclipse Foundation) - Initial implementation
+ *   Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
 ?>
 <div>
-    <h1><?=$pageTitle;?></h1>
+    <h1><?php print $pageTitle; ?></h1>
     <div role="tabpanel">
       <ul class="nav nav-tabs tabs" role="tablist">
         <li role="presentation" class="active"><a href="#best-friends" aria-controls="best-friends" role="tab" data-toggle="tab">Best Friends</a></li>
diff --git a/content/en_faq.php b/content/en_faq.php
index 0451560..c597786 100644
--- a/content/en_faq.php
+++ b/content/en_faq.php
@@ -1,346 +1,317 @@
 <?php
-/*******************************************************************************
- * Copyright (c) 2015, 2016 Eclipse Foundation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://eclipse.org/legal/epl-v10.html
+/**
+ * Copyright (c) 2015, 2016, 2018 Eclipse Foundation.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
  *
  * Contributors:
- *    Christopher Guindon (Eclipse Foundation) - Initial implementation
- *    Eric Poirier (Eclipse Foundation)
- *******************************************************************************/
+ * Christopher Guindon (Eclipse Foundation) - Initial implementation
+ * Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
 ?>
-<div id="fullcolumn">
-  <div id="midcolumn">
-    <h2><?=$pageTitle ?></h2>
-    <div class="homeitem3col">
-
-      <div class="panel-group" id="accordion" role="tablist"
-        aria-multiselectable="true">
-
-        <!-- .PANEL -->
-        <div class="panel panel-default">
-          <div class="panel-heading" role="tab" id="headingOne">
-            <h4 class="panel-title">
-              <a role="button" data-toggle="collapse"
-                data-parent="#accordion" href="#collapseOne"
-                aria-expanded="true" aria-controls="collapseOne"> What
-                do you plan to do with the donations received? </a>
-            </h4>
-          </div>
-          <div id="collapseOne" class="panel-collapse collapse in"
-            role="tabpanel" aria-labelledby="headingOne">
-            <div class="panel-body">
-              All money donated to the Eclipse Foundation will be used to support the Eclipse Community.</a>
-            </div>
+<div id="midcolumn">
+  <h1><?php print $pageTitle; ?></h1>
+  <div class="homeitem3col">
+    <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
+      <!-- .PANEL -->
+      <div class="panel panel-default">
+        <div class="panel-heading" role="tab" id="headingOne">
+          <h4 class="panel-title">
+            <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseOne"
+              aria-expanded="true" aria-controls="collapseOne"
+            > What do you plan to do with the donations received? </a>
+          </h4>
+        </div>
+        <div id="collapseOne" class="panel-collapse collapse in" role="tabpanel"
+          aria-labelledby="headingOne"
+        >
+          <div class="panel-body">
+            All money donated to the Eclipse Foundation will be used to support the Eclipse
+            Community.
           </div>
         </div>
-        <!-- /.PANEL -->
-
-        <!-- .PANEL -->
-        <div class="panel panel-default">
-          <div class="panel-heading" role="tab" id="headingTwo">
-            <h4 class="panel-title">
-              <a role="button" data-toggle="collapse"
-                data-parent="#accordion" href="#collapseTwo"
-                aria-expanded="true" aria-controls="collapseTwo"> Do I
-                get a charitable tax receipt for my donation? </a>
-            </h4>
-          </div>
-          <div id="collapseTwo" class="panel-collapse collapse"
-            role="tabpanel" aria-labelledby="headingTwo">
-            <div class="panel-body">No, you will not receive a
-              charitable tax receipt for your donation. The Eclipse
-              Foundation is a 501(c)(6) not-for-profit organization, not
-              a charitable organization, so we are unable to provide
-              charitable tax receipts.</div>
-          </div>
-        </div>
-        <!-- /.PANEL -->
-
-        <!-- .PANEL -->
-        <div class="panel panel-default">
-          <div class="panel-heading" role="tab" id="headingThree">
-            <h4 class="panel-title">
-              <a role="button" data-toggle="collapse"
-                data-parent="#accordion" href="#collapseThree"
-                aria-expanded="true" aria-controls="collapseThree"> What
-                methods of payment do you accept for contributions? </a>
-            </h4>
-          </div>
-          <div id="collapseThree" class="panel-collapse collapse"
-            role="tabpanel" aria-labelledby="headingThree">
-            <div class="panel-body">We currently accept credit card donations and PayPal
-              donations.
-            </div>
-          </div>
-        </div>
-        <!-- /.PANEL -->
-
-        <!-- .PANEL -->
-        <div class="panel panel-default">
-          <div class="panel-heading" role="tab" id="headingFour">
-            <h4 class="panel-title">
-              <a role="button" data-toggle="collapse"
-                data-parent="#accordion" href="#collapseFour"
-                aria-expanded="true" aria-controls="collapseFour"> How
-                do I set-up a recurring donation? </a>
-            </h4>
-          </div>
-          <div id="collapseFour" class="panel-collapse collapse"
-            role="tabpanel" aria-labelledby="headingFour">
-            <div class="panel-body">
-              <p>Thank you for wanting to donate periodically to the
-                Eclipse Foundation!</p>
-              <p>The only way to create an automatic recurring donation
-                is through PayPal. On the <a href="/donate">donate page</a>, select the amount
-                you would like to give periodically, click donate. In
-                the next box, make sure PayPal is selected and selected
-                a donation period, monthly or yearly. To confirm your
-                donation, click the donate button again and you will be
-                redirected to PayPal to finalize the donation. From then
-                on, donations will be made automatically on your behalf
-                monthly or yearly, depending on your selection.</p>
-            </div>
-          </div>
-        </div>
-        <!-- /.PANEL -->
-
-        <!-- .PANEL -->
-        <div class="panel panel-default">
-          <div class="panel-heading" role="tab" id="headingFive">
-            <h4 class="panel-title">
-              <a role="button" data-toggle="collapse"
-                data-parent="#accordion" href="#collapseFive"
-                aria-expanded="true" aria-controls="collapseFive"> How do
-                I cancel my recurring donation? </a>
-            </h4>
-          </div>
-          <div id="collapseFive" class="panel-collapse collapse"
-            role="tabpanel" aria-labelledby="headingFive">
-            <div class="panel-body">
-              To cancel your recurring donation, you will have to log in
-              to your PayPal account to terminate the recurring payment.
-              More information is available on the <a
-                href="https://www.paypal.com/selfhelp/article/FAQ2058/3" target="_blank">PayPal
-                FAQ page.</a>
-            </div>
-          </div>
-        </div>
-        <!-- /.PANEL -->
-
-        <!-- .PANEL -->
-        <div class="panel panel-default">
-          <div class="panel-heading" role="tab" id="headingSix">
-            <h4 class="panel-title">
-              <a role="button" data-toggle="collapse"
-                data-parent="#accordion" href="#collapseSix"
-                aria-expanded="true" aria-controls="collapseSix"> What
-                if I want to donate by cheque or direct deposit? </a>
-            </h4>
-          </div>
-          <div id="collapseSix" class="panel-collapse collapse"
-            role="tabpanel" aria-labelledby="headingSix">
-            <div class="panel-body">
-              <p>You are welcome to make a donation
-              via cheque or direct deposit, but please note that you
-              will not be eligible for the Friend of Eclipse benefits.</p>
-              <p><strong>Cheque Donations</strong></p>
-              <p>To donate via cheque, please send your cheque to:</p>
-              <p>
-                Eclipse Foundation Donations<br> 102 Centrepointe Dr.<br>
-                Ottawa, Ontario<br> Canada, K2G 6B1
-              </p>
-              <p><strong>Direct Deposit</strong></p>
-              <p>To donate via direct deposit, <a href="mailto:donate@eclipse.org">email us</a> for the banking information.</p>
-              </div>
-          </div>
-        </div>
-        <!-- /.PANEL -->
-
-        <!-- .PANEL -->
-        <div class="panel panel-default">
-          <div class="panel-heading" role="tab" id="headingNine">
-            <h4 class="panel-title">
-              <a role="button" data-toggle="collapse"
-                data-parent="#accordion" href="#collapseNine"
-                aria-expanded="true" aria-controls="collapseNine"> What
-                amounts may I contribute? </a>
-            </h4>
-          </div>
-          <div id="collapseNine" class="panel-collapse collapse"
-            role="tabpanel" aria-labelledby="headingNine">
-            <div class="panel-body">You may contribute any amount you
-              like. A contribution over 35 USD gives you the Friend
-              of Eclipse status.</div>
-          </div>
-        </div>
-        <!-- /.PANEL -->
-
-        <!-- .PANEL -->
-        <div class="panel panel-default">
-          <div class="panel-heading" role="tab" id="headingTen">
-            <h4 class="panel-title">
-              <a role="button" data-toggle="collapse"
-                data-parent="#accordion" href="#collapseTen"
-                aria-expanded="true" aria-controls="collapseTen"> What
-                is a “Friend of Eclipse” and how do I become one? </a>
-            </h4>
-          </div>
-          <div id="collapseTen" class="panel-collapse collapse"
-            role="tabpanel" aria-labelledby="headingTen">
-            <div class="panel-body">
-              <p>Individuals that contribute 35 USD or more qualify for
-                the Friend of Eclipse status. This status lasts for a
-                period of 12 months.</p>
-                <ul>
-                <li>Friends are recognized on Buzgilla with a friend of Eclipse badge.</li>
-                <li>Friends can use the Friend of Eclipse logo.</li>
-                </ul>
-            </div>
-          </div>
-        </div>
-        <!-- /.PANEL -->
-
-
-        <!-- .PANEL -->
-        <div class="panel panel-default">
-          <div class="panel-heading" role="tab" id="headingEleven">
-            <h4 class="panel-title">
-              <a role="button" data-toggle="collapse"
-                data-parent="#accordion" href="#collapseEleven"
-                aria-expanded="true" aria-controls="collapseEleven"> How do
-                I link my Eclipse Account to my donation? </a>
-            </h4>
-          </div>
-          <div id="collapseEleven" class="panel-collapse collapse"
-            role="tabpanel" aria-labelledby="headingEleven">
-            <div class="panel-body">
-              If you have made a donation while you were logged in, your
-              donation will automatically be linked to your Eclipse
-              Account. If your Eclipse Account and your donations aren’t
-              linked and you would like them to be, please email us <a
-                href="mailto:donate@eclipse.org?subject=Link donation to my Eclipse Account">donate@eclipse.org</a>.
-              Please provide your donation details in the email: date,
-              transaction ID, full name, and your Eclipse Account email
-              address.
-            </div>
-          </div>
-        </div>
-        <!-- /.PANEL -->
-
-        <!-- .PANEL -->
-        <div class="panel panel-default">
-          <div class="panel-heading" role="tab" id="headingTwelve">
-            <h4 class="panel-title">
-              <a role="button" data-toggle="collapse"
-                data-parent="#accordion" href="#collapseTwelve"
-                aria-expanded="true" aria-controls="collapseTwelve"> What
-                should I do if I made a mistake when submitting my
-                contribution? </a>
-            </h4>
-          </div>
-          <div id="collapseTwelve" class="panel-collapse collapse"
-            role="tabpanel" aria-labelledby="headingTwelve">
-            <div class="panel-body">
-              Please contact us at <a href="mailto:donate@eclipse.org?subject=Donation Problem">donate@eclipse.org</a>
-              with all your contact information and an explanation of
-              what you need corrected.
-            </div>
-          </div>
-        </div>
-        <!-- /.PANEL -->
-
-        <!-- .PANEL -->
-        <div class="panel panel-default">
-          <div class="panel-heading" role="tab" id="headingThirteen">
-            <h4 class="panel-title">
-              <a role="button" data-toggle="collapse"
-                data-parent="#accordion" href="#collapseThirteen"
-                aria-expanded="true" aria-controls="collapseThirteen"> Who
-                can use the Friend of Eclipse Logo? </a>
-            </h4>
-          </div>
-          <div id="collapseThirteen" class="panel-collapse collapse"
-            role="tabpanel" aria-labelledby="headingThirteen">
-            <div class="panel-body">Any individual that has donated more
-              than 35 USD to the Eclipse Foundation may use the Friend
-              of Eclipse logo.</div>
-          </div>
-        </div>
-        <!-- /.PANEL -->
-
-        <!-- .PANEL -->
-        <div class="panel panel-default">
-          <div class="panel-heading" role="tab" id="headingFourteen">
-            <h4 class="panel-title">
-              <a role="button" data-toggle="collapse"
-                data-parent="#accordion" href="#collapseFourteen"
-                aria-expanded="true" aria-controls="collapseFourteen"> How
-                can I get recognized for my donation on the credit page?
-              </a>
-            </h4>
-          </div>
-          <div id="collapseFourteen" class="panel-collapse collapse"
-            role="tabpanel" aria-labelledby="headingFourteen">
-            <div class="panel-body">When you make your donation, check
-              the box next to “I want to be listed on the recognition
-              page”, then enter your first and last name. Once your
-              donation has been finalized, you will be listed on the
-              <a href="/donate/credit.php">credit page</a>. If you do not check the box, your donation
-              will remain anonymous.</div>
-          </div>
-        </div>
-        <!-- /.PANEL -->
-
-       <!-- .PANEL -->
-        <div class="panel panel-default">
-          <div class="panel-heading" role="tab" id="headingFifteen">
-            <h4 class="panel-title">
-              <a role="button" data-toggle="collapse"
-                data-parent="#accordion" href="#collapseFifteen"
-                aria-expanded="true" aria-controls="collapseFifteen"> How can I make a corporate donation? </a>
-            </h4>
-          </div>
-          <div id="collapseFifteen" class="panel-collapse collapse"
-            role="tabpanel" aria-labelledby="headingFifteen">
-            <div class="panel-body">We have an <a href="https://eclipse.org/corporate_sponsors/corp_sponsor_details.php">Eclipse Corporate Sponsor Program</a>. A company may become a corporate sponsor by making a financial contribution or an in-kind contribution of goods and services to the Eclipse Foundation. There are three tiers of sponsorship: 1) Platinum, 2) Gold and 3) Silver; each tier representing the level of annual sponsorship to the Eclipse Foundation.</div>
-          </div>
-        </div>
-        <!-- /.PANEL -->
-
-        <!-- .PANEL -->
-        <div class="panel panel-default">
-          <div class="panel-heading" role="tab" id="headingSixteen">
-            <h4 class="panel-title">
-              <a role="button" data-toggle="collapse"
-                data-parent="#accordion" href="#collapseSixteen"
-                aria-expanded="true" aria-controls="collapseSixteen">
-                Contact Us </a>
-            </h4>
-          </div>
-          <div id="collapseSixteen" class="panel-collapse collapse"
-            role="tabpanel" aria-labelledby="headingSixteen">
-            <div class="panel-body">
-              Other questions? Email us <a
-                href="mailto:donate@eclipse.org">donate@eclipse.org</a>
-            </div>
-          </div>
-        </div>
-        <!-- /.PANEL -->
-
       </div>
-
-    </div>
-  </div>
-  <div id="rightcolumn">
-    <div class="sideitem">
-      <h6>Related Links</h6>
-      <ul>
-        <li><a href="/donate/donorlist.php#friends">Friends of Eclipse</a></li>
-        <li><a href="donorlist.php">Public List of Donors</a></li>
-      </ul>
+      <!-- /.PANEL -->
+      <!-- .PANEL -->
+      <div class="panel panel-default">
+        <div class="panel-heading" role="tab" id="headingTwo">
+          <h4 class="panel-title">
+            <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo"
+              aria-expanded="true" aria-controls="collapseTwo"
+            > Do I get a charitable tax receipt for my donation? </a>
+          </h4>
+        </div>
+        <div id="collapseTwo" class="panel-collapse collapse" role="tabpanel"
+          aria-labelledby="headingTwo"
+        >
+          <div class="panel-body">No, you will not receive a charitable tax receipt for your
+            donation. The Eclipse Foundation is a 501(c)(6) not-for-profit organization, not a
+            charitable organization, so we are unable to provide charitable tax receipts.</div>
+        </div>
+      </div>
+      <!-- /.PANEL -->
+      <!-- .PANEL -->
+      <div class="panel panel-default">
+        <div class="panel-heading" role="tab" id="headingThree">
+          <h4 class="panel-title">
+            <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseThree"
+              aria-expanded="true" aria-controls="collapseThree"
+            > What methods of payment do you accept for contributions? </a>
+          </h4>
+        </div>
+        <div id="collapseThree" class="panel-collapse collapse" role="tabpanel"
+          aria-labelledby="headingThree"
+        >
+          <div class="panel-body">We currently accept credit card donations and PayPal donations.</div>
+        </div>
+      </div>
+      <!-- /.PANEL -->
+      <!-- .PANEL -->
+      <div class="panel panel-default">
+        <div class="panel-heading" role="tab" id="headingFour">
+          <h4 class="panel-title">
+            <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseFour"
+              aria-expanded="true" aria-controls="collapseFour"
+            > How do I set-up a recurring donation? </a>
+          </h4>
+        </div>
+        <div id="collapseFour" class="panel-collapse collapse" role="tabpanel"
+          aria-labelledby="headingFour"
+        >
+          <div class="panel-body">
+            <p>Thank you for wanting to donate periodically to the Eclipse Foundation!</p>
+            <p>
+              The only way to create an automatic recurring donation is through PayPal. On the <a
+                href="/donate"
+              >donate page</a>, select the amount you would like to give periodically, click donate.
+              In the next box, make sure PayPal is selected and selected a donation period, monthly
+              or yearly. To confirm your donation, click the donate button again and you will be
+              redirected to PayPal to finalize the donation. From then on, donations will be made
+              automatically on your behalf monthly or yearly, depending on your selection.
+            </p>
+          </div>
+        </div>
+      </div>
+      <!-- /.PANEL -->
+      <!-- .PANEL -->
+      <div class="panel panel-default">
+        <div class="panel-heading" role="tab" id="headingFive">
+          <h4 class="panel-title">
+            <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseFive"
+              aria-expanded="true" aria-controls="collapseFive"
+            > How do I cancel my recurring donation? </a>
+          </h4>
+        </div>
+        <div id="collapseFive" class="panel-collapse collapse" role="tabpanel"
+          aria-labelledby="headingFive"
+        >
+          <div class="panel-body">
+            To cancel your recurring donation, you will have to log in to your PayPal account to
+            terminate the recurring payment. More information is available on the <a
+              href="https://www.paypal.com/selfhelp/article/FAQ2058/3" target="_blank"
+            >PayPal FAQ page.</a>
+          </div>
+        </div>
+      </div>
+      <!-- /.PANEL -->
+      <!-- .PANEL -->
+      <div class="panel panel-default">
+        <div class="panel-heading" role="tab" id="headingSix">
+          <h4 class="panel-title">
+            <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseSix"
+              aria-expanded="true" aria-controls="collapseSix"
+            > What if I want to donate by cheque or direct deposit? </a>
+          </h4>
+        </div>
+        <div id="collapseSix" class="panel-collapse collapse" role="tabpanel"
+          aria-labelledby="headingSix"
+        >
+          <div class="panel-body">
+            <p>You are welcome to make a donation via cheque or direct deposit, but please note that
+              you will not be eligible for the Friend of Eclipse benefits.</p>
+            <p>
+              <strong>Cheque Donations</strong>
+            </p>
+            <p>To donate via cheque, please send your cheque to:</p>
+            <p>
+              Eclipse Foundation Donations<br> 102 Centrepointe Dr.<br> Ottawa, Ontario<br> Canada,
+              K2G 6B1
+            </p>
+            <p>
+              <strong>Direct Deposit</strong>
+            </p>
+            <p>
+              To donate via direct deposit, <a href="mailto:donate@eclipse.org">email us</a> for the
+              banking information.
+            </p>
+          </div>
+        </div>
+      </div>
+      <!-- /.PANEL -->
+      <!-- .PANEL -->
+      <div class="panel panel-default">
+        <div class="panel-heading" role="tab" id="headingNine">
+          <h4 class="panel-title">
+            <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseNine"
+              aria-expanded="true" aria-controls="collapseNine"
+            > What amounts may I contribute? </a>
+          </h4>
+        </div>
+        <div id="collapseNine" class="panel-collapse collapse" role="tabpanel"
+          aria-labelledby="headingNine"
+        >
+          <div class="panel-body">You may contribute any amount you like. A contribution over 35 USD
+            gives you the Friend of Eclipse status.</div>
+        </div>
+      </div>
+      <!-- /.PANEL -->
+      <!-- .PANEL -->
+      <div class="panel panel-default">
+        <div class="panel-heading" role="tab" id="headingTen">
+          <h4 class="panel-title">
+            <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseTen"
+              aria-expanded="true" aria-controls="collapseTen"
+            > What is a “Friend of Eclipse” and how do I become one? </a>
+          </h4>
+        </div>
+        <div id="collapseTen" class="panel-collapse collapse" role="tabpanel"
+          aria-labelledby="headingTen"
+        >
+          <div class="panel-body">
+            <p>Individuals that contribute 35 USD or more qualify for the Friend of Eclipse status.
+              This status lasts for a period of 12 months.</p>
+            <ul>
+              <li>Friends are recognized on Buzgilla with a friend of Eclipse badge.</li>
+              <li>Friends can use the Friend of Eclipse logo.</li>
+            </ul>
+          </div>
+        </div>
+      </div>
+      <!-- /.PANEL -->
+      <!-- .PANEL -->
+      <div class="panel panel-default">
+        <div class="panel-heading" role="tab" id="headingEleven">
+          <h4 class="panel-title">
+            <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseEleven"
+              aria-expanded="true" aria-controls="collapseEleven"
+            > How do I link my Eclipse Account to my donation? </a>
+          </h4>
+        </div>
+        <div id="collapseEleven" class="panel-collapse collapse" role="tabpanel"
+          aria-labelledby="headingEleven"
+        >
+          <div class="panel-body">
+            If you have made a donation while you were logged in, your donation will automatically
+            be linked to your Eclipse Account. If your Eclipse Account and your donations aren’t
+            linked and you would like them to be, please email us <a
+              href="mailto:donate@eclipse.org?subject=Link donation to my Eclipse Account"
+            >donate@eclipse.org</a>. Please provide your donation details in the email: date,
+            transaction ID, full name, and your Eclipse Account email address.
+          </div>
+        </div>
+      </div>
+      <!-- /.PANEL -->
+      <!-- .PANEL -->
+      <div class="panel panel-default">
+        <div class="panel-heading" role="tab" id="headingTwelve">
+          <h4 class="panel-title">
+            <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseTwelve"
+              aria-expanded="true" aria-controls="collapseTwelve"
+            > What should I do if I made a mistake when submitting my contribution? </a>
+          </h4>
+        </div>
+        <div id="collapseTwelve" class="panel-collapse collapse" role="tabpanel"
+          aria-labelledby="headingTwelve"
+        >
+          <div class="panel-body">
+            Please contact us at <a href="mailto:donate@eclipse.org?subject=Donation Problem">donate@eclipse.org</a>
+            with all your contact information and an explanation of what you need corrected.
+          </div>
+        </div>
+      </div>
+      <!-- /.PANEL -->
+      <!-- .PANEL -->
+      <div class="panel panel-default">
+        <div class="panel-heading" role="tab" id="headingThirteen">
+          <h4 class="panel-title">
+            <a role="button" data-toggle="collapse" data-parent="#accordion"
+              href="#collapseThirteen" aria-expanded="true" aria-controls="collapseThirteen"
+            > Who can use the Friend of Eclipse Logo? </a>
+          </h4>
+        </div>
+        <div id="collapseThirteen" class="panel-collapse collapse" role="tabpanel"
+          aria-labelledby="headingThirteen"
+        >
+          <div class="panel-body">Any individual that has donated more than 35 USD to the Eclipse
+            Foundation may use the Friend of Eclipse logo.</div>
+        </div>
+      </div>
+      <!-- /.PANEL -->
+      <!-- .PANEL -->
+      <div class="panel panel-default">
+        <div class="panel-heading" role="tab" id="headingFourteen">
+          <h4 class="panel-title">
+            <a role="button" data-toggle="collapse" data-parent="#accordion"
+              href="#collapseFourteen" aria-expanded="true" aria-controls="collapseFourteen"
+            > How can I get recognized for my donation on the credit page? </a>
+          </h4>
+        </div>
+        <div id="collapseFourteen" class="panel-collapse collapse" role="tabpanel"
+          aria-labelledby="headingFourteen"
+        >
+          <div class="panel-body">
+            When you make your donation, check the box next to “I want to be listed on the
+            recognition page”, then enter your first and last name. Once your donation has been
+            finalized, you will be listed on the <a href="/donate/credit.php">credit page</a>. If
+            you do not check the box, your donation will remain anonymous.
+          </div>
+        </div>
+      </div>
+      <!-- /.PANEL -->
+      <!-- .PANEL -->
+      <div class="panel panel-default">
+        <div class="panel-heading" role="tab" id="headingFifteen">
+          <h4 class="panel-title">
+            <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseFifteen"
+              aria-expanded="true" aria-controls="collapseFifteen"
+            > How can I make a corporate donation? </a>
+          </h4>
+        </div>
+        <div id="collapseFifteen" class="panel-collapse collapse" role="tabpanel"
+          aria-labelledby="headingFifteen"
+        >
+          <div class="panel-body">
+            We have an <a href="https://eclipse.org/corporate_sponsors/corp_sponsor_details.php">Eclipse
+              Corporate Sponsor Program</a>. A company may become a corporate sponsor by making a
+            financial contribution or an in-kind contribution of goods and services to the Eclipse
+            Foundation. There are three tiers of sponsorship: 1) Platinum, 2) Gold and 3) Silver;
+            each tier representing the level of annual sponsorship to the Eclipse Foundation.
+          </div>
+        </div>
+      </div>
+      <!-- /.PANEL -->
+      <!-- .PANEL -->
+      <div class="panel panel-default">
+        <div class="panel-heading" role="tab" id="headingSixteen">
+          <h4 class="panel-title">
+            <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseSixteen"
+              aria-expanded="true" aria-controls="collapseSixteen"
+            > Contact Us </a>
+          </h4>
+        </div>
+        <div id="collapseSixteen" class="panel-collapse collapse" role="tabpanel"
+          aria-labelledby="headingSixteen"
+        >
+          <div class="panel-body">
+            Other questions? Email us <a href="mailto:donate@eclipse.org">donate@eclipse.org</a>
+          </div>
+        </div>
+      </div>
+      <!-- /.PANEL -->
     </div>
   </div>
 </div>
\ No newline at end of file
diff --git a/content/en_index.php b/content/en_index.php
index d930a06..54ea368 100644
--- a/content/en_index.php
+++ b/content/en_index.php
@@ -1,121 +1,148 @@
 <?php
-/*******************************************************************************
- * Copyright (c) 2015 Eclipse Foundation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://eclipse.org/legal/epl-v10.html
+/**
+ * Copyright (c) 2015, 2018 Eclipse Foundation.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
  *
  * Contributors:
- *    Christopher Guindon (Eclipse Foundation) - Initial implementation
- *******************************************************************************/
+ * Christopher Guindon (Eclipse Foundation) - Initial implementation
+ * Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+
 // Infra 2200 - After a successful download on the Downloads page,
 // this page (en_index.php) is being printed and the CSS and JS are needed.
 $App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="/donate/assets/public/stylesheets/improve.min.css" media="screen" />');
 $App->AddExtraJSFooter('<script type="text/javascript" src="/donate/assets/public/javascript/scripts.min.js?1501"></script>');
 ?>
-
 <div class="jumbotron text-center breadcrumbs-offset footer-offset">
   <div class="container padding-bottom-25">
-    <?php
-    // Infra 2193 - The container-thankyou div is needed for the Successful Downloads page.
-    if (isset($title_1) && isset($title_2) && isset($download_link)):?>
-      <div class="container-thankyou">
-        <div class="row thankyou text-center">
-          <p class="thankyou-title"><span><?php print $title_1; ?></span> <?php print $title_2;?></p>
-          <span class="direct-link"><?php print $download_link; ?></span>
-        </div>
+  <?php
+  // Infra 2193 - The container-thankyou div is needed for the Successful
+  // Downloads page.
+  if (isset($title_1) && isset($title_2) && isset($download_link)) :
+    ?>
+    <div class="container-thankyou">
+      <div class="row thankyou text-center">
+        <p class="thankyou-title">
+          <span><?php print $title_1; ?></span> <?php print $title_2;?></p>
+        <span class="direct-link"><?php print $download_link; ?></span>
       </div>
-    <?php endif;?>
-    <div class="row">
-      <div class="col-sm-18 col-sm-offset-3 donate-container">
+    </div>
+  <?php endif;?>
+  <div class="row">
+      <div class="col-md-18 col-md-offset-3 donate-container">
         <div class="donate-container-content">
-          <h1>Power the <strong class="orange">Eclipse Community</strong> <br>with your donation</h1>
+          <h1>
+            Power the <strong class="orange">Eclipse Community</strong> <br>with your donation
+          </h1>
           <input class="donate-bar" type="range" value="3" step="1" min="1" max="5">
         </div>
         <ul class="list-inline list-donate-amount text-left margin-bottom-20">
           <li class="one">$5</li>
           <li class="two">$10</li>
-          <li class="three">$35</li>
-          <li class="four">$50</li>
-          <li class="five">$100</li>
+          <li class="three text-center">$35</li>
+          <li class="four text-right">$50</li>
+          <li class="five text-right">$100</li>
         </ul>
-
         <div class="form-inline margin-bottom-20 donate-submit">
           <div class="input-group">
-            <input class="donate-amount form-control text-center" type="number" name="firstAmount" value="35" min="1">
+            <input class="donate-amount form-control text-center" type="number" name="firstAmount"
+              value="35" min="1"
+            >
             <div class="input-group-addon">USD</div>
           </div>
           <!-- <input type="submit" class="btn btn-warning"> -->
-          <button type="button" class="btn btn-warning btn-donate" data-toggle="modal" data-target="#donationModal">Donate</button>
+          <button type="button" class="btn btn-warning btn-donate" data-toggle="modal"
+            data-target="#donationModal"
+          >Donate</button>
         </div>
         <ul class="list-inline">
-          <li><a class="grey-link" href="mailto:donate@eclipse.org?subject=Donation Problem">Problems donating?</a></li>
+          <li><a class="grey-link" href="mailto:donate@eclipse.org?subject=Donation Problem">Problems
+              donating?</a></li>
           <li><a class="grey-link" href="/donate/faq.php">Donation FAQ</a></li>
         </ul>
       </div>
     </div>
   </div>
 </div>
-
 <!-- Modal -->
-<div class="modal fade text-center" id="donationModal" tabindex="-1" role="dialog" aria-labelledby="donation_modal">
+<div class="modal fade text-center" id="donationModal" tabindex="-1" role="dialog"
+  aria-labelledby="donation_modal"
+>
   <div class="donate-modal modal-dialog modal-sm" role="document">
     <div class="modal-content">
-      <form id="donation_default_eclipse_form" class="choose-amount" action="<?php print $Paypal->get_gateway_process_url();?>" method="POST">
+      <form id="donation_default_eclipse_form" class="choose-amount"
+        action="<?php print $Paypal->get_gateway_process_url();?>" method="POST"
+      >
         <div class="modal-header">
-          <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
-          <h4 class="modal-title" id="myModalLabel">Thank you for supporting <span class="text-nowrap">our community</span>!</h4>
+          <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+            <span aria-hidden="true">&times;</span>
+          </button>
+          <h4 class="modal-title" id="myModalLabel">
+            Thank you for supporting <span class="text-nowrap">our community</span>!
+          </h4>
         </div>
         <div class="modal-body">
           <div class="row">
             <div class="col-sm-12 col-sm-offset-6">
               <div class="form-inline margin-bottom-15">
                 <div class="input-group">
-                  <input class="form-control form-amount text-center" type="number" name="amount" value="35" min="1">
+                  <input class="form-control form-amount text-center" type="number" name="amount"
+                    value="35" min="1"
+                  >
                   <div class="input-group-addon">USD</div>
                 </div>
               </div>
             </div>
           </div>
-
-
           <div class="row margin-bottom-5">
             <div class="col-sm-24 text-center">
-              <label class="radio-inline"><input type="radio" name="type" value="paypal" checked="checked"> Paypal</label>
-              <label class="radio-inline"><input type="radio" name="type" value="credit"> Credit card</label>
+              <label class="radio-inline"><input type="radio" name="type" value="paypal"
+                checked="checked"
+              > Paypal</label> <label class="radio-inline"><input type="radio" name="type"
+                value="credit"
+              > Credit card</label>
             </div>
           </div>
-
           <div class="row margin-bottom-5">
             <div class="col-sm-24">
-              <label class="radio-inline"><input type="radio" name="subscription" id="subscription_default" value="0" checked="checked"> One-time</label>
-              <label class="radio-inline"><input type="radio" name="subscription" value="M"> Monthly</label>
-              <label class="radio-inline"><input type="radio" name="subscription" value="Y"> Yearly</label>
+              <label class="radio-inline"><input type="radio" name="subscription"
+                id="subscription_default" value="0" checked="checked"
+              > One-time</label> <label class="radio-inline"><input type="radio" name="subscription"
+                value="M"
+              > Monthly</label> <label class="radio-inline"><input type="radio" name="subscription"
+                value="Y"
+              > Yearly</label>
             </div>
           </div>
-
           <div class="checkbox">
-            <label>
-              <input class="recognition-checkbox" type="checkbox" value="" name="recognition">
+            <label> <input class="recognition-checkbox" type="checkbox" value="" name="recognition">
               <span class="recognition-text">I want to be listed on the recognition page</span>
             </label>
           </div>
-
           <div class="recognition-fields form-inline">
             <div class="form-group">
-              <input class="form-control margin-bottom-10" type="text" name="first_name" placeholder="First Name">
+              <input class="form-control margin-bottom-10" type="text" name="first_name"
+                placeholder="First Name"
+              >
             </div>
             <div class="form-group">
-              <input class="form-control margin-bottom-10" type="text" name="last_name" placeholder="Last Name">
+              <input class="form-control margin-bottom-10" type="text" name="last_name"
+                placeholder="Last Name"
+              >
             </div>
           </div>
-
         </div>
         <div class="modal-footer donate-modal-footer text-center">
-          <input type="hidden" name="default_process_url" value="<?php print $Paypal->get_gateway_process_url();?>">
-          <input type="hidden" name="credit_process_url" value="<?php print $Paypal->get_gateway_credit_process_url();?>">
-          <input type="submit" value="Donate" class="btn btn-warning">
+          <input type="hidden" name="default_process_url"
+            value="<?php print $Paypal->get_gateway_process_url();?>"
+          > <input type="hidden" name="credit_process_url"
+            value="<?php print $Paypal->get_gateway_credit_process_url();?>"
+          > <input type="submit" value="Donate" class="btn btn-warning">
         </div>
       </form>
     </div>
diff --git a/content/en_link-account.php b/content/en_link-account.php
index 6e6b748..3bd56e3 100644
--- a/content/en_link-account.php
+++ b/content/en_link-account.php
@@ -1,51 +1,57 @@
 <?php
-/*******************************************************************************
- * Copyright (c) 2015 Eclipse Foundation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://eclipse.org/legal/epl-v10.html
+/**
+ * Copyright (c) 2015, 2018 Eclipse Foundation.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
  *
  * Contributors:
- *    Christopher Guindon (Eclipse Foundation) - Initial implementation
- *******************************************************************************/
+ * Christopher Guindon (Eclipse Foundation) - Initial implementation
+ * Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
 $App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="/donate/assets/public/stylesheets/improve.min.css" media="screen" />');
 $App->AddExtraJSFooter('<script type="text/javascript" src="/donate/assets/public/javascript/scripts.min.js"></script>');
 ?>
-
 <section class="content ">
   <div class="container">
     <div class="row">
       <div class="col-md-16">
         <h1><?php print $pageTitle;?></h1>
-        <p>We are pleased to welcome you to the Friends of Eclipse program.
-        To take full advantage of the program you will need to enter your
-         Eclipse Account e-mail address, if you have one, or
-         <a href="https://dev.eclipse.org/site_login/" title="create an Eclipse account">
-           create an account
-         </a>.
-         This will allow you access to the Friends of Eclipse benefits.
+        <p>
+          We are pleased to welcome you to the Friends of Eclipse program. To take full advantage of
+          the program you will need to enter your Eclipse Account e-mail address, if you have one,
+          or <a href="https://accounts.eclipse.org/user/register" title="create an Eclipse account"> create
+            an account </a>. This will allow you access to the Friends of Eclipse benefits.
         </p>
         <?php print $PaymentGateway->get_client_message();?>
         <?php if (!$hide_form):?>
           <div class="row">
-            <form class="choose-amount" action="" method="POST">
-              <div class="col-sm-24 optional-form-fields">
-                <input type="email" name="email" value="<?php print $PaymentGateway->Donation->Donor->get_active_email();?>" placeholder="Email Address (Optional)">
-                <textarea name="message" placeholder="Comments (Optional)"><?php print $PaymentGateway->Donation->get_donation_message();?></textarea>
-                <div class="padding-top-10 is_anonymous">
-                  <input type="checkbox" name="is_anonymous" value="is_anonymous" <?php if ($PaymentGateway->Donation->get_donation_is_anonymous()) {print 'checked="checked"';}?>/> I prefer to remain anonymous.
-                </div>
-                <hr>
+          <form class="choose-amount" action="" method="POST">
+            <div class="col-sm-24 optional-form-fields">
+              <input type="email" name="email"
+                value="<?php print $PaymentGateway->Donation->Donor->get_active_email();?>"
+                placeholder="Email Address (Optional)">
+              <textarea name="message" placeholder="Comments (Optional)"><?php print $PaymentGateway->Donation->get_donation_message();?></textarea>
+              <div class="padding-top-10 is_anonymous">
+                <input type="checkbox" name="is_anonymous" value="is_anonymous"
+                  <?php if ($PaymentGateway->Donation->get_donation_is_anonymous()) {print 'checked="checked"';}?>
+                /> I prefer to remain anonymous.
               </div>
-              <div class="col-sm-6 margin-top-5">
-                <input type="submit" class="btn btn-warning donation-button" value="Update donation"/>
-              </div>
-              <input type="hidden" name="form-stage" value="update"/>
-            </form>
-          </div>
+              <hr>
+            </div>
+            <div class="col-sm-6 margin-top-5">
+              <input type="submit" class="btn btn-warning donation-button" value="Update donation" />
+            </div>
+            <input type="hidden" name="form-stage" value="update" />
+          </form>
+        </div>
         <?php else:?>
-        <p><a href="/donate/credit.php" class="btn btn-primary">Return to donation page</a></p>
+        <p>
+          <a href="/donate/credit.php" class="btn btn-primary">Return to donation page</a>
+        </p>
         <?php endif;?>
       </div>
      <?php include('en_sidebar.php');?>
diff --git a/content/en_sidebar.php b/content/en_sidebar.php
index fdea57a..9a3ba77 100644
--- a/content/en_sidebar.php
+++ b/content/en_sidebar.php
@@ -1,19 +1,22 @@
 <?php
-/*******************************************************************************
- * Copyright (c) 2015 Eclipse Foundation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://eclipse.org/legal/epl-v10.html
+/**
+ * Copyright (c) 2015, 2018 Eclipse Foundation.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
  *
  * Contributors:
- *    Christopher Guindon (Eclipse Foundation) - Initial implementation
- *******************************************************************************/
+ * Christopher Guindon (Eclipse Foundation) - Initial implementation
+ * Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
 ?>
 
 <div class="col-md-8">
-  <div class="well sidebar">
-    <h2>Thanks to <br><strong>Friends of Eclipse</strong></h2>
+  <div class="sideitem">
+    <h4>Thanks to <br><strong>Friends of Eclipse</strong></h4>
     <p><strong>Your donations have helped fund the following improvements:</strong></p>
     <ul class="list-unstyled">
       <li>Auto-save of all workbench editors</li>
diff --git a/content/en_support.php b/content/en_support.php
index da29dad..bfa2bc1 100644
--- a/content/en_support.php
+++ b/content/en_support.php
@@ -1,15 +1,17 @@
 <?php
-/*******************************************************************************
- * Copyright (c) 2014 Eclipse Foundation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://eclipse.org/legal/epl-v10.html
+/**
+ * Copyright (c) 2014, 2018 Eclipse Foundation.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
  *
  * Contributors:
- *    Christopher Guindon (Eclipse Foundation) - Initial implementation
- *    Edouard Poitras (Eclipse Foundation) - Some modifications
- *******************************************************************************/
+ *   Christopher Guindon (Eclipse Foundation) - Initial implementation
+ *   Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
 ?>
 <div id="content">
   <div class="row">
diff --git a/credit.php b/credit.php
index 4999655..ede8381 100644
--- a/credit.php
+++ b/credit.php
@@ -1,26 +1,26 @@
 <?php
-/*******************************************************************************
- * Copyright (c) 2015 Eclipse Foundation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://eclipse.org/legal/epl-v10.html
+/**
+ * Copyright (c) 2015, 2018 Eclipse Foundation.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
  *
  * Contributors:
- *    Christopher Guindon (Eclipse Foundation) - Initial implementation
- *******************************************************************************/
+ *   Christopher Guindon (Eclipse Foundation) - Initial implementation
+ *   Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
 require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");
 require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/friends/donationList.class.php");
 require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/friends/payment.class.php");
 
 $App = new App();
-$Nav = new Nav();
-$Menu = new Menu();
 $Paypal = new Paypal();
+$Theme = $App->getThemeClass();
 $testmode = $Paypal->_get_debug_mode();
-$DonationList = new DonationList($testmode);
+$DonationList = new DonationList();
 
 $App->preventCaching();
 
@@ -32,31 +32,34 @@
 
 # Begin: page-specific settings.  Change these.
 $pageTitle = "Together we can improve Eclipse";
-$pageKeywords = "friends of eclipse, donation, contribution";
-$pageAuthor = "Christopher Guindon";
+$Theme->setPageTitle($pageTitle);
+$Theme->setPageKeywords("friends of eclipse, donation, contribution");
+$Theme->setPageAuthor("Christopher Guindon");
 
-// Custom theme variables
-$variables = array();
-$variables['main_container_classes'] = 'container-credit';
-
-$bestFriendsContributions = new FriendsContributionsList($testmode);
+$bestFriendsContributions = new FriendsContributionsList();
 $bestFriendsContributions->selectFriendsContributionsList(0, 6, 'WHERE FC.amount >= 100 and F.is_anonymous = 0');
 $bestFriends = $bestFriendsContributions->getList();
 $donationlist_html = $DonationList->displayFriends($bestFriends, 'credit');
 
-$friendsContributions = new FriendsContributionsList($testmode);
+$friendsContributions = new FriendsContributionsList();
 $friendsContributions->selectFriendsContributionsList(0, 40, 'WHERE FC.amount >= 35 and FC.amount <= 99.99 and F.is_anonymous = 0');
 $friends = $friendsContributions->getList();
 $donationlist_35_html = $DonationList->displayFriends($friends, 'four-columns');
 
-// Place your html content in a file called content/en_pagename.php
-ob_start();
-include("content/en_" . $App->getScriptName());
-$html = ob_get_clean();
-
+// Custom theme variables
+$variables = array();
+$variables['main_container_classes'] = 'container-credit';
 $App->setThemeVariables($variables);
 
 # Generate the web page
 $App->AddExtraJSFooter('<script type="text/javascript" src="assets/public/javascript/scripts.min.js"></script>');
 $App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="assets/public/stylesheets/credit.min.css" media="screen" />');
-$App->generatePage(NULL, $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
\ No newline at end of file
+
+// Generate the web page
+ob_start();
+include ("content/en_" . $App->getScriptName());
+$html = ob_get_clean();
+
+$Theme->setHtml($html);
+$Theme->removeAttributes('breadcrumbs', 'breadcrumbs-default-margin');
+$Theme->generatePage();
\ No newline at end of file
diff --git a/donorlist.php b/donorlist.php
index 5863b41..9e309d9 100644
--- a/donorlist.php
+++ b/donorlist.php
@@ -1,80 +1,72 @@
 <?php
-/*******************************************************************************
- * Copyright (c) 2014, 2015 Eclipse Foundation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://eclipse.org/legal/epl-v10.html
+/**
+ * Copyright (c) 2014, 2015, 2018 Eclipse Foundation.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
  *
  * Contributors:
- *    Nathan Gervais (Eclipse Foundation) - Initial implementation (2007-11-07)
- *    Edouard Poitras (Eclipse Foundation) - Further modifications
- *    Christopher Guindon (Eclipse Foundation)
- *******************************************************************************/
-  require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
-  require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
-  require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");
-  require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/friends/payment.class.php");
-  require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/friends/donationList.class.php");
+ *   Christopher Guindon (Eclipse Foundation) - Initial implementation
+ *   Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
+require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/friends/payment.class.php");
+require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/friends/donationList.class.php");
 
-  $App = new App();
-  $Menu = new Menu();
-  $PaymentGateway = new PaymentGateway();
-  $debug_mode = $PaymentGateway->_get_debug_mode();
+$App = new App();
+$Theme = $App->getThemeClass();
+$PaymentGateway = new PaymentGateway();
+$debug_mode = $PaymentGateway->_get_debug_mode();
 
+$App->preventCaching();
+header('Content-Type: text/html; charset=utf-8;');
 
-  include($App->getProjectCommon());
-  $App->preventCaching();
-  header('Content-Type: text/html; charset=utf-8;');
+// Begin: page-specific settings. Change these.
+$pageTitle = "Hall of Friends";
+$Theme->setPageTitle($pageTitle);
+$Theme->setPageKeywords("friends of eclipse, donation, contribution");
+$Theme->setPageAuthor("Christopher Guindon");
 
-  # Begin: page-specific settings.  Change these.
-  $pageTitle     = "Hall of Friends";
-  $pageKeywords  = "friends of eclipse, donation, contribution";
-  $pageAuthor    = "Christopher Guindon";
-  ob_start();
+$start = $App->getHTTPParameter('start');
+$fstart = $App->getHTTPParameter('fstart');
+$bfstart = $App->getHTTPParameter('bfstart');
 
-  $start = $App->getHTTPParameter('start');
-  $fstart = $App->getHTTPParameter('fstart');
-  $bfstart = $App->getHTTPParameter('bfstart');
+$pageValue = 20;
+if ((!$start) || (!preg_match('/^[0-9]+$/', $start))) {
+  $start = 0;
+}
+if ((!$fstart) || (!preg_match('/^[0-9]+$/', $fstart))) {
+  $fstart = 0;
+}
+if ((!$bfstart) || (!preg_match('/^[0-9]+$/', $bfstart))) {
+  $bfstart = 0;
+}
 
-  $pageValue = 20;
-  if ( (!$start) || (!preg_match('/^[0-9]+$/', $start))) {
-      $start = 0;
-  }
-  if ( (!$fstart) || (!preg_match('/^[0-9]+$/', $fstart))) {
-      $fstart = 0;
-  }
-  if ( (!$bfstart) || (!preg_match('/^[0-9]+$/', $bfstart))) {
-      $bfstart = 0;
-  }
+$DonationList = new DonationList($debug_mode);
+$totalContributionsCount = $DonationList->getFriendsCount(TRUE, TRUE, 0);
+$contributionsList = new FriendsContributionsList($debug_mode);
+$contributionsList->selectFriendsContributionsList($start, $pageValue);
+$contributions = $contributionsList->getList();
 
-  $DonationList = new DonationList($debug_mode);
-  $totalContributionsCount = $DonationList->getFriendsCount(TRUE, TRUE, 0);
-  $contributionsList = new FriendsContributionsList($debug_mode);
-  $contributionsList->selectFriendsContributionsList($start, $pageValue);
-  $contributions = $contributionsList->getList();
+$totalFriends = $DonationList->getFriendsCount(FALSE, TRUE, 35);
+$friendsContributions = new FriendsContributionsList($debug_mode);
+$friendsContributions->selectFriendsContributionsList($fstart, $pageValue, 'WHERE FC.amount >= 35 and FC.amount <= 99.99 and F.is_anonymous = 0');
+$friends = $friendsContributions->getList();
 
-  $totalFriends = $DonationList->getFriendsCount(FALSE, TRUE, 35);
-  $friendsContributions = new FriendsContributionsList($debug_mode);
-  $friendsContributions->selectFriendsContributionsList($fstart, $pageValue, 'WHERE FC.amount >= 35 and FC.amount <= 99.99 and F.is_anonymous = 0');
-  $friends = $friendsContributions->getList();
+$totalBestFriends = $DonationList->getFriendsCount(FALSE, TRUE, 100);
+$bestFriendsContributions = new FriendsContributionsList($debug_mode);
+$bestFriendsContributions->selectFriendsContributionsList($bfstart, $pageValue, 'WHERE FC.amount >= 100  and F.is_anonymous = 0');
+$bestFriends = $bestFriendsContributions->getList();
 
-  $totalBestFriends = $DonationList->getFriendsCount(FALSE, TRUE, 100);
-  $bestFriendsContributions = new FriendsContributionsList($debug_mode);
-  $bestFriendsContributions->selectFriendsContributionsList($bfstart, $pageValue, 'WHERE FC.amount >= 100  and F.is_anonymous = 0');
-  $bestFriends = $bestFriendsContributions->getList();
+$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="assets/public/stylesheets/donorlist.min.css" media="screen" />');
 
+// Generate the web page
+ob_start();
+include ("content/en_" . $App->getScriptName());
+$html = ob_get_clean();
 
-  // Place your html content in a file called content/en_pagename.php
-  ob_start();
-  include("content/en_" . $App->getScriptName());
-  $html = ob_get_clean();
-
-  // Custom theme variables
-  $variables = array();
-  $App->setThemeVariables($variables);
-
-  # Generate the web page
-  //$App->AddExtraJSFooter('<script type="text/javascript" src="assets/public/javascript/scripts.min.js"></script>');
-  $App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="assets/public/stylesheets/donorlist.min.css" media="screen" />');
-  $App->generatePage(NULL, $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
+$Theme->setHtml($html);
+$Theme->generatePage();
diff --git a/faq.php b/faq.php
index 25bf887..1c10c7c 100644
--- a/faq.php
+++ b/faq.php
@@ -1,34 +1,43 @@
 <?php
-/*******************************************************************************
- * Copyright (c) 2014 Eclipse Foundation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://eclipse.org/legal/epl-v10.html
+/**
+ * Copyright (c) 2014, 2018 Eclipse Foundation.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
  *
  * Contributors:
- *    Christopher Guindon (Eclipse Foundation) - Initial implementation
- *******************************************************************************/
+ *   Christopher Guindon (Eclipse Foundation) - Initial implementation
+ *   Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
 require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
 require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");
 
 $App = new App();
-$Nav= new Nav();
-$Menu = new Menu();
-include($App->getProjectCommon());    # All on the same line to unclutter the user's desktop'
+$Nav = new Nav();
+$Theme = $App->getThemeClass();
 
 # Begin: page-specific settings.  Change these.
 $pageTitle = "Friends of Eclipse FAQ";
-$pageKeywords= "friends of eclipse, donation, faq";
-$pageAuthor= "Christopher Guindon";
+$Theme->setPageTitle($pageTitle);
+$Theme->setPageKeywords("friends of eclipse, donation, faq");
+$Theme->setPageAuthor("Christopher Guindon");
 
-// Place your html content in a file called content/en_pagename.php
-ob_start();
-include("content/en_" . $App->getScriptName());
-$html = ob_get_clean();
+$Theme->setNav($Nav);
+$Nav->addNavSeparator("Related Links", "");
+$Nav->addCustomNav("Friends of Eclipse", "/donate/donorlist.php#friends", "_self", 1);
+$Nav->addCustomNav("Public List of Donors", "donorlist.php", "_self", 1);
 
 # Generate the web page
 $App->AddExtraJSFooter('<script type="text/javascript" src="assets/public/javascript/scripts.min.js"></script>');
 $App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="assets/public/stylesheets/improve.min.css" media="screen" />');
-$App->generatePage(NULL, $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
\ No newline at end of file
+
+// Generate the web page
+ob_start();
+include ("content/en_" . $App->getScriptName());
+$html = ob_get_clean();
+
+$Theme->setHtml($html);
+$Theme->generatePage();
\ No newline at end of file
diff --git a/gruntfile.js b/gruntfile.js
index e67a34c..5c9616a 100644
--- a/gruntfile.js
+++ b/gruntfile.js
@@ -37,10 +37,10 @@
                 },
                 files: {
                     // compiling styles.less into styles.css
-                    "./assets/public/stylesheets/credit.min.css": "./bower_components/solstice-assets/stylesheets/eclipse_org/donate/credit.less",
-                    "./assets/public/stylesheets/donorlist.min.css": "./bower_components/solstice-assets/stylesheets/eclipse_org/donate/donorlist.less",
-                    "./assets/public/stylesheets/improve.min.css": "./bower_components/solstice-assets/stylesheets/eclipse_org/donate/improve.less",
-                    "./assets/public/stylesheets/support.min.css": "./bower_components/solstice-assets/stylesheets/eclipse_org/donate/support.less"
+                    "./assets/public/stylesheets/credit.min.css": "./bower_components/solstice-assets/stylesheets/_components/eclipse_org/donate/credit.less",
+                    "./assets/public/stylesheets/donorlist.min.css": "./bower_components/solstice-assets/stylesheets/_components/eclipse_org/donate/donorlist.less",
+                    "./assets/public/stylesheets/improve.min.css": "./bower_components/solstice-assets/stylesheets/_components/eclipse_org/donate/improve.less",
+                    "./assets/public/stylesheets/support.min.css": "./bower_components/solstice-assets/stylesheets/_components/eclipse_org/donate/support.less"
                 }
             }
         },
diff --git a/index.php b/index.php
index f38d5d5..c66fc7a 100644
--- a/index.php
+++ b/index.php
@@ -1,40 +1,41 @@
 <?php
-/*******************************************************************************
- * Copyright (c) 2014 Eclipse Foundation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://eclipse.org/legal/epl-v10.html
+/**
+ * Copyright (c) 2015, 2018 Eclipse Foundation.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
  *
  * Contributors:
- *    Christopher Guindon (Eclipse Foundation) - Initial implementation
- *******************************************************************************/
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/friends/payment.class.php");
+ *   Christopher Guindon (Eclipse Foundation) - Initial implementation
+ *   Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
+require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/friends/payment.class.php");
 
-$App 	= new App();
-$Nav	= new Nav();
-$Menu 	= new Menu();
+$App = new App();
+$Theme = $App->getThemeClass('solstice');
 $Paypal = new Paypal();
 
 $App->preventCaching();
 
-# Begin: page-specific settings.  Change these.
 $pageTitle = "Eclipse Donation";
-$pageKeywords = "friends of eclipse, donation, contribution";
-$pageAuthor = "Christopher Guindon";
-
-// Place your html content in a file called content/en_pagename.php
-ob_start();
-include("content/en_" . $App->getScriptName());
-$html = ob_get_clean();
+$Theme->setPageTitle($pageTitle);
+$Theme->setPageKeywords("friends of eclipse, donation, contribution");
+$Theme->setPageAuthor("Christopher Guindon");
 
 // Custom theme variables
 $variables = array();
 $variables['main_container_classes'] = 'container-full';
 $App->setThemeVariables($variables);
 
-# Generate the web page
-$App->generatePage(NULL, $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
+// Generate the web page
+ob_start();
+include("content/en_" . $App->getScriptName());
+$html = ob_get_clean();
+
+$Theme->setHtml($html);
+$Theme->removeAttributes('breadcrumbs', 'breadcrumbs-default-margin');
+$Theme->generatePage();
diff --git a/link-account.php b/link-account.php
index 4c9c90d..c3c1045 100644
--- a/link-account.php
+++ b/link-account.php
@@ -1,37 +1,38 @@
 <?php
-/*******************************************************************************
- * Copyright (c) 2014 Eclipse Foundation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://eclipse.org/legal/epl-v10.html
+/**
+ * Copyright (c) 2014, 2018 Eclipse Foundation.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
  *
  * Contributors:
- *    Christopher Guindon (Eclipse Foundation) - Initial implementation
- *******************************************************************************/
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/friends/payment.class.php");
+ *   Christopher Guindon (Eclipse Foundation) - Initial implementation
+ *   Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
+require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/friends/payment.class.php");
 
-$App 	= new App();
-$Nav	= new Nav();
-$Menu 	= new Menu();
+$App = new App();
+$Theme = $App->getThemeClass();
 $PaymentGateway = new PaymentGateway();
 $App->preventCaching();
 
-# Begin: page-specific settings.  Change these.
+// Begin: page-specific settings. Change these.
 $pageTitle = "Link donation with your Eclipse account";
-$pageKeywords = "friends of eclipse, donation, contribution";
-$pageAuthor = "Christopher Guindon";
+$Theme->setPageTitle($pageTitle);
+$Theme->setPageKeywords("friends of eclipse, donation, contribution");
+$Theme->setPageAuthor("Christopher Guindon");
 
 // Custom logic
 $hide_form = FALSE;
-if (!$PaymentGateway->Donation->link_donation()){
+if (!$PaymentGateway->Donation->link_donation()) {
   $PaymentGateway->set_client_message('This is not a valid transaction.', 'danger');
   $hide_form = TRUE;
 }
-else{
+else {
   $stage = $PaymentGateway->Donation->update_donation();
   if ($stage == 'updated') {
     $PaymentGateway->set_client_message('Your donation was succesfully updated. Please check your e-mail for addionnal information.', 'success');
@@ -46,15 +47,15 @@
   }
 }
 
-// Place your html content in a file called content/en_pagename.php
-ob_start();
-include("content/en_" . $App->getScriptName());
-$html = ob_get_clean();
-
 // Custom theme variables
 $variables = array();
 $variables['main_container_classes'] = 'container-full';
 $App->setThemeVariables($variables);
 
-# Generate the web page
-$App->generatePage(NULL, $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
+// Generate the web page
+ob_start();
+include ("content/en_" . $App->getScriptName());
+$html = ob_get_clean();
+
+$Theme->setHtml($html);
+$Theme->generatePage();
diff --git a/process.php b/process.php
index 4358979..f5ad8f1 100644
--- a/process.php
+++ b/process.php
@@ -1,14 +1,17 @@
 <?php
-/*******************************************************************************
- * Copyright (c) 2014, 2015 Eclipse Foundation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://eclipse.org/legal/epl-v10.html
+/**
+ * Copyright (c) 2014, 2018 Eclipse Foundation.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
  *
  * Contributors:
- *    Christopher Guindon (Eclipse Foundation) - Initial implementation
- *******************************************************************************/
+ *   Christopher Guindon (Eclipse Foundation) - Initial implementation
+ *   Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
 require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
 require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
 require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");
diff --git a/support.php b/support.php
index 9075ebb..7be5482 100644
--- a/support.php
+++ b/support.php
@@ -1,37 +1,39 @@
 <?php
-/*******************************************************************************
- * Copyright (c) 2014 Eclipse Foundation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://eclipse.org/legal/epl-v10.html
+/**
+ * Copyright (c) 2014, 2018 Eclipse Foundation.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
  *
  * Contributors:
- *    Christopher Guindon (Eclipse Foundation) - Initial implementation
- *******************************************************************************/
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/friends/donationList.class.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/friends/payment.class.php");
+ *   Christopher Guindon (Eclipse Foundation) - Initial implementation
+ *   Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
+require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/friends/donationList.class.php");
+require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/friends/payment.class.php");
 
-$App 	= new App();
-$Nav	= new Nav();
-$Menu 	= new Menu();
+$App = new App();
+$Theme = $App->getThemeClass();
 $Paypal = new Paypal();
 $DonationList = new DonationList();
 
-# Begin: page-specific settings.  Change these.
 $pageTitle = "Support Eclipse";
-$pageKeywords = "friends of eclipse, donation, contribution";
-$pageAuthor = "Christopher Guindon";
+$Theme->setPageTitle($pageTitle);
+$Theme->setPageKeywords("friends of eclipse, donation, contribution");
+$Theme->setPageAuthor("Christopher Guindon");
 
-// Place your html content in a file called content/en_pagename.php
-ob_start();
-include("content/en_" . $App->getScriptName());
-$html = ob_get_clean();
-
-# Generate the web page
+// Generate the web page
 $App->AddExtraJSFooter('<script type="text/javascript" src="assets/public/javascript/scripts.min.js"></script>');
 $App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="assets/public/stylesheets/donorlist.min.css" media="screen" />');
-$App->generatePage(NULL, $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
+
+// Generate the web page
+ob_start();
+include ("content/en_" . $App->getScriptName());
+$html = ob_get_clean();
+
+$Theme->setHtml($html);
+$Theme->generatePage();
diff --git a/web-api/bitpay.php b/web-api/bitpay.php
index 8853b25..517c80e 100644
--- a/web-api/bitpay.php
+++ b/web-api/bitpay.php
@@ -1,17 +1,20 @@
 <?php
-/*******************************************************************************
- * Copyright (c) 2015 Eclipse Foundation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+/**
+ * Copyright (c) 2015, 2018 Eclipse Foundation.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
  *
  * Contributors:
- *    Christopher Guindon (Eclipse Foundation)- initial API and implementation
- *******************************************************************************/
+ *   Christopher Guindon (Eclipse Foundation) - Initial implementation
+ *   Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
 
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/friends/payment.class.php");
+require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
+require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/friends/payment.class.php");
 
 $App = new App();
 $Bitpay = new Bitpay();
diff --git a/web-api/friends_decorator.php b/web-api/friends_decorator.php
index 97979f8..12ed752 100644
--- a/web-api/friends_decorator.php
+++ b/web-api/friends_decorator.php
@@ -1,26 +1,28 @@
 <?php
-/*******************************************************************************
- * Copyright (c) 2014 Eclipse Foundation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://eclipse.org/legal/epl-v10.html
+/**
+ * Copyright (c) 2014, 2018 Eclipse Foundation.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
  *
  * Contributors:
- *    Denis Roy (Eclipse Foundation) - Initial implementation
- *    Christopher Guindon (Eclipse Foundation)
- ******************************************************************************/
+ *   Christopher Guindon (Eclipse Foundation) - Initial implementation
+ *   Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
 
-
-/* Returns a PNG decorator for friends
+/*
+ * Returns a PNG decorator for friends
  * Without benefits, returns a 1x1 transparent PNG
  */
 
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
-require_once("/home/data/httpd/eclipse-php-classes/system/ldapconnection.class.php");
-$App   = new App();
+require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
+require_once ("/home/data/httpd/eclipse-php-classes/system/ldapconnection.class.php");
+$App = new App();
 
-# sensible defaults
+// sensible defaults
 $file_name = "../images/friend-off.png";
 
 header('Content-Type: image/png');
@@ -30,18 +32,18 @@
 
   $ldap = new LDAPConnection();
   $uid = $ldap->getUIDFromMail($id);
-  
-  if($uid != "") {
-	  $sql = "SELECT COUNT(1) AS RecordCount FROM friends where uid <> '' AND uid = " . $App->returnQuotedString($uid) . " and is_benefit = 1"; 
-	  $result = $App->eclipse_sql($sql);
-	  if($myrow = mysql_fetch_array($result)) {
-	    if ($myrow["RecordCount"] > 0) {
-	      $file_name = "../images/friend-on.png";
-	    }
-	  }
+
+  if ($uid != "") {
+    $sql = "SELECT COUNT(1) AS RecordCount FROM friends where uid <> '' AND uid = " . $App->returnQuotedString($uid) . " and is_benefit = 1";
+    $result = $App->eclipse_sql($sql);
+    if ($myrow = mysql_fetch_array($result)) {
+      if ($myrow["RecordCount"] > 0) {
+        $file_name = "../images/friend-on.png";
+      }
+    }
   }
 }
 
 header('Content-Length: ' . filesize($file_name));
 readfile($file_name);
-exit;
\ No newline at end of file
+exit();
\ No newline at end of file
diff --git a/web-api/paypal.php b/web-api/paypal.php
index 65e8026..9c41845 100644
--- a/web-api/paypal.php
+++ b/web-api/paypal.php
@@ -1,17 +1,20 @@
 <?php
-/*******************************************************************************
- * Copyright (c) 2015 Eclipse Foundation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+/**
+ * Copyright (c) 2015, 2018 Eclipse Foundation.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
  *
  * Contributors:
- *    Christopher Guindon (Eclipse Foundation)- initial API and implementation
- *******************************************************************************/
+ *   Christopher Guindon (Eclipse Foundation) - Initial implementation
+ *   Eric Poirier (Eclipse Foundation)
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
 
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/friends/payment.class.php");
+require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
+require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/friends/payment.class.php");
 
 $App = new App();
 $Paypal = new Paypal();
