diff --git a/content/en_credit.php b/content/en_credit.php
index 5404767..06e8950 100644
--- a/content/en_credit.php
+++ b/content/en_credit.php
@@ -21,76 +21,8 @@
       <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.</p>
+      <p><a href="/projects/" class="btn btn-warning" style="color:#fff;">Discover Projects</a></p>
     </div>
   </div>
 </div>
-<div class="thankyou">
-  <div class="section-title">
-    <div class="container">
-      <div class="row">
-        <div class="col-md-12">
-          <h2><strong>Thank you</strong></h2>
-        </div>
-        <div class="col-md-12 hidden-sm hidden-xs">
-          <h2><strong><sup>$</sup>100 +</strong> Best Friends of Eclipse</h2>
-        </div>
-      </div>
-    </div>
-  </div>
-  <div class="container">
-    <div class="row">
-      <div class="col-md-12">
-        <div class="row">
-          <div class="col-md-24">
-            <a href="http://www.ericsson.com/" target="_blank" title="Ericsson website">
-              <img class="pull-left img-responsive" src="images/logo/ericsson.png" alt="Ericsson" width="150">
-            </a>
-          </div>
-        </div>
-      </div> <!-- end of .col-md-12 -->
-      <div class="col-md-12 hidden-sm hidden-xs">
-        <?php print $donationlist_html;?>
-        <p class="text-center more"><a href="donorlist.php">MORE <i class="fa fa-chevron-down"></i></a></p>
-      </div> <!-- end of .col-md-12 -->
-    </div>
-  </div>
-  <div class="section-title visible-sm visible-xs">
-    <div class="container">
-      <div class="row">
-        <div class="col-sm-24">
-          <h2><strong><sup>$</sup>100 +</strong> Best Friends of Eclipse</h2>
-        </div>
-      </div>
-    </div>
-  </div>
-  <div class="container visible-sm visible-xs">
-    <div class="row">
-      <div class="col-sm-24">
-        <?php print $donationlist_html;?>
-         <p class="text-center more"><a href="donorlist.php">MORE <i class="fa fa-chevron-down"></i></a></p>
-      </div> <!-- end of .col-sm-24 -->
-    </div>
-  </div>
-</div><!-- end of .thankyou -->
 
-<div class="friends">
-  <div class="section-title">
-    <div class="container">
-      <div class="row">
-        <div class="col-md-24">
-          <h2><strong><sup>$</sup>35 +</strong> Friends of Eclipse</h2>
-        </div>
-      </div>
-    </div>
-  </div>
-  <div class="container">
-    <div class="row">
-      <?php print $donationlist_35_html;?>
-    </div>
-    <div class="row">
-      <div class="col-sm-6 col-sm-offset-8">
-        <p class="text-center more"><a href="donorlist.php#friends">MORE <i class="fa fa-chevron-down"></i></a></p>
-      </div>
-    </div>
-  </div>
-</div>
diff --git a/content/en_donorlist.php b/content/en_donorlist.php
deleted file mode 100644
index 390457b..0000000
--- a/content/en_donorlist.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-/**
- * 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) - Initial implementation
- *   Eric Poirier (Eclipse Foundation)
- *
- * SPDX-License-Identifier: EPL-2.0
- */
-?>
-<div>
-    <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>
-        <li role="presentation"><a href="#friends" aria-controls="friends" role="tab" data-toggle="tab">Friends</a></li>
-        <li role="presentation"><a href="#all" aria-controls="all" role="tab" data-toggle="tab">All</a></li>
-        <li role="presentation"><a href="/donate">Join Us</a></li>
-      </ul>
-    </div>
-    <div class="tab-content">
-      <div role="tabpanel" class="tab-pane fade in active" id="best-friends">
-        <?php
-          print $DonationList->displayPager($bfstart, $pageValue, $totalBestFriends, 'bfstart', '#best-friends');
-          print $DonationList->displayFriends($bestFriends);
-          print $DonationList->displayPager($bfstart, $pageValue, $totalBestFriends, 'bfstart', '#best-friends');
-        ?>
-      </div>
-      <div role="tabpanel" class="tab-pane fade" id="friends">
-        <?php
-          print $DonationList->displayPager($fstart, $pageValue, $totalFriends, 'fstart', '#friends');
-          print $DonationList->displayFriends($friends);
-          print $DonationList->displayPager($fstart, $pageValue, $totalFriends, 'fstart', '#friends');
-        ?>
-      </div>
-      <div role="tabpanel" class="tab-pane fade" id="all">
-        <?php
-          print $DonationList->displayPager($start, $pageValue, $totalContributionsCount, 'start', '#all');
-          print $DonationList->displayTable($contributions);
-          print $DonationList->displayPager($start, $pageValue, $totalContributionsCount, 'start', '#all');
-        ?>
-      </div>
-    </div>
-</div>
\ No newline at end of file
diff --git a/content/en_sidebar.php b/content/en_sidebar.php
index 9a3ba77..fdb4ba0 100644
--- a/content/en_sidebar.php
+++ b/content/en_sidebar.php
@@ -24,7 +24,6 @@
       <li>Lower memory consumption</li>
     </ul>
     <hr/>
-    <p><a href="/donate/credit.php"><i class="fa fa-chevron-right"></i> See who has donated</a></p>
-    <p><a href="/donate/benefits.php"><i class="fa fa-chevron-right"></i> Friends of Eclipse Benefits</a></p>
+    <p><a href="/donate/faq.php"><i class="fa fa-chevron-right"></i> Friends of Eclipse FAQ</a></p>
   </div>
 </div>
\ No newline at end of file
diff --git a/content/en_support.php b/content/en_support.php
deleted file mode 100644
index bfa2bc1..0000000
--- a/content/en_support.php
+++ /dev/null
@@ -1,194 +0,0 @@
-<?php
-/**
- * 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
- *   Eric Poirier (Eclipse Foundation)
- *
- * SPDX-License-Identifier: EPL-2.0
- */
-?>
-<div id="content">
-  <div class="row">
-    <div class="col-md-18">
-      <h1><?php print $pageTitle; ?></h1>
-      <p>Participate in our success. Together we can make Eclipse even better! Each donation supports the Eclipse community.</p>
-    </div>
-    <div class="col-md-6">
-      <img src="images/friendslogo.png" class="friends-logo-top" />
-    </div>
-    <div class="col-md-24 donation-help">
-      <small>Contact <a href="mailto:friends@eclipse.org">friends at eclipse.org</a> for help regarding donations.</small>
-    </div>
-  </div>
-  <div class="row boxes">
-    <div class="col-md-5-eclipse donation-box">
-      <div>
-        <p class="donation-amount"><sup>$</sup>5</p>
-        <h2>Acquaintance</h2>
-        <form action="<?php print $Paypal->get_gateway_process_url();?>" method="POST">
-          <input type="hidden" name="amount" value="5"/>
-          <input type="submit" class="btn btn-warning donation-button" value="Donate" />
-        </form>
-      </div>
-      <div class="background-purple">
-        <p>
-          Contributes to our ongoing success and we are grateful!
-        </p>
-      </div>
-    </div>
-    <div class="col-md-5-eclipse donation-box">
-      <div>
-        <p class="donation-amount"><sup>$</sup>10</p>
-        <h2>Supporter</h2>
-        <form action="<?php print $Paypal->get_gateway_process_url();?>" method="POST">
-          <input type="hidden" name="amount" value="10"/>
-          <input type="submit" class="btn btn-warning donation-button" value="Donate" />
-        </form>
-      </div>
-      <div class="background-purple">
-        <p>
-          Keeps the Eclipse Community vibrant and amazing!
-        </p>
-      </div>
-    </div>
-    <div class="col-md-5-eclipse donation-box">
-      <div>
-        <p class="donation-amount"><sup>$</sup>35</p>
-        <h2>Friend</h2>
-        <form action="<?php print $Paypal->get_gateway_process_url();?>" method="POST">
-          <input type="hidden" name="amount" value="35"/>
-          <input type="submit" class="btn btn-warning donation-button" value="Donate" />
-        </form>
-      </div>
-      <div class="background-purple">
-        <h5 class="you-get-label">You Get:</h5>
-        <ul class="donation-benefits">
-          <li>Eclipse Mirror Site</li>
-          <li>Friends of Eclipse Logo</li>
-          <li>40% off prints and 50% off ebooks at oreilly.com</li>
-        </ul>
-      </div>
-    </div>
-    <div class="col-md-5-eclipse donation-box">
-      <div>
-        <p class="donation-amount"><sup>$</sup>100</p>
-        <img class="tshirt-ribbon" src="images/tshirt-ribbon.png"></img>
-        <h2>Best Friend</h2>
-        <form action="<?php print $Paypal->get_gateway_process_url();?>" method="POST">
-          <input type="hidden" name="amount" value="100"/>
-          <input type="submit" class="btn btn-warning donation-button" value="Donate" />
-        </form>
-      </div>
-      <div class="background-purple">
-        <h5 class="you-get-label">You Get:</h5>
-        <ul class="donation-benefits">
-          <li>Friend Benefits</li>
-          <li>Eclipse T-Shirt</li>
-          <li>EclipseCon Discount</li>
-        </ul>
-      </div>
-    </div>
-    <div class="col-md-5-eclipse donation-box">
-      <div>
-        <p class="donation-amount"><sup>$</sup>250</p>
-        <h2>Webmaster Idol</h2>
-        <form action="<?php print $Paypal->get_gateway_process_url();?>" method="POST">
-          <input type="hidden" name="amount" value="250"/>
-          <input type="submit" class="btn btn-warning donation-button" value="Donate" />
-        </form>
-      </div>
-      <div class="background-purple">
-        <h5 class="you-get-label">You Get:</h5>
-        <ul class="donation-benefits">
-          <li>Best Friend Benefits</li>
-          <li>Eternal Gratitude of the Eclipse Webmasters</li>
-        </ul>
-      </div>
-    </div>
-  </div>
-  <div id="custom-donation" class="row">
-    <div class="col-md-24">
-      <form action="<?php print $Paypal->get_gateway_process_url();?>" method="POST" onsubmit="return validate_amount();">
-        <div class="col-md-offset-8 col-md-4 col-sm-offset-4 col-sm-8 col-xs-12">
-          <input type="text" name="amount" id="donation-amount" placeholder="Or enter amount..." value=""/>
-        </div>
-        <div class="col-md-4 col-sm-8 col-xs-12">
-          <input type="submit" id="custom-donation-button" class="btn btn-warning" value="Donate" />
-        </div>
-      </form>
-    </div>
-  </div>
-  <div class="row donation-footer">
-    <div id="friends-benefits" class="col-md-8">
-      <h2>Friend of Eclipse Benefits</h2>
-      <p>Donate between US$35 and US$99.99 and you will be identified as a Friend of Eclipse for 1 year. Benefits include:</p>
-      <ul class="friends-list fa-ul">
-        <li><i class="fa fa-li fa-chevron-circle-right orange"></i>
-          Friend of Eclipse Mirror Site - This will allow you to download new
-          versions of Eclipse faster**
-        </li>
-        <li><i class="fa fa-li fa-chevron-circle-right orange"></i>
-          "Friend of Eclipse" logo***
-        </li>
-        <li><i class="fa fa-li fa-chevron-circle-right orange"></i>
-          40% off prints and 50% off ebooks at oreilly.com
-        </li>
-      </ul>
-    </div>
-    <div id="best-friends-benefits" class="col-md-8">
-      <h2>Best Friend of Eclipse Benefits</h2>
-      <p>Donate more than US$100 and you will be identified as a Best Friend of Eclipse for 1 year. Benefits include:</p>
-      <ul class="friends-list fa-ul">
-        <li><i class="fa fa-li fa-chevron-circle-right orange"></i>
-          Friend of Eclipse Benefits (described above)
-        </li>
-        <li><i class="fa fa-li fa-chevron-circle-right orange"></i>
-          Eclipse T-Shirt
-        </li>
-        <li><i class="fa fa-li fa-chevron-circle-right orange"></i>
-          EclipseCon Friend of Eclipse discount****
-        </li>
-      </ul>
-      <a href="/donate/faq.php">More Information</a>
-    </div>
-    <div id="recent-donations" class="col-md-8">
-      <h2>Recent Donations</h2>
-      <?php print $DonationList->donorListTable(8); ?>
-      <a href="/donate/donorlist.php">Donor List</a>
-    </div>
-  </div>
-  <div class="donation-fine-print">
-    <div id="fine-print" class="col-md-24">
-      <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.
-        Contributions will not be restricted to the activities described, but
-        will be put into a general operating fund.
-        <br /><br />
-        **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 <a href="https://dev.eclipse.org/site_login/createaccount.php" target="_blank">click here</a> to launch the registration page is a new window.
-        <br /><br />
-        ***The Friends of Eclipse program is for individuals, so the logo
-        should not be used on an organization web site.
-        <br /><br />
-        ****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>
-    </div>
-  </div>
-</div>
diff --git a/credit.php b/credit.php
index 26b175a..1770a18 100644
--- a/credit.php
+++ b/credit.php
@@ -13,14 +13,12 @@
  * 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();
 $Paypal = new Paypal();
 $Theme = $App->getThemeClass();
 $testmode = $Paypal->_get_debug_mode();
-$DonationList = new DonationList();
 
 $App->preventCaching();
 
@@ -33,23 +31,11 @@
 $Theme->setPageKeywords("friends of eclipse, donation, contribution");
 $Theme->setPageAuthor("Christopher Guindon");
 
-$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();
-$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');
-
 // 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" />');
 
 // Generate the web page
diff --git a/donorlist.php b/donorlist.php
index 9e309d9..ff692f8 100644
--- a/donorlist.php
+++ b/donorlist.php
@@ -1,72 +1,15 @@
 <?php
 /**
- * Copyright (c) 2014, 2015, 2018 Eclipse Foundation.
+ * Copyright (c) 2020 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
  */
-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();
-$Theme = $App->getThemeClass();
-$PaymentGateway = new PaymentGateway();
-$debug_mode = $PaymentGateway->_get_debug_mode();
-
-$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");
-
-$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;
-}
-
-$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();
-
-$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();
-
-$Theme->setHtml($html);
-$Theme->generatePage();
+header('Location: index.php', FALSE, 302);
\ No newline at end of file
diff --git a/support.php b/support.php
index 7be5482..ff692f8 100644
--- a/support.php
+++ b/support.php
@@ -1,39 +1,15 @@
 <?php
 /**
- * Copyright (c) 2014, 2018 Eclipse Foundation.
+ * Copyright (c) 2020 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
  */
-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();
-$Theme = $App->getThemeClass();
-$Paypal = new Paypal();
-$DonationList = new DonationList();
-
-$pageTitle = "Support Eclipse";
-$Theme->setPageTitle($pageTitle);
-$Theme->setPageKeywords("friends of eclipse, donation, contribution");
-$Theme->setPageAuthor("Christopher Guindon");
-
-// 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" />');
-
-// Generate the web page
-ob_start();
-include ("content/en_" . $App->getScriptName());
-$html = ob_get_clean();
-
-$Theme->setHtml($html);
-$Theme->generatePage();
+header('Location: index.php', FALSE, 302);
\ No newline at end of file
